Microservices have become popular over the past few years, but it is still not so easy to find a common definition of what they are. In my opinion, microservices can be seen as SOA on steroids, scoped to a single application. Microservice architectures are entirely based on services, but the biggest difference compared to SOA is their level of granularity, their level of decomposition, and their scope. While SOA maximizes reusability across the enterprise landscape, microservices focus on bounded contexts, which may vary from one application to another.
The following is a high-level diagram of what a microservice architecture looks like:
Each outer circle in the preceding diagram represents an independent bounded context formed by a microservice. Within a microservice, you may have one or more components and a dedicated data store. Communication across microservices is done asynchronously through...