3. What is Microservices?
An architectural style
Collection of Loosely-Coupled Services with the ability to deploy
independently (process, database)
Inter-services communicate with each other through network
protocol
4. Why Microservices?
1. Modular
2. Deploy, Monitor and scale
independently between services
3. Developing independently
between teams
4. Improves the source code
security
5. Difficulties
1. Difficult to operate, detect and handle errors
2. Need to implement communication
mechanisms between Inter-Services
3. Eventual Consistency
4. Network latency
6. An architectural style
Modular Monolithic Collection of Loosely-Coupled
Modules with the ability to
deploy independently (database)
Modules communicate with each
other through network protocol
or in-process
Independent Internal Architecture
(according to microservice's principles)
7. Module Definition
Definition of scope (business capability, bounded context)
Each module owns its own database
Single responsibility principle (SRP)
Each module owns its own API Interfaces
Each module decides on the Internal architecture itself
Shared Code Base (Framework, Infrastructure components...)
Split source code (each module manage its own source code by using git submodule)
17. Conclusion
The most important thing to succeed the modular monolithic is the way we divide
the module
The system becomes a Distributed System when we separate the database for each
module
Event Driven Architecture keeps the boundaries clear between the modules