The AWS Serverless Platform
June 10, 2019
Story
The AWS serverless platform enables vendors to deploy cloud solutions without server provisioning, deploying, maintaining and monitoring applications, databases or storage servers.
AWS serverless compute services enable the building and deployment of applications on the AWS cloud without having to manage the servers. The AWS serverless platform enables vendors to deploy cloud solutions without server provisioning, deploying, maintaining and monitoring applications, databases or storage servers. It contains features like customized configuration, easy maintenance, strong security, scalability, high availability, monitoring, etc.
What is Serverless Platform?
Serverless does not mean to execute applications without servers. It is a model followed by cloud providers, where the provider manages machines and resources on their own infrastructure, and provides services via dynamic allocation of machines and resources to build and run applications and services, which is known as “BaaS”(Business as a service) or “FaaS” (Function as a service) where code is executed in ephemeral containers. Pricing is based on resources consumed during execution of tasks.
Capabilities of the AWS Serverless Platform
Cloud Logic Layer
AWS Lambda can act as a logic layer for all containerized and microservices applications
Orchestration Management
Coordinates and manages the state of each distributed component of serverless applications using AWS Step functions
Application Lifecycle Management
Continuously delivering serverless applications using lifecycle management tools such as AWS CodePipeline
Security and Access Control
Secures an entire environment and AWS Resources with AWS IAM (Identity and Access Management) and Amazon VPC (Virtual Private Cloud)
Reliability and Performance
AWS provides highly available, scalable and secure services at a lower cost
Global Scale and Reach
AWS offers a broad set of global products; mostly all serverless services are available in multiple AWS Regions
Serverless Application Use Cases
Web Applications
Build Serverless web applications that automatically scale up and down and run in highly available configuration across multiple available AWS Regions with zero infrastructure effort required for scalability using Amazon S3, Amazon API Gateway, AWS Lambda and Amazon DynamoDB.
Real-time File Processing
After uploading the data in Amazon S3, S3 is able to trigger AWS Lambda to process the data instantaneously. AWS Lambda can be used to generate thumbnail images, transcode videos, index files, process logs, validate content, aggregate and filter data in real-time.
Real-Time Stream Processing
It is possible to process the real-time streaming data in AWS through AWS Kinesis and AWS Lambda. Streaming data sources include application activity tracking, data cleansing, log filtering, indexing, social media analysis, transaction under processing and IoT device data telemetry and metering.
Mobile Backends
Builds the backend to authenticate and process API requests through AWS Lambda and Amazon API Gateway.
Benefits
- Reduced Cost – The serverless computing pricing model is pay-as-you-go. It costs for resources one consumes and nothing when application doesn’t run. Also, AWS takes care of infrastructure maintenance and updates so developers can spend more time on software development.
- Elastic scalability — A serverless architecture in AWS has the potential to scale up and down according to application workload.
- Reduced responsibilities for developers and faster releases — Developers don’t need to worry about resource distribution, scaling, application deployment and workload intensity. AWS handles these issues for serverless architecture. Developers should only compile their code, zip it, and upload it to the new serverless platform to deploy new functions.
- Multi-language support — AWS serverless platforms support multiple programming languages like Node, Java, Python, C#, Ruby, Go etc., so developers can choose the most convenient option for themselves.
- Built-in logging and monitoring mechanisms — AWS has developed its own solutions for user logging and monitoring. In addition, it also offers automated security assessment that improves compliance of application deployed on AWS.
Challenges
- Cold start — The key benefit of serverless computing is dynamic allocation of resources, due to which vendors don’t need to pay for idle time. However, sometimes this may result in invocation latency.
- Resource limits — Serverless computing imposes limits on resources memory, execution time, bandwidth, and CPU usage, e.g. the maximum execution time per request is 900 seconds (or 15 minutes) for AWS Lambda.
- Inadequate application testing — Serverless infrastructure enables testing on small functions of an application independently but it may be challenging to test the infrastructure and the combination of all functions.
- Increased security concerns — There are limited options for identifying problems and bottlenecks if any malicious code or attack occurs on lambda functions. Developers also have no full access over the AWS servers.
- Access to the file system level — A serverless architecture isn’t the best choice for software that requires access to the file system or operating system level. These types of applications need to do things such as read attributes from configuration files or split in-memory cache to disk, but serverless functions don’t allow this. Serverless functions are stateless, so whenever applications require state, serverless functions are not a good fit.
Serverless services make applications easier to scale and faster to develop without managing typical server-based infrastructure. Developers can focus more on core products instead of operating servers. As a result of which, more and more organizations are preferring serverless platforms.
Aarti Parikh is an AWS Certified Solution Architect, AWS Certified developer, and AWS Business & Technical Professional. She is associated with Volansys Technologies as a Cloud Engineer. She has a lot of experience in serverless systems, designing, developing and maintaining cloud infrastructure for public clouds and architecting cloud solutions for enterprise applications.