Today serverless architecture is enjoying a well-deserved designation as one of the hottest current trends in technology. It is an instrumental and increasingly essential element in today’s IT environment. To be certain, serverless has proven to lower operational costs, deploy services faster and dramatically increase companies’ responsiveness to customer demand.
Companies typically execute functions with an “always-on” system, such as core ecommerce or enterprise resource planning. Alternatively, companies employ systems perhaps only a few times an hour, at certain times of the day, or to respond to a specific event. For example, a utility company’s call center applications will see surges at the end of the month during a billing period or during an outage.
Most companies manage both systems in identical ways. That is, they dedicate lots of resources -- people, time and money -- to keep the systems running 24/7. But why expend so many resources on maintaining 100% uptime on systems that are only used occasionally?
When an application isn’t being used there’s no computing power behind it. On the other hand, when someone makes a request of the application, the underlying infrastructure automatically mobilizes all the technology components to process the application’s business logic and respond to the request.
For businesses, cost is perhaps the most compelling benefit serverless offers. When you eliminate always-on systems, you do away with the complexity and constraints of supporting and maintaining those systems. A serverless architecture puts your application in the cloud until someone uses it. Since you pay only for what you use, your infrastructure costs can decrease significantly, as much as 90%.
Scalability is another huge benefit in the serverless world. Scaling in traditional architecture is very expensive, requiring a lot of hands and resources to build an infrastructure remotely close to the auto-scaling required to meet demand. It also often requires considerable manual intervention, not a good thing during a surge.
Time is the third leg of the benefit stool when it comes to a serverless architecture. Putting together tailored serverless applications can take three to four weeks while it typically takes a team working with a traditional system three months. Why? With serverless, you’re working with a set of established infrastructure and runtime components. The only ingredient you’re adding is business logic. There’s no concern over setting up servers, configuring environments, clustering, or any of the other elements associated with building a traditional system.
Essentially, there are six important considerations to undertake before going serverless.
1. Reusing existing application code in a serverless environment is a big mistake, and defeats the purpose. You’ll end up having much more code (and baggage) than you need. A serverless architecture mobilizes on demand. The more code it has to process, the slower its response will be. Creating entirely new, and minimal, code that’s purpose-built for serverless will serve you well.
2. Use existing platform components for non-business logic application functionality. A serverless architecture has all the execution components you need, so don’t build unnecessary components. And the platform component should always be your first choice for anything that isn’t associated with business logic.
3. Facilitate application development by devising a reference architecture. A blueprint outlining what you want your systems to look like ensures consistency across all your applications. Even if you move people around to different projects, they’ll still understand the components. A blueprint also minimizes support issues inherent in rogue code.
4. Before you begin development, make sure your application supports a systems development lifecycle process. A fluid and dynamic DevOps environment -- not to mention a strong architecture -- helps companies produce quickly. Further, this approach facilitates ongoing development and innovation. A carefully crafted DevOps strategy also accelerates the ongoing lifecycle and saves costs.
5. Success in serverless requires new and different skills. Developers who have a thorough understanding of platforms and how all the components connect are the ideal in a serverless environment (as opposed to single technology specialists who lack breadth). Good developers can write lean code and create appropriate databases and components from scratch. Moving to a serverless environment may require retraining some talent or bringing on new people.
6. Prepare for a profound shift in culture. Arguably the most important factor in serverless success has little to do with technology. The common challenge many companies face when trying to adopt any new IT structure is organizational and cultural restructuring.
Most companies’ IT estate comprises a massive horizontal bureaucracy, which conflicts deeply with the cornerstone of serverless, namely, radically simple applications. Huge, siloed teams, each working on a specific aspect of development, are the antithesis of serverless (and are redundant) because the platform already offers what those teams provide. Ideally, in a serverless environment, small, nimble, vertically-focused teams concentrate on writing the logic for a purpose-built application to serve a specific business function.
Looking at the cultural shift required through a military lens, rather than a large infantry division handling all the work, you’ll need special forces. That is, strive to have fewer but more highly-trained people executing the work.
Obviously, a serverless architecture offers considerable potential for companies to scale, achieve great speed and save costs. By taking a flexible approach and carefully scrutinizing case studies from other organizations, companies can seize the promise of serverless and begin achieving real results, and reap all the joys it offers their business.
Matthew Lancaster is a Master Technology Architect who leads Accenture’s Lightweight Architecture practice, and is lead architect and developer for Software Innovation. He leads Accenture’s go to market capability in the areas of reactive, event-driven, microservices, and serverless architectures, in between serving as lead architect on transformational Digital projects. Matt is deeply hands on, and prides himself on "leading from the trenches." Prior to Accenture, Matt was CTO at successful software startups. He’s also spent time as university faculty, and is an active contributor on open source projects ranging from Web front end to network switch firmware.