AWS Serverless Platform
AWS serverless compute services allow to build and deploy applications on AWS cloud without having to manage the servers. 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 application without servers. It is a model followed by cloud providers, where provider manages machine 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 task.
Capabilities of the AWS Serverless Platform
Cloud Logic Layer
AWS Lambda can act as logic layer for all containerized and microservices applications
Coordinate and manage the state of each distributed component of serverless application using AWS Step functions
Application Lifecycle Management
Continuously deliver your serverless applications using lifecycle management tools such as AWS CodePipeline
Security and Access Control
Secure 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 lower cost
Global Scale and Reach
AWS offers a broad set of global products. Mostly all serverless services are available in multiple AWS Regions
Fig 1 – AWS Serverless Services
Serverless Application Use Cases
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 could be application activity tracking, data cleansing, log filtering, indexing, social media analysis, transaction under processing and IoT device data telemetry and metering.
Build backend to authenticate and process API requests through AWS Lambda and Amazon API Gateway.
- Reduced Cost – Serverless computing pricing model is pay-as-you-go. It costs for resources one consumes and nothing when application doesn’t run. Also, AWS take 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.
- Cold start — Key benefit of serverless computing is dynamic allocation of resources, due to which vendors don’t need pay for idle time. However, sometimes this may results 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 to test 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.
By Aarti Parikh