- Leren door doen
- Trainers met praktijkervaring
- Klassikale trainingen
- Gedetailleerd cursusmateriaal
- Duidelijke inhoudsbeschrijving
- Maatwerk inhoud mogelijk
- Trainingen die doorgaan
- Kleine groepen
In de cursus Microservices Design Patterns leren de deelnemers welke design patterns kunnen worden toegepast in een Microservices Architectuur. De structuur en toepasselijkheid van de verschillende design patterns wordt diepgaand behandeld.
Deze module introduceert microservices als architecturaal paradigma. Er wordt een vergelijking gemaakt met monolithische architecturen, en voordelen zoals schaalbaarheid, cohesie, en onafhankelijkheid worden besproken. Tegelijkertijd worden de uitdagingen zoals complexiteit en afhankelijkheden belicht. Belangrijke concepten zijn single responsibility, minimale koppeling, en maximale cohesie.
In deze module worden architectuurpatronen voor microservices behandeld. Dit omvat gelaagde architecturen, het scheiden van verantwoordelijkheden, en communicatiepatronen zoals REST en HTTP. Specifieke patronen zoals Backend for Frontend en Micro Frontends worden ook besproken.
De module behandelt het gebruik van een API Gateway als façade en reverse proxy. Het dient als een enkel toegangspunt voor externe clients en ondersteunt functies zoals aggregatie van verzoeken, routering naar interne services, en het gebruik van service registry en discovery.
Hier leren deelnemers hoe elke microservice zijn eigen database kan beheren. Onderwerpen zoals polyglot persistence, onafhankelijke schaalbaarheid, data-encapsulatie en het vermijden van het shared database anti-pattern staan centraal.
Deze module gaat over het beheren van gedistribueerde transacties met behulp van het Saga-patroon. Thema’s zijn onder andere compensatietransacties, choreografie en orkestratie, en consistentie tussen services zonder het gebruik van two-phase commit.
Het aggregator patroon helpt bij het combineren van gegevens uit meerdere microservices. Varianten zoals scatter-gather, chained aggregatie, branch variaties en het comparison proxy patroon worden besproken. Service discovery speelt hierin ook een rol.
Deelnemers leren hier hoe het circuit breaker patroon helpt om uitval van microservices te voorkomen. Onderwerpen zijn beschikbaarheid, cascaderende uitval vermijden, en de verschillende toestanden van een circuit breaker: open, gesloten, half-open.
Deze module introduceert het CQRS-patroon waarbij lees- en schrijfbewerkingen worden gescheiden. Dit voorkomt inefficiënte joins en maakt gebruik van verschillende opslagmethodes voor lees- en schrijfoperaties. Command- en queryverantwoordelijkheden worden losgekoppeld.
De focus ligt op communicatie tussen microservices via messaging. Onderwerpen zijn pub-sub patronen, message brokers zoals RabbitMQ en Kafka, AMQP, en hoe deze patronen bijdragen aan losgekoppelde en schaalbare systemen.
In deze module leren deelnemers hoe event sourcing werkt als alternatief voor traditionele database-opslag. Gebeurtenissen worden opgeslagen als enige waarheid, en kunnen worden afgespeeld voor auditing of het opnieuw opbouwen van de toestand.
Deze module introduceert het strangler patroon voor het geleidelijk vervangen van legacy systemen. Strategieën zoals API gateway als proxy en het vermijden van big bang migraties worden uitgelegd. Focus ligt op risicobeperking en stapsgewijze transformatie.
De laatste module bespreekt hoe microservices opgesplitst kunnen worden op basis van business capabilities, subdomeinen en bounded contexts. Domain Driven Design, zowel strategisch als tactisch, vormt de kern van deze decompositieaanpak.
De cursus Microservices Design Patterns is bestemd voor senior developers en software architecten die design patterns in een microservices architectuur willen toepassen.
Goed begrip van software development concepten en gedistribueerde systemen. Ervaring met cloud platforms en containers is bevorderlijk voor de begripsvorming.
Demos onder leiding van de trainer afgewisseld met presentaties, besprekingen van case studies en praktische oefeningen.
De deelnemers krijgen na het goed doorlopen van de cursus een certificaat van deelname aan Microservices Design Patterns.
Module 1: Intro Microservices |
Module 2: Architecture Patterns |
Module 3: API Gateway Pattern |
What are Microservices? Monolith versus Microservices Benefits of Microservices Challenges of Microservices Single Responsibility Minimize Coupling Maximize Cohesion Scalability |
System Design Patterns Layered Architectures Separation of Concern Microservices Patterns Synchronous Communication Using REST and HTTP Backend for Frontend Micro Frontends |
What is an API Gateway? Facade Functionality Reverse Proxy Single Entry Point Requests Aggregation Request Routing Service Registry Service Discovery |
Module 4: Database per Service |
Module 5: Saga Pattern |
Module 6: Aggregator Pattern |
Dedicated Databases Separation of Concerns Independent Data Management Polyglot Persistence Independent Scaling Data Encapsulation Reducing Coupling Shared Database Anti-Pattern |
Transaction Handling Distributed Transactions Two Phase Commit Maintaining Data Consistency Compensating Transactions Saga Coordination Saga Choreography Saga Orchestration |
Distributing Requests Aggregating Results Scatter Gather Variation Chained Variation Multiple Chains Branch Variation Comparison Proxy Pattern Using Service Discovery |
Module 7: Circuit Breaker Pattern |
Module 8: Command Query Segregation |
Module 9: Asynchronous Messaging |
Need for Circuit Breaking Failing Microservices High Availability Preventing Downtime Circuit Barrier Preventing Cascade Failure Circuit Breaker States Open, Closed, Half Open |
CQRS Pattern Separate Operations Avoid Complex Queries Prevent Inefficient Joins Read versus Update Commands for Update Queries for Read Different Databases |
Interprocess Communication Asynchronous Communication Backend Internal Microservices DIP Principle Publish and Subscribe Using Message Brokers async AMQP protocol Rabbit MQ and Kafka |
Module 10: Event Sourcing |
Module 11: Strangler Pattern |
Module 12: Decomposition Patterns |
Storing Events Single Source of Truth Sequential Event List Materialized Views Denormalized Views Splitting Databases Replaying Events Increase Query Performance |
Legacy System Modernization Application Migration Evolve Gradually Avoid Bing Bang Rewrites Resource Utilization Risk Management Implementing Strangulation API Gateway as Proxy |
Decomposing Microservices By Business Capability By Subdomain Domain Driven Design Bounded Context Pattern Propagating Cohesiveness Strategic DDD Tactical DDD |