Microservices and Containers
Up until now, we have been developing the complete application as one block of code (usually known as a monolith), which is typically designed, tested, and deployed as a single unit. Scaling also occurs in a similar manner, where either the whole application is scaled or not. However, as the application grows in size, it is natural to want to break the monolith into smaller chunks that can be separately managed and scaled. A solution to this is microservices. This chapter is all about microservices, and we will look at a few methodologies for creating and managing them.
Microservices comprise a method of developing and architecting software applications as a collection of multiple loosely coupled services. These services are designed and developed to help build single-function modules that have clear and fine-grained interfaces. The benefit of this modularity, if designed and architected properly, is that the overall application becomes easier to understand...