Ever since Amazon Web Services launched AWS Lambda in 2014 as a Serverless platform, it has been steadily gaining traction among developers. AWS Lambda allowed developers to deploy small chunks of code and scale seamlessly at a very low cost. Developers could do this without having to manage the underlying servers. This productivity advantage offered by the service coupled with the increased adoption of application architectures made of loosely coupled smaller components, increased the interest in AWS Lambda leading to its success in the early days. In this blog post, we will discuss the pros and cons of using AWS Lambda.
The AWS Lambda advantage
- The cost per invocation is very low at a fraction of a penny. For simpler application architectures, the cost savings associated with deploying these applications on AWS Lambda is high. For example, if you want to process a photo, it can be stored in S3 buckets and processed using AWS Lambda for a fraction of a penny. A developer could roll out a photo processing service for pennies without having to own even a server. The fact that the user is charged only when the AWS Lambda function is invoked makes the pricing model more attractive for the developers. This cost advantage is one of the reasons for early success of AWS. Recently, Catalyst was launched with a much simpler pricing model to compete against AWS Lambda
- AWS Lambda (Functions as a Service in general) removes the operational complexity associated with setting up and managing virtual machines or containers for deploying applications. This lack of operational overhead and the fact that it is available through a self service interface provides agility. Taking an idea to production could be as simple as invoking serverless functions concurrently using FaaS platforms
- AWS Lambda can help standardize the environment across dev, test and production, helping developers catch and fix any bugs in their code more efficiently. The variation in environments across the DevOps pipeline was one of the biggest source for friction and slowdown in application delivery. Using AWS Lambda across these environments removes this source of friction
- AWS Lambda is well integrated with other AWS cloud services. This allows developers to easily invoke the functions using these services or the functions to take advantage of data in these services. If you are a AWS customer who is all in with AWS cloud services, Lambda is the right serverless abstraction
- Compared to some of the newer FaaS offerings, AWS Lambda imposes more constraints on developers. Their support for programming languages is limited compared to some of their competitors. Some FaaS providers allow support for Docker containers, giving more flexibility for developers in using various programming languages or application dependencies
- Even though AWS Lambda abstract away the operational overhead, it adds DevOps overhead on the developers. Putting together a complex stateful applications requires the developers to put together various AWS services for data storage, networking, etc.. Even for simpler applications, the developers should be able to put together services like API Gateway, Load balancers, etc.. The need for additional DevOps knowledge could be problematic if an organization doesn’t have such talent. Many modern FaaS platforms are integrated with some of these services like backend, data store, etc., making it easy for developers to deploy applications without any DevOps overhead
- While the abstraction provided by AWS Lambda removes the complexity at the infrastructure level, a somewhat complex application will make complex calls across various functions that are invoked using AWS Lambda. This not only increases design costs but could also increase the cloud costs depending on the use of storage and network bandwidth
AWS has the first mover advantage in the serverless landscape. However, there are some challenges associated with some of the constraints imposed by AWS Lambda platform. The key to picking the right platform lines in understanding the pros and cons on an offering and picking one based on your application needs. In the future posts, we will discuss the Pros and Cons of other major FaaS offerings in the market.