How to scale (4 of 5) – architecture
On architecture Jez argues for:
- Build systems that are designed to be deployed easily into multiple environments, can detect and tolerate failures in their environments and can have components updated independently
- Ensure that the state of production systems can be reproduced (without production data) in an automated fashion from information in version control
- Build intelligence into the application and the platform so that the deployment process can be as simple as possible
To do this you need to automate the deployment pipeline and have infrastructure and platforms as a service. The end goal is to allow engineers to be able to deploy any code to any environment in a way that is easy, safe, secure and replicable. Ideally, any engineer could do any of this by themselves. Jezz suggests that industry and regulation should not matter. However, your stakeholders and regulator may feel differently. The key is to minimise human gatekeepers to truly critical areas of code – for example a ledger in a bank.
On culture, Jez says you need to be able to trust the teams and the engineers. If you cannot trust them, you will but gates/sign-offs and blockers in their way. This is not to say that you do not have logging, monitoring and the ability to audit. Quite the opposite, automated deployments have much better audibility than manual.
Image credit here