Cloud optimization is complex and has lots of moving parts. AWS made the concept more concrete by building out the AWS Well-Architected Framework: five core pillars geared toward helping cloud architects build the most secure, high-performing, resilient and efficient infrastructure possible for their applications. Serverless technology, particularly AWS Lambda, can help customers meet their goals with each of these pillars. Today, we will specifically discuss how serverless applications help customers meet their cost optimization and performance efficiency goals.
But first things first…what is serverless?
I’ve always been bothered by the term ‘serverless,’ as clearly servers are still required to power ‘serverless’ applications. The key differentiator is that serverless systems remove the burden of server management.
It can be helpful to think about serverless by contrasting it with “server-full” applications.
“Server-full” applications can be seen as the traditional way of building applications: You create servers, you provision them using infrastructure as code, and you can scale up and down using auto-scaling. “Server-full” applications also require managing all of the servers: they run an operating system, they have software you have to worry about, and there’s constant updates and resource management involved. It’s real and time consuming work. Amazon Web Services gives you amazing tools to handle these tasks in a fairly automated way, but it doesn’t change the fact that there are still servers for you to manage.
In contrast, when we talk about serverless, we are talking about less management of servers, not less servers. Ironically, there’s probably a lot more servers, you just don’t have to care about them anymore. Now that we’ve discussed what serverless means, let’s review some of the benefits, particularly as they relate to cost optimization and increased performance efficiency.
With a lot of Amazon services, you pay on a per instance or per hour basis - and often that billing is down to the second. What that means is as you have a virtual machine running, you’re actually paying for running that server. You don’t necessarily have to manage it constantly, but you’re still paying for that service to be there.
That gives you a very low granularity to billing. You’re being billed for how long the server is running, but you don’t have any insight into how much your application is actually using the server. Additionally, an application deployed with a traditional server-full approach can bundle large cross-sections of the application functionality and feature set in such a way that it’s really difficult to drill down into your application code to understand your costs at a feature level.
Serverless thinks about things differently. It decomposes your application down into functions, and billing is more continuous and precise because it is based on the actual execution of functions. Utilizing serverless applications gives you insight into how long a certain function was called for, and how many times it was run, making it easier to implement an effective and customized cost optimization roadmap that works best for your team. Developers frequently express frustration over the difficulty of convincing their leadership to invest in refactoring. With serverless architectures, developers can provide clear financial data that justifies investing in refactoring. This is a game changer for developers.
Now that we’ve discussed some of the cost optimization possibilities for serverless applications in general, let’s review a specific AWS serverless computing platform: AWS Lambda.
AWS Lambda, one of many serverless services, is an event-driven, serverless computing platform that supports a variety of programming languages and environments. Lambdas can be triggered by a long list of events, and a function gets called to respond to something happening. For example, if an object is uploaded to a bucket in S3, that could trigger a Lambda function.
Lambdas boost performance efficiency by enabling automation. Image resizing is a classic example. Let’s say you’re building a photo sharing site. Someone uploads a photo, and you can store the photo in a bucket in S3. The object landing in a bucket can then automatically trigger a Lambda function that says: “A new image has been added to this bucket.” You can fetch that, do a resize to generate a bunch of different sizes of an image, maybe add a watermark, and then store it in a new bucket. And boom, there you go, the entire thing is automatic.
Additionally, the Serverless Framework, is an incredible open-source toolkit for building, deploying, and managing serverless applications on all major cloud vendors.
Serverless computing platforms like Lambda make it clear that some of the best ways to cut costs and boost performance efficiency for your applications is by implementing automation as well as a function-focused rather than server-focused approach. Talk to the team at Mission to see if a serverless approach is right for your organization.