Nabugu - stock.adobe.com
Serverless computing has gone through significant growth in terms of adoption, features and capabilities since its inception. The core concept of serverless computing is to use compute capacity for software applications without the need to manage the underlying infrastructure.
Serverless delivers a flexible strategy for application developers to launch new functionality in areas like the following:
- API front ends.
- Application back-end components.
- Database management.
- Data processing and analytics.
- Built-in integrations with multiple cloud services.
From a developer perspective, serverless simplifies the initial development and testing of application functionality because it's not necessary to launch complex server-based infrastructure that runs multiple software components. Instead, serverless delivers an abstraction layer that is easy to launch, deploy and test in development environments.
However, the fact that serverless delivers ready-to-use compute capacity doesn't mean application owners don't have to focus on operational tasks, such as launch and deployment automation, capacity allocation and detailed monitoring, among others. It's a common misconception to assume that serverless simplifies operational tasks in production systems. This misconception often results in unforeseen challenges when launching live customer-facing applications.
While serverless simplifies the availability of compute capacity, it brings with it several areas that need to be configured and monitored in a detailed manner, just like any other cloud-based strategy.
Compare serverless computing services
AWS Lambda is likely the best-known example of serverless computing, but the major cloud providers offer a variety of products. These products cover API endpoints, databases, front-end and back-end computing, workflow management, data processing and data analytics, among others.
As of now, AWS offers the widest range of services, including the following:
- AWS Lambda functions.
- Amazon API Gateway.
- Amazon Simple Notification Service.
- Amazon Simple Queue Service.
- Amazon Kinesis.
- Amazon EventBridge.
- AWS Fargate.
- Amazon Athena.
- Amazon EMR Serverless.
- Amazon Aurora Serverless.
- Amazon OpenSearch Serverless.
- Amazon DynamoDB.
Azure services include the following:
- Azure Functions.
- Azure Kubernetes Service for serverless Kubernetes.
- Azure Container Apps for serverless containerized microservices.
- Azure SQL Database serverless.
Google Cloud services include the following:
- Cloud Functions.
- Cloud Run.
- Google App Engine.
- Service integration products.
Although all cloud providers offer useful serverless compute services, customers should consider the number of existing components each cloud provider already deploys, in addition to the features an application requires. Maintaining a hybrid cloud implementation can be challenging, so it's preferable to use serverless options offered by the cloud platform where the rest of the architecture is implemented. When considering an implementation from scratch, AWS is likely the recommended option given its wide range of services.
Use IaC and automated CI/CD pipelines
Launching an application that relies on serverless technology often results in a large number of cloud components that need to be managed compared with a server-based deployment. These components include serverless functions, API front ends and messaging components, among others.
In a server-based environment, application functionality might result in the launch of a single infrastructure component. With serverless, however, that can translate into launching a larger number of serverless components and maintaining their code. This number can sometimes be dozens or even hundreds of components, such as Lambda functions.
Therefore, it's essential to use infrastructure as code (IaC) and automation tools to launch and maintain these components. Examples of IaC tools are the following:
- AWS CloudFormation.
- AWS Serverless Application Model.
- Azure Resource Manager.
- Google Cloud Deployment Manager.
- Serverless Framework.
It's also necessary to use automated CI/CD pipelines for code deployments. This is required because of the potentially high number of components that need to be updated when new code is released, compared with a server-based strategy.
It's a common practice to evaluate these tools by manually launching them in development environments. But users should also implement automation for test and production environments. Implementing automation is a best practice applicable to all types of cloud deployments, but it's even more relevant in serverless environments.
It's also important to evaluate serverless costs from an early stage. Cloud platforms charge for the following factors:
- Compute capacity allocated to each serverless component, such as CPU and memory.
- The number of executions for each process.
- Data processing, where applicable.
- The duration of each execution.
These variables often result in higher pricing compared to server-based counterparts capable of handling the same processing capacity, depending on usage patterns.
While serverless provides a cost-effective compute strategy for many applications, its cost advantages diminish once volume reaches a point where constant compute executions are required. Typically, serverless applications with a constant high demand of high-compute executions result in higher pricing compared to their server-based counterparts.
That said, applications with steep usage fluctuations can benefit from the dynamic allocation of compute resources that serverless options deliver. A key advantage of serverless is the ability to avoid the need to constantly provision servers with high-compute capacity.
Because pricing scenarios are specific to application needs, no ubiquitous answer exists when comparing pricing of serverless and server-based options. It's essential that application owners calculate pricing scenarios early in the design and implementation process.
Understand application use cases
Given all the intricacies of serverless computing, it's recommended that development and operations team members have a solid understanding of the applicable use cases for this technology, as well as its pros and cons.
Serverless implementations don't require significant training to get started. But it's essential for organizations to ensure team knowledge in advanced serverless features, deployment automation, pricing, and serverless advantages and limitations before launching production-ready serverless applications.
Ernesto Marquez is owner and project director at Concurrency Labs, where he helps startups launch and grow their applications on AWS. He particularly enjoys building serverless architectures, automating everything and helping customers cut their AWS costs.