Architecture Choices and Design Principles
As organizations work to modernize their applications, either for themselves or their clients, they aim to maneuver their apps toward scalability, resiliency, and high availability. The cloud and mobile devices are changing the way in which organizations approach application design. We are seeing large monolithic applications being replaced by smaller decomposed or decentralized services. These services provide communication through microservice APIs, or asynchronous messaging or eventing. This shift has created new hurdles for organizations to overcome, such as parallelism, asynchronous operations, and distributing application state. There are also core considerations to keep in mind, such as designing for failure, or scaling while embracing the automation of management and deployment.
This chapter shows an approach to architecting cloud solutions covering a variety of technologies and topics. We will look at some popular...