MotivationThe process of building your first microservice-based application can be daunting. There are new architectural patterns to understand and new technologies to assimilate. When learning a new language, most developers encounter some variation of the canonical Hello World!" program. The "Hello World" program illustrates one of the smallest examples of a working application's implementation. It would be useful to have an analog of this in the microservice world.
Reference ArchitectureThe simplest example of a microservice-based "Hello World"! application is a single service that exposes an endpoint and returns the "Hello World!" string in its response. A quick search of the internet yields an extensive collection of examples that fit this pattern. However, a single service is not representative of a microservice application. What we need is an example of a collection of services working together. What services should we include? Optimally, we should select services that support features standard across most applications. This collection of services would provide us with a reference architecture that could serve as both an example of a microservice application and serve as a foundation for building new custom applications.
Reference ImplementationThe reference architecture describes what to build but not how to implement it. What we need is a reference implementation to show us how to construct it. To address this, we provide a collection of articles and code that will implement the reference architecture. This reference implementation offers an open-source implementation of essential components common to many microservice applications, including infrastructure and application elements. The reader is free to use these components as they are or customize them to suit their needs. The user can supplement the reference implementation with application-specific services suited for their application's use cases.
In the article Building a Microservice Reference Implementation, we begin a series of articles that will provide a reference architecture and a reference implementation using the Java language and the Spring framework.