Now that we’ve discussed the serverless architecture and its use cases are clearer in the first part of our Serverless series, here’s a summary of some of its key benefits and challenges. Later on, we’ll discuss the tooling that has emerged to facilitate the development, deployment, troubleshooting, and security of serverless apps.
On the benefit side, serverless is the next step in the push to abstracting application design and development from infrastructure issues. Serverless frees up developers from worrying about provisioning, scaling, and balancing infrastructure resources, and lets them focus on enhanced products and business outcomes. It also guarantees frictionless scaling and agility, as well as high availability.
Serverless also has the potential to reduce both development and operational costs. In an interview with CIO magazine, Nick Rockwell, CTO of the New York Times, noted that serverless’ elimination of idle cloud instances can yield from 5x to 10x in efficiency gains. And on the public cloud, efficiency gains immediately translate into optimized costs.
Last but not least, serverless architecture is particularly well suited to the data and batch processing needs of the mobile apps and IoT/edge deployments that already play central roles in many business-critical systems.
Perhaps the most commonly cited challenge of serverless architecture is the control that the application owner transfers to the Function as a Service providers and third-party SaaS vendors. This relinquishing of control makes it harder to troubleshoot performance issues that may arise. It can also make it difficult to accurately forecast costs; and, in general, can lead to the vendor lock-in that makes companies vulnerable to provider downtime, known or future limits, cost changes, and so on.
Other serverless challenges include:
- Security: Serverless requires new security paradigms and best practices, as perimeters disappear. Each container or serverless workload provider applies its own security frameworks, making it very difficult to consistently apply security policies across the entire application.
- Observability: It is difficult to monitor and troubleshoot modern applications using legacy methods. Aside from the fact that old metrics are no longer relevant, it is hard to instrument serverless apps for agent-based monitoring. In any case, asynchronous distributed tracing must be deployed in addition to traditional logs.
- Serverless can have hidden direct and indirect costs: For example, high dependence on API calls can not only drive up costs, but also cause performance bottlenecks that are hard to remediate.
The Serverless Toolset
New tools and services are emerging to enhance the benefits and mitigate the challenges of serverless. Splunk, Logz.io and the Elastic Stack, for example, provide cutting-edge log aggregation and analysis to facilitate monitoring across distributed application architectures. LightStep and Epsagon offer next-generation distributed tracing solutions. Guardicore, Illumio, and Alcide specialize in security platforms for distributed applications.
The cloud providers have also stepped up to the plate, providing a full range of services to support the serverless application lifecycle.
Using AWS as an example, here’s a list of some of their more serverless-oriented products:
- AWS Lambda: was a pioneer in Functions as a Service. Since then, AWS has added Lambda@Edge to run Lambda functions at AWS Edge locations.
- AWS Fargate: a serverless compute engine for containers.
- Amazon Aurora Serverless: an on-demand, auto-scaling configuration for the Amazon Aurora relational database.
- Amazon API Gateway: a fully managed API management service.
- AWS Step Functions: for creating visual workflows to coordinate the components of distributed apps and microservices.
- Two fully managed services to facilitate messaging between application components: Amazon SNS for pub/sub messaging and Amazon SQS for message queuing.
- Amazon EventBridge: a serverless event bus service.
Serverless, containers, and microservices are the essential building blocks of today’s modern, highly distributed apps. Visit our Managed Services for AWS page to learn more about how your web applications can benefit from serverless and other cutting-edge technologies.