In this section of our pattern language, we address the major development and operational issues that come with adoption of the cloud. It is naive to assume that a team can adopt cloud-native technologies without changing any of their development and operational processes. That would be like putting a Jet Engine inside a Model-T Ford. The way you manage and control your software must be adapted to the way in which your software will be built.
- Cloud Native DevOps is the root pattern for this section. It shows how to bring together several required concepts for delivering microsevices-based applications.
- Container Per Service is the right level of distribution for most microservices-based applications. It strikes a sweet spot between monoliths and fully distributed objects.
- CI CD Pipeline is the minimum level of automation required to perform Continuous Integration and Continuous Delivery of Microservices.
- Red-Black Deploy is the standard approach for doing services deployment in a distributed system (e.g. one hosted across more than one data center or with multiple hosts in a single datacenter) that allows you to deploy without service disruption.
- Canary Testing allows you to roll out possibly disruptive changes in a controlled way to a small group of users.
- Feature Toggle provides you with a way in your code (although controlled by configuration) to dynamically roll new features into a production environment in a limited way.
- Query Engine is the way in which you observe the output of the distributed services in your solution.
- Log Aggregator is a basic concept required for debugging problems caused in large-scale distributed systems such as those built using a Microservices Architecture.
- Correlation ID is an approach for tying together the log records of multiple calls that make up a single business transaction spread across multiple microservices processes.
- Autoscaling is a way of taking advantage of cloud-provider or cloud-platform mechanisms to allow your application operations teams to keep from worrying about detailed issues of ongoing capacity management.
The relationships between this set of patterns are shown in the diagram below.
Likewise there are also considerations on how you conceive the overall deployment architecture of your system that impact the overall operational profile of your system.
- Automate VM Deployment is fundamentally required in order to make sure that you have a consistent approach to seting up the PaaS or container environment that your microservices will run within, in addition to any additional IaaS services that container environment may depend on.
- Three Data Centers is the appropriate number of zones that you need to deploy a system across in order to reach the “sweet spot” of minimum cost and maximum reliability.
- One Region is the minimum geographical distribution of datacenters for a redundant infrastructure.
- Overlay Network is the best way to connect disparate datacenters together into a seamless cloud infrastructure.
- Topology Aware System is fundamental to being able to build resiliant applications in a distributed cloud model
The relationships between this set of patterns is shown below: