Deploying and operating a distributed system is a complex task, at least as complicated as creating the code for the system in the first place. Given that a significant cost of a software system involves its ongoing operation and maintenance, this is certainly a skill in high demand. Before the advent of cloud and container technology, this was normally accomplished through co-location of hardware within data centers. System administrators were required to have skills in hardware, system configuration, and scripting. However, with the increasing adoption of cloud and container technology, the need for these lower level-skills is diminishing rapidly and is largely being replaced by the role of DevOps developers who can write code to control infrastructure and operations.
In Chapter 10, Building Microservice Systems, we explored how decomposing a system into discrete...