Cloudontwerppatronen
Deze ontwerppatronen zijn nuttig voor het bouwen van betrouwbare, schaalbare en veilige toepassingen in de cloud.
Elk patroon beschrijft het probleem dat met het patroon wordt opgelost, overwegingen voor het toepassen van het patroon en een voorbeeld op basis van Microsoft Azure. De meeste patronen bevatten codevoorbeelden of codefragmenten die laten zien hoe het patroon in Azure kan worden geïmplementeerd. De meeste patronen zijn echter relevant voor elk gedistribueerd systeem, ongeacht of deze worden gehost op Azure of andere cloudplatforms.
Aandachtspunten voor cloudontwikkeling
GegevensbeheerGegevensbeheer is het belangrijkste element van cloudtoepassingen en heeft invloed op de meeste kwaliteitskenmerken. Gegevens worden doorgaans gehost op verschillende locaties en op meerdere servers voor prestaties, schaalbaarheid of beschikbaarheid. Dit kan verschillende uitdagingen opleveren. Zo is het bijvoorbeeld nodig om consistentie van de gegevens te waarborgen en daarnaast moeten gegevens doorgaans over verschillende locaties worden gesynchroniseerd. |
|
Ontwerp en implementatieEen goed ontwerp omvat consistentie en coherentie in het ontwerp en de implementatie van onderdelen, onderhoudbaarheid om het beheer en de ontwikkeling te vereenvoudigen, en herbruikbaarheid om onderdelen en subsystemen te gebruiken in andere toepassingen en scenario's. Beslissingen die worden genomen tijdens de ontwerp- en implementatiefase hebben een aanzienlijke invloed op de kwaliteit en de totale eigendomskosten van toepassingen en services die in de cloud worden gehost. |
|
BerichtenDe gedistribueerde aard van cloudtoepassingen vereist een berichteninfrastructuur die de onderdelen en services verbindt, idealiter losjes gekoppeld om de schaalbaarheid te maximaliseren. Asynchrone berichten worden veel gebruikt en bieden veel voordelen, maar het brengt ook uitdagingen met zich mee, zoals het ordenen van berichten, het beheer van gifberichten, idempotentie en meer. |
Catalogus van patronen
Patroon | Samenvatting | Categorie |
---|---|---|
Ambassadeur | Helper-services maken die netwerkaanvragen verzenden namens een consumentservice of toepassing. | Ontwerp en implementatie, Operationele topprestaties |
Anti-corruptielaag | Een toegangspunt of een adapterlaag implementeren tussen een moderne toepassing en een oud systeem. | Ontwerp en implementatie, Operationele topprestaties |
Asynchroon aanvraag-antwoord | Ontkoppel de back-endverwerking van een front-endhost waar de back-endverwerking asynchroon moet zijn, maar de front-end nog steeds een duidelijke respons nodig heeft. | Berichten |
Back-ends voor front-ends | Afzonderlijke back-endservices maken om te worden verbruikt door specifieke front-endtoepassingen of -interfaces. | Ontwerp en implementatie |
Bulkhead | Elementen van een toepassing in groepen isoleren zodat bij uitval van het ene element het andere element blijft functioneren. | Betrouwbaarheid |
Cache-Aside | Gegevens op verzoek in een cache laden vanuit een gegevensarchief. | Gegevensbeheer, Prestatie-efficiëntie |
Choreografie | Laat elke service bepalen wanneer en hoe een bedrijfsbewerking wordt verwerkt, in plaats van afhankelijk te zijn van een centrale orchestrator. | Berichten, Prestatie-efficiëntie |
Circuitonderbreker | Fouten afhandelen waarvoor een wisselende hoeveelheid tijd nodig is om ze op te lossen bij het verbinden met een externe service of resource. | Betrouwbaarheid |
Claimcontrole | Een groot bericht opsplitsen in een claimcontrole en een nettolading om te voorkomen dat een berichtenbus wordt overbelast. | Berichten |
Compenserende transactie | Werk ongedaan maken dat is uitgevoerd door een reeks stappen, die samen een uiteindelijk consistent bewerking definiëren. | Betrouwbaarheid |
Concurrerende consumenten | Meerdere gelijktijdige consumenten inschakelen voor het verwerken van berichten die op hetzelfde kanaal worden ontvangen. | Berichten |
Consolidatie van berekenbronnen | Meerdere taken of bewerkingen consolideren in een enkele rekenkundige eenheid. | Ontwerp en implementatie |
CQRS | Bewerkingen die gegevens lezen scheiden van bewerkingen die gegevens bijwerken met behulp van afzonderlijke interfaces. | Gegevensbeheer, Ontwerp en implementatie, Prestatie-efficiëntie |
Implementatiestempels | Implementeer meerdere onafhankelijke kopieën van toepassingsonderdelen, waaronder gegevensarchieven. | Betrouwbaarheid, Prestatie-efficiëntie |
Configuratie van Edge-workload | De grote verscheidenheid aan systemen en apparaten op de werkvloer kan de workloadconfiguratie een lastig probleem maken. | Ontwerp en implementatie |
Gebeurtenisbronnen | Een archief gebruiken waaraan alleen gegevens kunnen worden toegevoegd om de volledige reeks gebeurtenissen vast te leggen die de acties beschrijven die op gegevens in een domein worden uitgevoerd. | Gegevensbeheer, Prestatie-efficiëntie |
Extern configuratiearchief | Configuratiegegevens vanuit het implementatiepakket voor de toepassing verplaatsen naar een centrale locatie. | Ontwerp en implementatie, Operationele topprestaties |
Federatieve identiteit | Verificatie delegeren aan een externe id-provider. | Beveiliging |
Gatekeeper | Toepassingen en services beveiligen met behulp van een toegewezen instantie van de host die fungeert als een broker tussen clients en de toepassing of service, die aanvragen valideert en opschoont, en die aanvragen en gegevens tussen deze twee componenten doorgeeft. | Beveiliging |
Aggregatie van gateway | Een gateway gebruiken om verschillende afzonderlijke aanvragen samen te voegen in één aanvraag. | Ontwerp en implementatie, Operationele topprestaties |
Offloading van gateway | Gedeelde of gespecialiseerde servicefunctionaliteit offloaden naar een gatewayproxy. | Ontwerp en implementatie, Operationele topprestaties |
Routering van gateway | Aanvragen naar meerdere services routeren met behulp van één eindpunt. | Ontwerp en implementatie, Operationele topprestaties |
Geodes | Back-endservices implementeren in een set geografische knooppunten, die elk clientaanvragen in elke regio kunnen afhandelen. | Betrouwbaarheid, Operationele topprestaties |
Eindpuntstatusbewaking | Functionele controles implementeren in een toepassing die externe hulpprogramma's met regelmatige intervallen kunnen benaderen via beschikbaar gestelde eindpunten. | Betrouwbaarheid, Operationele topprestaties |
Indextabel | Indexen maken van de velden in gegevensarchieven waarnaar vaak wordt verwezen door query's. | Gegevensbeheer, Prestatie-efficiëntie |
Selectie van leider | De acties coördineren die worden uitgevoerd door een reeks samenwerkende taakexemplaren in een gedistribueerde toepassing door één exemplaar te selecteren als de leider, die vervolgens de verantwoordelijkheid krijgt voor het beheren van de andere exemplaren. | Ontwerp en implementatie, Betrouwbaarheid |
Gerealiseerde weergave | Vooraf ingevulde weergaven met de gegevens uit een of meer gegevensarchieven genereren wanneer de gegevens niet perfect zijn opgemaakt voor vereiste querybewerkingen. | Gegevensbeheer, Operational Excellence, Prestatie-efficiëntie |
Pijpen en filters | Een taak waarmee een complexe verwerking wordt uitgevoerd, opsplitsen in een reeks afzonderlijke elementen die kunnen worden hergebruikt. | Ontwerp en implementatie, Berichten |
Wachtrij met prioriteit | Prioriteit geven aan aanvragen die worden verzonden naar services, zodat aanvragen met een hogere prioriteit sneller worden ontvangen en verwerkt dan aanvragen met een lagere prioriteit. | Berichten, Prestatie-efficiëntie |
Uitgever/abonnee | Een toepassing in staat stellen om asynchroon meerdere geïnteresseerde consumenten op de hoogte te brengen van gebeurtenissen, zonder dat de afzenders aan de ontvangers worden gekoppeld. | Berichten |
Load Leveling op basis van wachtrij | Een wachtrij gebruiken die fungeert als een buffer tussen een taak en een service die wordt aangeroepen om onregelmatige zware belastingen soepel te verwerken. | Betrouwbaarheid, Berichten, Tolerantie, Prestatie-efficiëntie |
Frequentielimietpatroon | Beperkende patroon om beperkingsfouten met betrekking tot deze beperkingslimieten te voorkomen of te minimaliseren en om u te helpen de doorvoer nauwkeuriger te voorspellen. | Betrouwbaarheid |
Opnieuw proberen | Een toepassing de mogelijkheid bieden voor het afhandelen van verwachte, tijdelijke fouten als er wordt geprobeerd om verbinding te maken met een service of netwerkresource door een bewerking die eerder is mislukt, transparant opnieuw te proberen. | Betrouwbaarheid |
Saga | Gegevensconsistentie beheren in microservices in scenario's met gedistribueerde transacties. Een saga is een reeks transacties die elke service bijwerken en een bericht of gebeurtenis publiceert om de volgende transactiestap te activeren. | Berichten |
Scheduler Agent Supervisor | Een set acties coördineren binnen een gedistribueerde set services en andere externe resources. | Berichten, Betrouwbaarheid |
Sequentiële verwerking | Een reeks gerelateerde berichten in een gedefinieerde volgorde verwerken zonder de verwerking van andere groepen berichten te blokkeren. | Berichten |
Sharding | Een gegevensarchief onderverdelen in een set met horizontale partities of shards. | Gegevensbeheer, Prestatie-efficiëntie |
Sidecar | Onderdelen van een toepassing implementeren in een afzonderlijk proces of container om isolatie en inkapseling mogelijk te maken. | Ontwerp en implementatie, Operationele topprestaties |
Hosting van statische inhoud | Statische inhoud implementeren naar een opslagservice in de cloud die de inhoud rechtstreeks aan de client kan leveren. | Ontwerp en implementatie, Gegevensbeheer, Prestatie-efficiëntie |
Strangler Fig | Een verouderd systeem incrementeel migreren door specifieke functionaliteit geleidelijk te vervangen door nieuwe toepassingen en services. | Ontwerp en implementatie, Operationele topprestaties |
Beperking | Het verbruik beheren van resources die worden gebruikt door een exemplaar van een toepassing, een afzonderlijke tenant of een hele service. | Betrouwbaarheid, Prestatie-efficiëntie |
Valetsleutel | Een token of sleutel gebruiken die clients beperkte, directe toegang biedt tot een specifieke resource of service. | Gegevensbeheer, Beveiliging |
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub Issues geleidelijk uitfaseren als het feedbackmechanisme voor inhoud. Het wordt vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor