Patronen voor microservices ontwerpen

Het doel van microservices is om de snelheid van toepassingsreleases te verhogen door de toepassing op te maken in kleine autonome services die onafhankelijk kunnen worden geïmplementeerd. Een microservicearchitectuur brengt ook enkele uitdagingen met zich mee. De ontwerppatronen die hier worden weergegeven, kunnen helpen deze uitdagingen te verhelpen.

Ontwerppatronen voor microservices

Ambassador kan worden gebruikt om algemene clientconnectiviteitstaken zoals bewaking, logboekregistratie, routering en beveiliging (zoals TLS) op een taalagnostische manier te offloaden. Ambassador-services worden vaak geïmplementeerd als een sidecar (zie hieronder).

Anti-corruptielaag implementeert een façade tussen nieuwe en verouderde toepassingen om ervoor te zorgen dat het ontwerp van een nieuwe toepassing niet wordt beperkt door afhankelijkheden van verouderde systemen.

Met back-enden voor front-enden worden afzonderlijke back-endservices gemaakt voor verschillende typen clients, zoals desktop en mobiel. Op die manier hoeft één back-endservice niet te voldoen aan de conflicterende vereisten van verschillende clienttypen. Dit patroon kan helpen om elke microservice eenvoudig te houden door clientspecifieke problemen van elkaar te scheiden.

Bulkhead isoleert kritieke resources, zoals verbindingsgroep, geheugen en CPU, voor elke workload of service. Door gebruik te maken van bulkheads kan één workload (of service) niet alle resources verbruiken, zodat andere niet meer worden gebruikt. Dit patroon verhoogt de tolerantie van het systeem door trapsgevatte storingen te voorkomen die worden veroorzaakt door één service.

Met Gateway Aggregation worden aanvragen voor meerdere afzonderlijke microservices samengevoegd tot één aanvraag, waardoor de chattiteit tussen consumenten en services wordt verkleind.

Met gateway-offloading kan elke microservice functionaliteit van gedeelde service, zoals het gebruik van SSL-certificaten, offloaden naar een API-gateway.

Gatewayroutering routeer aanvragen naar meerdere microservices met behulp van één eindpunt, zodat consumenten niet veel afzonderlijke eindpunten hoeven te beheren.

Sidecar implementeert helperonderdelen van een toepassing als een afzonderlijke container of een afzonderlijk proces om isolatie en inkapsling te bieden.

De Fig van Devij biedt ondersteuning voor incrementele herfactoring van een toepassing, door specifieke onderdelen van de functionaliteit geleidelijk te vervangen door nieuwe services.

Zie Cloud Design Patterns (Cloudontwerppatronen) voor de volledige catalogus met cloudontwerppatronen op de Azure Architecture Center.