What Are Microservices?
Section 1.1 provided an initial definition of the term microservice. However, there are a number of different ways to define microservices. The different definitions are based on different aspects of microservices. They also show for which reasons the use of microservices is advantageous. At the end of the chapter the reader should have his or her own definition of the term microservice—depending on the individual project scenario.
The chapter discusses the term microservice from different perspectives:
- • Section 3.1 focuses on the size of microservices.
- • Section 3.2 explains the relationship between microservices, architecture, and organization by using the Conway’s Law.
- • Section 3.3 presents a domain architecture of microservices based on domain- driven design (DDD) and bounded context.
- • Section 3.5 explains why microservices should contain a user interface (UI).
Size of a Microservice
The name “microservices” conveys the fact that the size of the service matters; obviously, microservices are supposed to be small.
One way to define the size of a microservice is to count the lines of code (LOC).1 However, such an approach has a number of problems:
- • It depends on the programming language used. Some languages require more code than others to express the same functionality—and microservices are explicitly not supposed to predetermine the technology stack. Therefore, defining microservices based on this metric is not very useful.
- • Finally, microservices represent an architecture approach. Architectures, however, should follow the conditions in the domain rather than adhering to technical metrics such as LOC. Also for this reason attempts to determine size based on code lines should be viewed critically.
In spite of the voiced criticism, LOC can be an indicator for a microservice. Still, the question as to the ideal size of a microservice remains. How many LOC may a microservice have? Even if there are no absolute standard values, there are nevertheless influencing factors, which may argue for larger or smaller microservices.