Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een architectuurstijl is een reeks architecturen die specifieke kenmerken delen. N-laag is bijvoorbeeld een algemene architectuurstijl. Recenter beginnen microservicearchitecturen voordeel te krijgen. Architectuurstijlen vereisen geen gebruik van specifieke technologieën, maar sommige technologieën zijn beter geschikt voor bepaalde architecturen. Containers zijn bijvoorbeeld geschikt voor microservices.
We hebben een set architectuurstijlen geïdentificeerd die vaak worden gevonden in cloudtoepassingen. Het artikel voor elke stijl bevat de volgende onderdelen:
- Een beschrijving en logisch diagram van de stijl
- Aanbevelingen voor het kiezen van deze stijl
- Voordelen, uitdagingen en best practices
- Een aanbevolen implementatie die gebruikmaakt van relevante Azure-services
Een korte rondleiding door de stijlen
In deze sectie vindt u een korte rondleiding door de architectuurstijlen die we hebben geïdentificeerd, samen met enkele overwegingen op hoog niveau voor het gebruik ervan. Deze lijst is niet volledig. Lees meer informatie in de gekoppelde artikelen.
N-laag
N-laag is een traditionele architectuur voor bedrijfstoepassingen die een toepassing opsplitsen in logische lagen en fysieke lagen. Elke laag heeft een specifieke verantwoordelijkheid en lagen beheren afhankelijkheden door alleen onderliggende lagen aan te roepen. Typische lagen zijn presentatie, bedrijfslogica en gegevenstoegang.
N-tier architecturen zijn geschikt voor het migreren van bestaande toepassingen die al gebruikmaken van een gelaagde architectuur. Deze aanpak vereist minimale wijzigingen wanneer u overstapt naar Azure en ondersteuning biedt voor gemengde omgevingen met zowel on-premises als cloudonderdelen. Maar de horizontale lagen kunnen het moeilijk maken om wijzigingen in te voeren zonder dat dit van invloed is op meerdere onderdelen van de toepassing, waardoor de flexibiliteit voor frequente updates wordt beperkt.
Web-Queue-Worker
Web-Queue-Worker is een architectuur die bestaat uit een webfront-end, een berichtenwachtrij en een back-end worker. De webfront-end verwerkt HTTP-aanvragen en gebruikersinteracties, terwijl de werkrol resource-intensieve taken, langlopende werkstromen of batchbewerkingen uitvoert. Communicatie tussen de front-end en worker vindt plaats via een asynchrone berichtenwachtrij.
Deze architectuur is ideaal voor toepassingen met relatief eenvoudige domeinen die een aantal resource-intensieve verwerkingsvereisten hebben. Het is eenvoudig te begrijpen en te implementeren met beheerde Azure-services, zoals App Service en Azure Functions. U kunt de front end en de worker onafhankelijk van elkaar schalen om flexibiliteit in de toewijzing van middelen te bieden. Maar zonder zorgvuldig ontwerp kunnen beide onderdelen groot en monolithisch worden.
Microservices
De Microservices-architectuur ontleden toepassingen in een verzameling kleine, autonome services. Elke service implementeert één bedrijfsmogelijkheid binnen een gebonden context en is zelfstandig met een eigen gegevensopslag. Services communiceren via goed gedefinieerde API's en kunnen onafhankelijk worden ontwikkeld, geïmplementeerd en geschaald.
Met microservices kunnen teams autonoom werken en frequente updates ondersteunen met een hogere releasesnelheid. Deze architectuur is zeer geschikt voor complexe domeinen waarvoor frequente wijzigingen en innovatie nodig zijn. Maar het introduceert een aanzienlijke complexiteit op gebieden zoals servicedetectie, gegevensconsistentie en gedistribueerd systeembeheer. Succes vereist volwassen ontwikkeling en DevOps-procedures, waardoor het beter geschikt is voor organisaties met geavanceerde technische mogelijkheden.
Gebeurtenisafhankelijke architectuur
Gebeurtenisgestuurde architecturen maken gebruik van een model voor publiceren/abonneren, waarbij gebeurtenisproducenten streams van gebeurtenissen genereren en gebeurtenisconsumenten in bijna realtime reageren op deze gebeurtenissen. Producenten en consumenten worden losgekoppeld van elkaar, met communicatie via gebeurteniskanalen of brokers. Deze architectuur ondersteunt zowel eenvoudige gebeurtenisverwerking als complexe analyse van gebeurtenispatronen.
Gebeurtenisgestuurde architecturen excelleren in scenario's waarvoor realtime verwerking met minimale latentie is vereist. Enkele voorbeelden zijn IoT-oplossingen, financiële handelssystemen of toepassingen die grote hoeveelheden streaminggegevens moeten verwerken. Gebeurtenisgestuurde architecturen bieden uitstekende schaalbaarheid en foutisolatie, maar veroorzaken uitdagingen met betrekking tot gegarandeerde levering, gebeurtenisvolgorde en uiteindelijke consistentie tussen gedistribueerde onderdelen.
Big Data
Big data-architecturen verwerken de opname, verwerking en analyse van gegevens die te groot of complex zijn voor traditionele databasesystemen. Deze architecturen omvatten doorgaans onderdelen voor gegevensopslag (zoals data lakes), batchverwerking voor historische analyse, stroomverwerking voor realtime inzichten en analytische gegevensarchieven voor rapportage en visualisatie.
Big data-architecturen zijn essentieel voor organisaties die inzichten moeten extraheren uit enorme gegevenssets, predictive analytics ondersteunen met behulp van machine learning of realtime streaminggegevens van IoT-apparaten moeten verwerken. Moderne implementaties maken vaak gebruik van beheerde services zoals Microsoft Fabric om de complexiteit van het bouwen en onderhouden van big data-oplossingen te vereenvoudigen.
Grote Rekencapaciteit
Big compute-architecturen ondersteunen grootschalige workloads waarvoor honderden of duizenden kernen nodig zijn voor rekenintensieve bewerkingen. Het werk kan worden gesplitst in discrete taken die tegelijkertijd op veel kernen worden uitgevoerd, waarbij elke taak invoer neemt, verwerkt en uitvoer produceert. Taken kunnen onafhankelijk (gênant parallel) of nauw gekoppeld zijn waarvoor snelle communicatie vereist is.
Big compute is essentieel voor simulaties, financiële risicomodellering, wetenschappelijke computing, technische stressanalyse en 3D-rendering. Azure biedt opties zoals Azure Batch voor beheerde big compute-workloads of HPC Pack voor meer traditioneel clusterbeheer. Deze architecturen kunnen de capaciteit op aanvraag bursten en naar duizenden kernen schalen wanneer dat nodig is.
Architectuurstijlen als beperkingen
Een architectuurstijl plaatst beperkingen op het ontwerp, inclusief de set elementen die kunnen worden weergegeven en de toegestane relaties tussen deze elementen. Beperkingen begeleiden de 'vorm' van een architectuur door het universum van keuzes te beperken. Wanneer een architectuur voldoet aan de beperkingen van een bepaalde stijl, komen bepaalde wenselijke eigenschappen voor.
De beperkingen in microservices zijn bijvoorbeeld:
- Een service vertegenwoordigt één verantwoordelijkheid.
- Elke service is onafhankelijk van de andere services.
- Gegevens zijn privé voor de service die eigenaar is van de gegevens. Services delen geen gegevens.
Wanneer u aan deze beperkingen voldoet, krijgt u een systeem waarmee u de volgende acties kunt uitvoeren:
- Services onafhankelijk implementeren.
- Fouten isoleren.
- Voer vaker updates uit.
- Introduceer eenvoudiger nieuwe technologieën in de toepassing.
Elke architectuurstijl heeft zijn eigen compromissen. Voordat u een architectuurstijl kiest, is het essentieel om de onderliggende principes en beperkingen te begrijpen. Zonder dat begrip riskeert u een ontwerp te creëren dat oppervlakkig voldoet aan de stijl zonder de volledige voordelen ervan te realiseren. Richt u meer op waarom u een specifieke stijl selecteert dan hoe u deze implementeert. Wees praktisch. Soms is het beter om een beperking te versoepelen dan om architecturale zuiverheid na te streven.
In het ideale geval moet de keuze van de architectuurstijl worden gemaakt met input van goed geïnformeerde belanghebbenden. Het workloadteam moet beginnen met het identificeren van de aard van het probleem dat ze oplossen. Ze moeten vervolgens de belangrijkste zakelijke stuurprogramma's en de bijbehorende architectuurkenmerken definiëren, ook wel niet-functionele vereisten genoemd, en ze prioriteren. Als de markttijd bijvoorbeeld essentieel is, kan het team prioriteit geven aan onderhoudbaarheid, testbaarheid en betrouwbaarheid om snelle implementatie mogelijk te maken. Als het team strikte budgetbeperkingen heeft, kunnen haalbaarheid en eenvoud voorrang krijgen. Het selecteren en onderhouden van een architectuurstijl is geen eenmalige taak. Hiervoor is doorlopende meting, validatie en verfijning vereist. Omdat het later kostbaar kan zijn om de architectuurrichting te veranderen, is het vaak de moeite waard om vooraf meer inspanning te investeren om efficiëntie op de lange termijn te ondersteunen en risico's te verminderen.
De volgende tabel bevat een overzicht van de manier waarop elke stijl afhankelijkheden beheert en de typen domeinen die het meest geschikt zijn voor elke stijl.
| Architectuurstijl | Beheer van afhankelijkheden | Domeintype |
|---|---|---|
| N-laag | Horizontale lagen verdeeld door het subnet | Traditioneel bedrijfsdomein. Frequentie van updates is laag. |
| Web-Queue-Worker | Front-end- en back-endtaken, losgekoppeld door asynchrone berichten. | Relatief eenvoudig domein met een aantal resource-intensieve taken. |
| Microdiensten | Verticaal (functioneel) uitgevouwen services die elkaar aanroepen via API's. | Gecompliceerd domein. Regelmatige updates. |
| Gebeurtenisgestuurde architectuur | Producent of consument. Onafhankelijke weergave voor elk subsysteem. | Internet of Things (IoT) en realtime systemen. |
| Grote gegevens | Verdeel een enorme gegevensset in kleine segmenten. Parallelle verwerking van lokale gegevenssets. | Batch- en realtime gegevensanalyse. Voorspellende analyse met behulp van machine learning. |
| Grote rekenkracht | Gegevenstoewijzing naar duizenden kernen. | Rekenintensieve domeinen zoals simulatie. |
Houd rekening met uitdagingen en voordelen
Beperkingen zorgen ook voor uitdagingen, dus het is belangrijk om inzicht te krijgen in de afwegingen wanneer u een van deze stijlen gebruikt. Bepaal of de voordelen van de architectuurstijl opwegen tegen de uitdagingen, voor dit subdomein en gebonden context.
Houd rekening met de volgende typen uitdagingen wanneer u een architectuurstijl selecteert:
Complexiteit: De complexiteit van de architectuur moet overeenkomen met het domein. Als het te simplistisch is, kan het resulteren in een grote bal modder, waarbij afhankelijkheden niet goed worden beheerd en de structuur afbreekt.
Asynchrone berichten en uiteindelijke consistentie: Asynchrone berichten worden gebruikt om services los te koppelen en de betrouwbaarheid te verbeteren, omdat berichten opnieuw kunnen worden geprobeerd. Het verbetert ook de schaalbaarheid. Asynchrone berichten creëren echter ook uitdagingen bij het afhandelen van uiteindelijke consistentie en de mogelijkheid van dubbele berichten.
Communicatie tussen services: Het opsplitsen van een toepassing in afzonderlijke services kan de communicatieoverhead verhogen. In microservicesarchitecturen leidt deze overhead vaak tot latentieproblemen of netwerkcongestie.
Meegaandheid: Het beheren van de toepassing omvat taken zoals bewaking, het implementeren van updates en het onderhouden van de operationele status.
Verwante middelen
- Ten ontwerpprincipes voor Azure-toepassingen