Course Code: mserarch
Prerequisites:
  • Basic understanding of software and system engineering required.
  • Good understanding of system development and integration recommended.
  • Some exposure to problems encountered during building complex enterprise solutions recommended.
Course Outline:
Focus of microservices and distributed systems
Decomposing a Monolith Application
- Developing independently deployable applications
- Organizing microservice applications around business capabilities
- Case study: Migrating a monolith application to three core microservices
Microservice architecture Decisions
- Connecting systems (pub/sub, point to point, sync/async, polling)
- Failures (partial, retries, error handling, idempotency)
- Microservice arch design patterns
o Aggregator
o API Gateway
o Chained or Chain of Responsibility
o Asynchronous Messaging
o Database or Shared Data
o Event Sourcing
o Branch
o Command Query Responsibility Segregator
o Circuit Breaker
o Decomposition
o
- Distributed Systems
o Coupling
o Control Flow and flow control (pushing vs pulling)
o Message order and delivery (pub/sub, FIFO, competing consumers)
o Error handling (archiving, idempotency)
- Observability
- External APIs
- Discovery
- Security
- Communication Style
- Reliability
Cloud and Auto Scalability of Microservices
- Microservice redundancy and fail-over
- Performance scalability for Microservices
- Auto scalability
 
 Focus on architecture best practices, patterns, and principles of the modern world, specifically enterprise integration with distributed systems and services.