2. Agenda
● Monolithic Architecture
● Monolithic Architecture Shortcomings
● MicroServices to help
● MicroServices Principles
● MicroServices Design Patterns
● MicroServices Key Technologies
● MicroServices Adoption Strategy Example
3. Monolithic Service
Monolithic Architecture
● Large Server-Side Process providing complete domain functionality
● Exposes multiple x-domain endpoints
● Deployed as a single unit
● Can be horizontally scaled by running multiple instances
● Example:
Authentication Administration Data Access Data Updates ...
HTTP Endpoints
Transactional Database
4. Monolithic Architecture Shortcomings
● Can be deployed only as single unit
● Regression Testing of the complete service required after every change
● Difficult to maintain good modular structure as service grows
● Complexity and amount of Unit and Integration Tests
● Difficult to coordinate team (or multiple teams) working on the same service
5. MicroServices to Help
● Smaller Independently Deployable Services
● Each Service relies on its own persistence layer where possible
● Manageable Unit/Integration Tests
● Not locked in into single technology/language
● Scalable across multiple teams
Authentication Administration Data Access Data Updates ...
HTTP Endpoints
Transactional Database
Service Data Service Data Service Data Service Data Service Data
6. MicroServices Principles
● Organized around Business Capabilities (Domain-Driven Design)
● Deploy separately, deploy in Containers
● Smart Endpoints and Dumb Pipes
○ Queues/Topics used for data transfer, not intelligent routing
○ Services are smart enough to pickup/process their data
● Coarser-grained communication approach
○ Changing in-memory calls to RPC or messaging will make it too chatty
○ May need to aggregate service logic
● Decentralized Data Management
○ Use independent persistence layer where makes sense
● Design with Versioning in mind
● Follow Single Responsibility Principle
○ Gather those things which change for the same reason, Separate those things which change for
the different reason
● Beware of nano-services