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.
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.
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.
This is Huge! https://t.co/wmHJkdM5Hi
— William El Kaim (@welkaim) January 18, 2016
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.