Amazon introduced an event driven compute service, Lambda in Nov 2014, simplifying how applications are built and run. Lambda forces developers to be more modular by writing small, elegant functions instead of monolithic applications. Think micro-microservices.
But before using it as the computing platform for future applications, there is the following set of issues which prevent broader adoption across a wider variety of use cases.
- Expensive - Coarse pricing model in units of 100ms. For example requests that take 5ms to process are billed as one single transaction not utilizing the other 95ms. Fix this by billing for actual time utilized or if billing in 100ms increments, allow 20 such transactions to be processed in a unit of processing time.
- Statelessness - There is no guarantee of state between invocations. This is a good model for building applications, this is not for functions. Application contexts and database connection pools have to be reinitialized multiple times, which is inefficient.
- Primitive support for development, debugging and logging.
- Inability to access resources behind VPC’s. This limits how Lambda interacts with other services and systems.
Lambda is the first step in towards moving to a fully elastic everything where where compute, memory, storage and network will be independently scalable and costs are tied to actual usage. Currently these are tightly coupled affecting flexibility needed to run modern applications. GP2 EBS volumes coupled with IOPS, simple but inflexible and uneconomical. In mature applications, the data size has grown needing larger volumes but usage has stabilized reducing the IOPS needed to handle current levels of usage. Migration to magnetic or S3 is not automatic and disruptive. As another example, in Lambda couples memory with compute, network and storage bandwidth; it is not possible to tune these resources to an actual use case.
These problems will be addressed as Lambda continues to evolve; tools will get better and pricing models will become flexible. For organizations that have not fully embraced the cloud yet, Lambda offers an opportunity bypass AWS infrastructural services around instances and containers by starting directly with event driven computing. This is analogous to developing countries bypassing landlines in favor of mobile.