Chapter 6. How to Work with Multiple Teams and Environments
In Chapter 5, you learned how to set up CI/CD to allow developers to work together efficiently and safely. This will get you pretty far, but as your company grows, you’ll start to hit problems that cannot be solved by CI/CD alone. Some of these problems will be due to pressure from the outside world: more users, more traffic, more data, and more local laws and regulations. Some of these problems will be due to pressure from within: more developers, more teams, and more products. All of this makes it harder to code, test, and deploy without hitting lots of bugs, outages, and bottlenecks.
All of these are problems of scale, and for the most part, these are good problems to have, as they are typically signs that your business is becoming more successful. But to paraphrase the philosopher The Notorious B.I.G., more money means more problems. The most common approach companies use to solve problems of scale is divide and conquer. You break things into multiple smaller pieces so each piece is easier to manage in isolation, typically using the following approaches:
- Break up your deployments
-
You deploy your software into multiple separate, isolated environments.
- Break up your codebase
-
You split your codebase into multiple libraries and/or services.
In this chapter, you’ll learn the advantages and drawbacks of these approaches and how to implement them. You’ll also go through several hands-on examples, including setting ...