This is part 1 in a 2-part series on serverless cloud computing.
Rapidly expanding connectivity options and increased development in more secure cloud infrastructures are leading organizations to research, migrate, and develop applications in the cloud. These organizations are taking advantage of a reliable, scalable, and secure managed infrastructure to form the basis of their development environments. Cloud providers, like AWS, are expanding services at a rapid rate to meet demand; serverless computing is one of these features in the AWS Well-Architected Framework.
The AWS Well-Architected Framework
The five pillars of the Well-Architected Framework, according to AWS, are operational excellence, security, reliability, performance efficiency, and cost optimization. Each pillar has associated principles and best practices to ensure AWS architecture and applications are designed and built with the optimal design.
- Security – the ability to protect information, systems, and assets while delivering business value, through risk assessments and mitigation strategies.
- Reliability – A system’s ability to recover from infrastructure or service disruptions; dynamically acquire computing resources to meet demand; and mitigate disruptions, such as misconfigurations or transient network issues.
- Performance Efficiency – the ability to use computing resources efficiently to meet system requirements, and to maintain efficiency as demand changes and technologies evolve.
- Cost Optimization – the ability to avoid or eliminate unnecessary costs or suboptimal resources.
- Operational Excellence – the ability to run and monitor systems to deliver business value and to continually improve supporting processes and procedures.
Within the Performance Efficiency pillar, AWS introduces Serverless Architecture as a key design principle. With rapidly expanding connectivity options and development in more secure cloud infrastructures, enterprises aim to take advantage of these managed infrastructures and build new development and production environments on serverless computing.
What is Serverless Computing?
Serverless computing is an application-centric architecture approach; it utilizes cloud infrastructure as the underlying technology. Serverless computing focuses on APIs and services to deliver content and applications to users. As one of the Top Trends in the Gartner Hype Cycle for Emerging Technologies released in July 2017, serverless computing has been a focal point for cloud service providers as they develop and release new services.
As part of this trend, Amazon Web Services (AWS) has developed a multitude of service offerings that support serverless architecture, including a serverless application model. AWS CodeCommit, AWS CodePipeline, and AWS CodeDeploy were developed to support the AWS cloud software development lifecycle and application development. For organizations to develop the most secure, high-performing, resilient and efficient applications, the underlying infrastructure architecture must align with the five pillars of AWS Well-Architected Framework.
Serverless Application Development
We defined serverless earlier as using cloud infrastructure, APIs, and services to deliver applications, so what services do we use and how are we leveraging the AWS Well-Architected Framework? The following example shows an example of the services and flow of a serverless application:
The user interface code is served to the user from an S3 bucket, the REST API calls the Lambda, which houses the code that retrieves the data for the Weather App from the DYNAMODB and back to the user. As simple as it seems, this is a perfectly architected, secure and reliable application using only AWS services and APIs and leveraged AWS Well-Architected Framework.
- Security – There are no front-end servers to attack, so the footprint is much smaller. The organization can use CloudFront, WAF, and Shield for defense.
- Reliability – Lambda is run on highly available infrastructure and automatically administers capacity, scaling, monitoring, and logging for the application.
- Performance Efficiency – Serverless architecture is a design principle for performance efficiency; it allows the organization to utilize multiple efficiency gains as the application is updated or services become available.
- Cost Optimization – The serverless architecture only requires that you pay for what you use, and the managed services from AWS reduce the cost of ownership for the application. Any efficiency gained in the application development will lead to lower costs.
- Operational Excellence – Serverless application developers don’t need to worry about the underlying infrastructure and can develop and deploy as they see fit. Small, frequent changes can be reversed easily because they only have to redeploy the code to Lamba if there is an issue.
AWS provides a blueprint on how organizations can develop secure, reliable, and scalable applications in the cloud while limiting costs, administration, and failures within a serverless environment.