Lambda was AWS’s hottest product in the first two years after its launch. However, since then, containers have hogged the spotlight, leaving serverless and Lambda way behind. While Lambda is easier to get started with and to maintain, it does have some drawbacks when it comes to costs and customization for complex enterprise use cases. This being the case, what we’re seeing is AWS treading carefully by improving their serverless offerings and blending them with containers. In this post, we look at all the recent major announcements from AWS in this serverless and container space.
AWS App Runner: A new, easy way to run containers
AWS is leaving no stone unturned in its quest to make containers effortless to run. Their most recent effort is App Runner. It is a service built to run any container image you build in a source code repository, or from a container registry and run it in a serverless way. To be sure, App Runner is a separate service from Lambda. Although, AWS has also bolstered Lambda with the ability to run containers, which sounds very similar.
With App Runner, though, AWS is looking to make container management extremely easy. As easy as pointing to a target container, setting a few configurations in a form, and clicking a button. It needs zero cloud infrastructure skills. This is ideal for application developers in startups or teams building an MVP who don’t want all the bells and whistles of a full-blown application but are looking for a quick start, and the ability to autoscale with ease.
AWS Proton: Deliver cloud resources as templates
AWS Proton implements the platform model that is gaining momentum in many enterprises. It allows infrastructure teams to provide service templates that can be utilized by development teams for any new microservices they need to deploy. These services can be for various purposes, such as a web service or a data processing service. They can run on Lambda or Fargate. The infrastructure team can string together a bunch of AWS services like CodePipeline for CI/CD and monitoring tools like CloudWatch and specify which versions of the service they would like developers to run. All a developer needs to do is click a button, and the service template creates the required resources. For infrastructure teams, the benefit of monitoring which services are being used by which teams is invaluable.
The 2020 State of DevOps report shows that the platform model is gaining momentum in high-performing and mature DevOps teams. AWS Proton is a step in the right direction, enabling this approach using serverless cloud services like Lambda and Fargate. The end goal with this is to enable developer productivity while at the same time ensuring security and reliability for infrastructure teams. A bonus is that the infrastructure itself is serverless and is fully managed by AWS.
Lambda now supports functions packaged in containers
In what was seen as a clear sign that the cloud ecosystem is greatly in favor of containers over serverless, AWS announced that Lambda would now support uploading code packaged in a container image. Previously, you could only upload code to Lambda as functions. This opens up the possibility to use Lambda for a wider audience. Container users run complex stacks, and this is required for most enterprise applications. However, for many greenfield applications that are new and simpler, you may want something that is easy to run (like serverless) and is also open to deep customization (like containers). This is the audience that would want to use Lambda’s container image option. This is a small in-between audience today, but as containers and serverless converge further in the coming years, we may see more of this kind of mashup.
AWS already has something like this in the form of Fargate, where you can run containers on serverless infrastructure. Unfortunately, the AWS-verse is full of overlap, and this is just one more instance of that. However, if you’re picky about having just the right combination of cloud resources at your disposal, the more, the merrier, and containers on Lambda are a welcome addition.
Lambda lets you process S3 data on-the-fly
S3 is one of the most used services of Amazon Web Services, and AWS wants to make it as easy as possible to use Lambda with S3. Previously, you’d have to create a separate temporary storage for data from where it is processed by Lambda and the output is sent to an application. AWS has now reduced a step in this process by allowing you to process S3 data as it is being retrieved. You need not store this data, which quickens processing time, simplifies operations, and reduces costs. You can use this for use cases such as removing PII data from data before sending it to an application, or adding new enrichment layers to a dataset or converting data from one format to another.
Lambda extensions are purpose-built for running agents
Organizations use many tools for monitoring and security. These tools rely on agents that ingest data from different parts of the system. Some examples of these tools are Splunk, New Relic, and Datadog. Lambda excels at running short-lived tasks that are ephemeral. However, these tools have agents that are long-running, and Lambda wasn’t ideally well-suited for running these agents. Looking to solve this problem, AWS is creating Lambda extensions that allow organizations to easily run agents for these tools. AWS has made the extensions for these tools readily available, so they can be deployed without any fuss and be allowed to run on Lambda for the long term. AWS has also made it really easy to send data from these extensions to other AWS services like S3, Kinesis, or Elasticsearch for further processing.
CloudFront Functions for extremely lightweight edge processing
AWS blending serverless and containerization: An array of options
AWS is always busy churning out new products and services by the month. Being the leading cloud provider, AWS really defines how the industry is shaping up. What we see today is AWS masterfully blending the two worlds of serverless and containerization. The result is a dazzling array of options for every use case, from simple to complex. Today, containers have the upper hand. In a few years from now, this may well change. AWS is carefully hedging its bets not just for today but for how this battle plays out eventually.
Featured image: Pexels