The idea of creating business services without dependen- cies has been the goal of modern software development for decades. In the past, developers tried to create small software elements that could be grouped together to cre- ate larger applications. In many cases, these services were simply too numerous and too granular. The alterna- tive was to encapsulate existing monolithic code as a ser- vice. Neither of these approaches worked well. In contrast, microservices is a process of developing ap- plications that consist of code that is independent of each other and of the underlying developing platform. Once created, each microservice runs a unique process and communicates through well-defined and standardized APIs. These services are defined in a catalog so that de- velopers can more easily locate the right service and un- derstand the governance rules for usage. To create an application, a variety of microservices need to be managed and linked together. Microservices are de- signed to be linked together to create a business process. Because these services are modular, it is much easier for developers to change a service as the business process changes. Microservices separate business logic functions into smaller application services that can communicate over standard HTTP. In essence, microservices isolates faults and exceptions so that if one service fails, the entire ap- plication doesn’t fail. An example of a microservice is au- thentication. A team could build, test and publish an ac- cess and identity microservice. The access and identity microservice could then be utilized across teams rather than each project needing to develop their own authenti- cation method. 44
Building Cloud Native Apps Painlessly Page 49 Page 51