"Gather together the things that change for the same reasons. Separate those things that change for different reasons."
- Robert Martin, Single Responsibility Principle
Software architecture plays a key role in identifying the behavior of the system before it is built. A well-designed software architecture leads to flexible, reusable, and scalable components that can be easily extended, verified, and maintained over time. Such architectures evolve over time and help pave the way for the adoption of next-generation architectures. For example, a well-designed monolithic application that is built on the principles of Separation of Concern (SoC) is easier to migrate to microservices than an application that does not have well-defined components. In this chapter, you will:
- Learn a systematic approach to designing microservices using...