Building and running cloud-based products
To take advantage of cloud, you will need to make changes to the way you work. This is around how you design, build and run products and services.
Make it automated
Automation cuts down on manual work that isn’t valuable. This is known as toil.
You should automate tasks that are:
- of no long-term value
If you treat everything as code:
- your deployments can be more reliable
- your cloud-based products may be more resilient
- it is easier to re-use and share existing code for new cloud-based products
You should write code for your:
- runbooks — written information about how you run your system
- deployment pipelines — how you make changes to your system
Release often. This helps you reduce the risk of making big changes less often. In the past, making changes to systems was difficult and risky.
You can reduce your risk by releasing often and using automation. Being able to do this is a sign of high performance.
This enables you to start small and iterate. Don’t start by building a complex system. Start with a simple system and make improvements over time. The service design and delivery process shows you how to do this.
Use a scientific approach:
- make a plan
- measure your starting point
- take action
- measure the results
Share results with your agency and across government.
Running a cloud-based product
There are various ways to make sure your cloud-based product is reliable.
You can improve its reliability by using:
- decoupling — ensure systems work without affecting other systems
- compartmentalisation — separating old and new systems to stop failures
- separate accounts — for different products, services or systems
- microservices — separating your cloud-based product into microservices, which improves your teams’ ability to deliver quickly
As products or services get more complex, you could use observability tools to track performance.
For complex products and services, you could use chaos engineering. This is performing experiments on a system while it’s in production. It builds confidence by showing how the system will respond in unexpected conditions.
There are many tools available for chaos engineering. There are open source and commercial tools.