As you read this post — possibly on your smartphone — it’s easy to forget how many modern technologies we take for granted.
When you think about it, just how many revolutionary inventions we’ve seen throughout every age of human history, it can be difficult to comprehend. These inventions often came in forms that we didn’t even know we wanted. As Henry Ford famously said: “If I had asked people what they wanted, they would have said faster horses.”
What does all this have to do with serverless computing? Well, it allows us to perform repetitive, day-to-day duties more efficiently. It frees us from some of the time consuming heavy lifting that comes with managing infrastructure so we can put our limited cognitive energy to better use.
Serverless came about in a form that many of us didn’t even know we wanted or needed. If Amazon Web Services (AWS) had asked the people what they wanted, they would have said something like “better abstraction for servers.”
But you might not be totally convinced just yet. Here’s why you shouldn’t just care about serverless as a developer, manager, or business stakeholder, but why you should make it a priority.
Why is serverless better for developers?
As a developer, it took me many years to realize that my job is not to write code; my job is to help businesses realize their ambitions. In most cases, that means building a product that is both financially successful and has a positive impact on its users. The desired outcome is never the code itself, even if that code is elegant and well-crafted. It’s a means to an end, not an end in itself.
To deliver a product idea to the market, there’s a lot I have to do beyond implementing the feature itself. These include configuring machine images or configuring auto-scaling for my cluster of servers.
With AWS Lambda, most of these become irrelevant or are drastically simplified. This lets me focus on the more important aspects of the project, like implementing product features and thinking about architectural tradeoffs. That’s a far more productive use of a developer’s time and energy, and it frees up the time you’d typically spend on mundane (but important) tasks involved in managing the infrastructure.
Lambda offers great scalability right out of the box, automatically scaling to match demand throughout. Because we can tap into a huge pool of resources managed by AWS, our applications can scale up a lot faster too. When they’re not being used, they’ll scale all the way down to zero, meaning we don’t have to pay for idle servers either. This makes Lambda a cost-effective solution for most systems.
With Lambda, you also get blue-green deployment out of the box. As you deploy an update to your function, AWS manages it and routes all requests to the new version. Functions are also deployed to three availability zones (AZs) by default, providing you with a good baseline resilience against AZ-wide failures. From here, it’s trivial to build a multi-region, active-active system.
Why should managers care about serverless?
As a manager, you care about the wellbeing of your team and its ability to deliver on the demands of the business. In my experience, teams that embrace serverless deliver faster and experience less stress.
As discussed earlier, AWS Lambda makes it easier for developers to build production-ready systems. It empowers you to leverage an impressive number of capabilities from the platform, such as built-in autoscaling and multi-AZ resilience. This directly translates to greater productivity and faster delivery times.
Building and managing an infrastructure that can provide the same level of scalability and resilience is difficult and requires engineering time that teams often can’t afford. This kind of infrastructure demands skills that most teams don’t have on hand, but it’s critical to the success of your product, and that can make it a huge source of stress. Teams often have to:
- Divert attention from the core business problem to take on these extra infrastructure responsibilities. This adds to the pressure to meet deadlines and can mean cutting corners elsewhere and taking on technical debt that could hinder future development.
- Or they’ll have to depend on an often centralized DevOps team to provide support. This kind of inter-team dependency is a constant pain point that can lead to any kind of dysfunction across the organization. Delays often arise, adding pressure to the overall experience.
Teams that embrace serverless find themselves with far fewer infrastructure responsibilities. Most are capable of dealing with the remainder without relying on a specialist DevOps or infrastructure team. That means the team can enjoy more ownership and autonomy of the whole system; serverless gives them the leverage they need to do more with less.
As a business stakeholder, I care about things like time-to-market and maximizing return on investment (ROI) for the business.
We’ve already talked about how serverless technologies allow teams to be more productive; that boost is directly reflected in reduced time-to-market. Serverless gives businesses a superhighway to take its ideas to the market.
For most tech-focused businesses, the heftiest cost is going to come in the form of hiring developers. Highly skilled developers are difficult to find and expensive to recruit and keep and to help them deliver their best work, they also need an extensive support structure around them. That includes anything from office space and physical resources to good managers and a strong team to support them.
To get the best possible ROI, businesses need to give developers the kind of leverage they need to do more with less. And that’s the true cost saving that comes from serverless.
To understand a business’s ROI, you need to understand its operational costs first. Organizations working with a transactional business model need to understand their cost per transaction. This is very difficult to estimate if you’re paying for uptime for servers, because:
- Server utilization strongly influences the cost per transaction. It is also out of your control.
- A single server would often run multiple services and support different features. There is no reliable way to attribute the cost of the server towards all the different features that use it.
With serverless, the cost for every layer of the stack is predictable and pay-per-use. I can therefore accurately predict the cost for every transaction.
Vendors in the serverless space, such as Lumigo, let you monitor both the performance and cost of your transactions.
Performance optimizations are not just engineering decisions. They can have a significant and measurable impact on the business’s ROI. Given how expensive developers are, their time is a costly resource. Any performance optimizations would, therefore, need to generate more cost savings than it’d cost to develop. Having the visibility of the transaction costs allows you to make an informed decision on where and when to optimize.
Everyone should care about serverless!
As a developer, serverless technologies help me build systems that are scalable and resilient. They allow me to focus on the things that are important to my users and business stakeholders.
As a manager, serverless technologies help my teams respond to business needs faster and more efficiently. They allow the team to have more ownership of the system, including its architecture and infrastructure, which reduces inter-team dependencies and increases autonomy. Together, these factors make happier and more productive teams.
As a business stakeholder, serverless technologies make it possible for me to understand the cost of each transaction. This allows me to make informed decisions on pricing, and when and where I should optimize my application to maximize ROI. Serverless also helps me maximize the return from my most expensive resource: my developers.
I hope I have piqued your interest in serverless and that you are eager to learn more!