TNS
VOXPOP
You’re most productive when…
A recent TNS post discussed the factors that make developers productive. You code best when:
The work is interesting to me.
0%
I get lots of uninterrupted work time.
0%
I am well-supported by a good toolset.
0%
I understand the entire code base.
0%
All of the above.
0%
I am equally productive all the time.
0%
Cloud Services / Serverless / Software Development

Apex Makes AWS Lambda Easy Peasy for Programmers

Jan 19th, 2016 9:02am by
Featued image for: Apex Makes AWS Lambda Easy Peasy for Programmers

AWS designed to Lambda service to be easy to use, with no state nor servers to worry about, just pure real-time power when you need it. As early users have found, it can take some work to get the arguably under-documented Lambda to work in any meaningful scale.

Apex, a small Go program, aims to fix this and make life easier for the ambitious soul who just wants to easily use Lambda to build something.

“I started Apex because I’ve been working on a number of product ideas as a solo engineer, I can’t afford to spend time managing and maintaining machines if I’m going to have a successful product as a single person team,” wrote TJ Holowaychuk, in a blog post announcing Apex to the world.

AWS Lambda was devised to run user-generated functions in the cloud, without the need for the user to worry about any of the supporting stack running said functions. It is a stateless computer service, meaning it runs a user-defined function that collects data from an outside service, works on the data in some way, and delivers the output to some other service. You provide a ZIP file with your function—written in either JavaScript, Python, and Java—and it returns the results. No servers required.

Using Lambda comes with its own overhead though: It is very friendly to those who use other components of the AWS infrastructure, but you still need to set up containers on ECS (Elastic Container Service) and deal with the API Gateway.

Holowaychuk’s Apex (not to be confused with the Apache Apex project) provides project level function and resource management for running Lambda jobs. Using a JSON-based configuration file, the software, written in Go, allows you to set project level defaults and global attributes. Apex supports concurrent “single-run” idempotent deployments, and multi-function deployments.

Deploying three Node applications on AWS Lambda, using Apex.

Deploying three Node applications on AWS Lambda, using Apex.

 

With Apex, you can invoke a Lambda function by way of a JSON-formatted command. You can also reconfigure and delete functions. Apex supports dry runs of any command manipulating AWS resources.

Apex currently supports functions written in Node.js, Python, and Golang. A shim is added to any language not directly supported by Lambda. Events are fed into the function by way of stdin and responses come from stdout.

Apex is one of a number of programs that aim to streamline the process of using Lambda. The Node.js-based Serverless.com provides a framework for building lambda-based applications. Dexter provides a graphical interface for users to easily assemble programs and link different APIs. Kappa is a command line tool for deploying, updating, and testing functions for AWS Lambda.

 

For Holowaychuk, Lambda, and other stateless services represents a new way of doing computing, one with minimal baggage. “At the end of the day, no one really cares about machines, containers, we just care about logic and results,” Holowaychuk wrote.

Group Created with Sketch.
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.