Agile methods are long blamed for their short-sightedness. What good is to develop the software products fast, if the end user cannot get them at the same pace? Serverless Architectures, when done right, may offer the right solution.
What is Serverless Architecture?
When I first heard this term, I was puzzled. It appeared that the term suggests to go decades back and write an “all-in-one” piece of software (think Java Swing). But I was wrong.
Serverless Architecture refers to software systems in which the server runs securely, with little or no maintenance and able to scale with ease. In short, business logic is built and delegated to a secure component for further management.
You can get an overview of SA (Serverless Architecture) in this excellent article by Martin Fowler.
Amazon is betting big with AWS Lambda. It is one of the real world implementations of SA. Though far from perfect, AWS Lambda is a dream come true for simple applications that start small and scale with their business.
I recommend you to read this whitepaper from Amazon that talks in detail about Serverless Multi-tier architecture with a focus on AWS Lambda (link here). Together with Amazon API Gateway, a service to offer secure API for consumption, AWS Lambda has the potential to revolutionise the game. Also, focus on the VPC (Virtual Private Cloud) and Data layers to visualise the complete solution.
As of this writing, AWS Lambda supports code written – Node.js, Python and Java 8.
Here is an example architecture where the business layer sits securely behind a VPC. All the interactions happen through Secure API. The presentation layer is kept purposefully light and fast, thanks to CloudFront (Amazon’s Content Delivery Solution).
Agility and Serverless Architecture. What’s the link?
Why am I talking about SA in an Agile blog, you may ask. As mentioned earlier, SA has the potential to bring the agile experience to customers which is not often the case.
Here are some benefits of using SA together with Agile Methods.
Benefit 1 : More focus on Application, less focus on server maintenance
Though maintenance is essential, it doesn’t offer direct business value. The development team often spend an enormous amount of time in maintaining production applications.
SA doesn’t eliminate maintenance but shifts the main responsibility to the system that manages the server. Health checks, log monitoring, automated recovery and more can keep the development team focus on what they do the best – Application Development.
Benefit 2 : Seamless Scaling
Is the application performing slow due to sudden surges in production traffic? Worry not. SA makes it easy and transparent to play around with server capacity that matches your business need.
Most often, such scaling doesn’t require a change in the application logic which makes it an attractive proposition.
Benefit 3 : Deployments made simple
With SA, deployments are as simple as packaging the components right and dropping them on the server. Though I may be “super” simplifying, this is the essence of the solution.
Versioning is built into the system, so fallbacks are simple too. Another major responsibility, off the development team’s shoulders.
Benefit 4 : Fail fast ready
Fail fast is an agile principle to build the critical features of a product, usually at the lowest cost possible. It is often done to explore viability and customer acceptance.
SA makes it very easy to build them. Coupled with other AWS Services like S3 (Simple Storage Service), RDS (Relational Data Service) – it is simple to get started and quickly build what matters the most.
Serverless Architecture is still in its infancy. The concept is exciting but the viability of “true” enterprise applications to adopt remains unclear. AWS Lambda is one such offering to make this concept a reality.
SA greatly support the agile principles and help customers realise the true benefits of being agile. Some noteworthy benefits are:
- Enabling developers to focus more on application development and less on maintenance
- Scaling up and down is relatively simple
- Deployments and fallbacks are easier
- Offers a “fail fast” ready environment