Having implemented a large scale Serverless integration middleware platform on AWS for a client, I thought of writing this blog post to note how serverless best practices can help organizations improve their DevOps Research and Assessment (DORA) metrics.
DORA metrics are a set of four key metrics that measure the performance of software delivery teams:
- Deployment frequency: How often does the team release new features to production?
- Lead time for changes: How long does it take for a code change to be deployed to production?
- Mean time to restore (MTTR): How long does it take to recover from a production incident?
- Change failure rate: What percentage of deployments cause a production incident?
Serverless best practices and DORA metrics
Serverless best practices can help organizations improve their DORA metrics in several ways:
- Increased deployment frequency: Serverless applications are typically easier to deploy than traditional applications, as they do not require managing infrastructure. This can lead to more frequent deployments, which can help organizations release new features to customers faster.
- Reduced lead time for changes: Serverless applications can also help to reduce the lead time for changes, as they can be deployed quickly and easily. This can help organizations respond to changes in the market or customer needs more quickly.
- Improved MTTR: Serverless applications can also help to improve MTTR, as they are typically more resilient to failures than traditional applications. This is because serverless applications are automatically scaled and can be easily restarted if they fail.
- Reduced change failure rate: Serverless applications can also help to reduce the change failure rate, as they are typically more reliable than traditional applications. This is because serverless applications are automatically scaled and can be easily restarted if they fail.
Examples of serverless best practices that align with DORA metrics
- Use serverless services: Serverless services are managed by AWS, so you don't have to worry about managing infrastructure. This can help you to deploy applications more quickly and easily.
- Use infrastructure as code (IaC): IaC can help you to automate the provisioning and configuration of your infrastructure. This can help you to deploy applications more quickly and reliably.
- Use continuous integration and continuous delivery (CI/CD): CI/CD can help you to automate the build, test, and deployment of your applications. This can help you to deploy applications more quickly and reliably.
- Use monitoring and logging: Monitoring and logging can help you to identify and troubleshoot problems with your applications. This can help you to improve the MTTR of your applications.
- Use automated rollback: Automated rollback can help you to quickly roll back to a previous version of your application if there is a problem with a new deployment. This can help you to reduce the change failure rate of your applications.
TL;DR
Serverless best practices can help organizations improve their DORA metrics by increasing deployment frequency, reducing lead time for changes, improving MTTR, and reducing change failure rate. By following these best practices, organizations can release new features to customers faster, respond to changes in the market or customer needs more quickly, and recover from production incidents more quickly.
Additional resources
- AWS Serverless Land: https://aws.amazon.com/serverless/
- DORA metrics: https://dora.dev/
- Serverless isn't just for AWS, the fundamentals in this post are applicable across Hyper-scalers;
- Microsoft Azure Functions: https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview
- Google Cloud Functions: https://cloud.google.com/functions
- IBM Cloud Functions: https://cloud.ibm.com/functions
Here's a session from the recent AWS Reinvent 2023, that you might find interesting.