Understanding the peculiarities of distributed systems
There are many types of different software systems, each of them suited for different scenarios, built for different needs, and using different sets of assumptions. Generally, writing and deploying a classical, standalone desktop application is nothing like writing and deploying a microservice that needs to communicate with many others over a network.In this section, we'll go through the various models that you can use to deploy your software, the common mistakes that people should avoid when creating distributed systems, and some of the trade-offs people make to create such systems successfully.
Different service models and when to use them
Let's first start with service models. When designing a complex distributed system, a service model defines how much of the infrastructure you will manage versus how much you can build upon existing building blocks. Sometimes, you might want to leverage existing software without the...