Microservices-Architecture means: A software is strictly modularized, that is: A Software consists of many small services, which run as separate processes (with their own database and storage) and which communicate with each other via APIs. Since these microservices are independent of each other, they can run in distributed environments. In addition, each microservice can be written in its own programming language. Microservices can be easily scaled in a container infrastructure in a (public) cloud. If something fails, this usually only affects the module (micro service), not the entire system.
Advantages at a glance
- Modularization
- Team size/responsibility for a service
- Specification on the level of a module (lower complexity)
- Agile development of individual building blocks (independent development)
- Autarkic services enable specific scaling
- Technology independence
There are also - as always in life - a few disadvantages
- Decentralized data storage and synchronization
- CAP theorem/problem of distributed architecture
- Additional monitoring and logging infrastructure
- Higher complexity for operation (due to distributed architecture)
- Negligence of reusability