A Microservices Architecture

The architecture of a microservices based set of applications follows mainly the same principles.

  • You need a registry for all your services running in multiple instances
  • You need some kind of authentication / authorization mechanism. Best is to have a SSO solution (OAuth).

Mainly that is enough to start. But you will fast realize that having a client connect to various services has its disadvantages. So you need additionally

  • Single Entry Point for clients to access your services. This is known under the term of an API Gateway or Edge Server. You can use a reverse proxy for that.

To ease the deployment of multiple instances in various environments, a centralized configuration service comes in quite handy. We add this

  • Centralized Configuration Service

Last but not least some operation and monitoring services

  • Logging Service
  • Deployment Service (like building VMs, Container images etc)
  • Monitoring
  • Load Balancing / Fail Over

This overview is mainly inspired from the great work found here:

https://docs.google.com/document/d/15G8ew0qEDqpuBTWH9YGHKhda6HaLvfKuS4pnB-CPm50/edit#

A first full stack implementation of the spring microservices world with netflix oss services can be found here:

https://github.com/rohitghatol/spring-boot-microservices

For MOS ERP this means we get an architecture like:

architecture

This is the first draft of the architecture. I will continue to evaluate it and refine it…