Voorbereiden

Voltooid

U voegt uw eigen verbeteringen toe aan een bestaande architectuur die voldoet aan de hoge betrouwbaarheidsvereisten van de organisatie. Hier bespreken we de achtergrondcontext die u nodig hebt om succesvol te zijn met de oefeningen.

Probleemcontext

Contoso Shoes moet klaar zijn voor de volgende high-profile productlancering, die naar verwachting een aanzienlijke toename van het verkeer zal creëren. In de afgelopen twee jaar zijn er verschillende incidenten waardoor de website al een halve dag offline is. Het systeem is niet volledig getest in de ontwikkel-/testomgeving en sommige bugs zijn in productie geslopen. Probleemoplossing en herstel duurde lang, omdat de operators de hoofdoorzaken niet snel konden identificeren.

Er zijn enkele uitdagingen op het moment dat bepaalde onderdelen niet beschikbaar zijn. De uitschaalbewerkingen op rekenkracht zijn beïnvloed wanneer Azure Key Vault onjuist is geconfigureerd. Er zijn ook geen strategieën voor regionale storingen. In een recent incident is de hele regio Europa - west uitgegaan. Omdat de workload alleen in die regio werd uitgevoerd, moest het bedrijf financiële verliezen dragen totdat de regio een back-up maakte.

Huidige architectuur

Om deze uitdaging te voltooien, moet u een goed begrip hebben van de huidige architectuur van Contoso Shoes. Laten we ons richten op hun API-laag.

Diagram van de basisarchitectuur voor een webtoepassing.

Onderdelen

Alle onderdelen van deze architectuur worden geïmplementeerd in één regio.

  • Azure-app serviceabonnementen Standard S2 SKU biedt het rekenplatform dat als host fungeert voor de app. Automatisch schalen is ingeschakeld. De ontwikkelomgeving maakt gebruik van de Basic B1-SKU.

  • Azure-app Service biedt het toepassingsplatform waarmee de API-code in een container wordt uitgevoerd. De functie App Service-verificatie is ingeschakeld voor autorisatie.

  • Met implementatiesites kunt u een implementatie faseeren en deze vervolgens verwisselen met de productie-implementatie. Ze worden alleen in productie gebruikt.

  • Azure Container Registry slaat de container-API-code op en wordt gepusht via CI/CD-pijplijnen (Continuous Integration/Continuous Delivery) die het workloadteam maakt en beheert. Zowel de productieomgeving als de ontwikkel-/testomgeving maken gebruik van het containerregister.

  • Azure Cosmos DB met SQL API slaat alle statussen op die betrekking hebben op de workload. Het Cosmos DB-databaseaccount heeft één database die een aantal containers in het model voor gedeelde doorvoer bevat. Het Azure Cosmos-account maakt gebruik van de serverloze capaciteitsmodus. Er is één exemplaar voor productie en één voor ontwikkelen/testen.

  • Azure Key Vault slaat geheimen op die nodig zijn voor de API om een HTTP POST-aanroep uit te voeren naar een externe API van derden als onderdeel van één aanvraagstroom. De toepassing heeft toegang tot de geheimen via een Key Vault-verwijzing in de app-configuratie van de Azure-app Service. Er is één Key Vault voor productie en één voor ontwikkelen/testen.

  • Azure Log Analytics wordt gebruikt als een geïntegreerde sink voor het opslaan van logboeken en metrische gegevens voor alle diagnostische Azure-instellingen voor alle onderdelen die in de oplossing worden gebruikt. Er is één werkruimte voor productie en één voor ontwikkelen/testen.

  • Azure-toepassing Inzichten wordt gebruikt voor het vastleggen van telemetrie en logboeken van de API. Application Insights maakt gebruik van de zelfstandige modus, niet schrijven naar een toegewezen Log Analytics-werkruimte. Productie en dev/test delen geen algemeen exemplaar.

  • Azure Pipelines wordt gebruikt voor CI/CD waarmee de workload wordt gebouwd, getest en geïmplementeerd in preproductie- en productieomgevingen. Het workloadteam beheert de pijplijnen, die ook alle infrastructuur in hun oplossing beheren. Bicep is de keuze van technologie voor Infrastructure-as-Code (IaC).

Ontwerpkeuzes

In de lijst met onderdelen bestaat het implementatiestempel uit services die deelnemen aan het verwerken van een aanvraag. Deze services omvatten App Services en de API-code en Cosmos DB. De stempel bevat ook niet-functionele onderdelen: Key Vault en Container Registry. De toepassing heeft een externe afhankelijkheid van een prestatie- en tolerantieframework. Door het systeem beheerde identiteiten worden gebruikt tussen onderdelen van de stempel.

In de stempel wordt App Services geconfigureerd om automatisch te schalen op basis van belasting.

Afzonderlijke omgevingen worden gebruikt voor productie en dev/test. De productieomgeving maakt gebruik van de Standard-SKU van het App Service-plan. Het bedrijf heeft deze keuze gemaakt om de toepassing vooraf te kunnenwarmen naar een site voordat deze in productie wordt geïmplementeerd. De ontwikkel-/testomgeving maakt gebruik van de Basic-SKU voor kostenoptimalisatie. Beide omgevingen hebben hun eigen exemplaren van services. De omgevingen delen alleen het Container Registry.

De container-API-code wordt geleverd in één containerinstallatiekopieën die in App Service worden uitgevoerd. De API heeft meerdere HTTP-eindpunten die door de verschillende front-ends worden gebruikt voor zowel lees- als schrijfbewerkingen. De front-ends vallen buiten het bereik van deze module, maar ze zijn in het geheel van toepassing op de bedrijfskritieke status van deze situatie. De code is geïnstrueerd met Application Insights om basistelemetrie vast te leggen. Het team dat deze code heeft ontwikkeld, beheert ook de CI/CD-pijplijn voor de API-containerinstallatiekopieën en de CI/CD-pijplijnen.

Compromissen

Net als bij alles zijn er echter compromissen met de huidige architectuur. Bedrijfsvereisten hebben prioriteit gegeven aan kostenoptimalisatie ten opzichte van betrouwbaarheid en bewerkingen. De architectuur is niet ontwikkeld om binnen de kostenlimieten te blijven. De onderdelen vallen kort bij het profiteren van de betrouwbaarheidsmogelijkheden die het platform biedt. De keuze van de SKU voor berekening voorkomt bijvoorbeeld dat de werkbelasting gebruikmaakt van Beschikbaarheidszones. Voor telemetrie wordt een oudere versie van Application Insights gebruikt die niet is geïntegreerd met Log Analytics.

Bovendien is de toegang tot de werkbelasting te ruim. Zonder integratie van virtuele netwerken kunnen alle Azure-services bijvoorbeeld rechtstreeks via het openbare internet worden bereikt.

Toen de oplossing werd ontwikkeld, gebruikte het ontwikkelteam van de app één Azure-abonnement, waarbij dev/test en productie in hetzelfde abonnement worden geplaatst om hulpprogramma's voor de DevOps-teams eenvoudig te maken. Productiebronnen en dev/test-resources zijn echter niet volledig geïsoleerd. Sommige resources worden gedeeld tussen de twee omgevingen, hoewel ze wel een geïsoleerd abonnement hebben gekregen van de rest van de oplossingen van Contoso Shoes.

De ontwikkel-/testomgeving is ook één omgeving die wordt gedeeld door alle leden van het ontwikkel- en QA-team. De keuze werd gerechtvaardigd gezien de grootte van de teams en de coördinatie tussen hen had geen hogere mate van isolatie nodig. Naarmate het team en de oplossing zich verder ontwikkelen, heeft de individuele ontwikkel-/testomgeving de integratiecomplexiteit steeds vaker veroorzaakt omdat de levenscyclus van workstreams botste. Het verloop en de impact ervan op betrouwbaarheid zijn duur geweest.

Projectspecificatie

Het bedrijf wil mogelijkheden toevoegen aan hun oplossingsarchitectuur, zodat deze de verwachte toename van de belasting kan afhandelen. Dit zijn de zakelijke vereisten:

  • Bouw de mogelijkheid om regionale fouten te weerstaan door de architectuur uit te breiden naar meerdere regio's
  • De klantervaring verbeteren door klanten sneller te bedienen in een regio die zich geografisch dichter bij hen bevindt
  • Sluit aan bij de Azure-roadmap en profiteer van de nieuwste betrouwbaarheidsfuncties van Azure-services
  • Problemen vroegtijdig opsporen en de trapsgewijze impact in het systeem detecteren door een algemeen statusmodel te bouwen

Deze vereisten zijn alleen de lijst met prioriteiten van hun verbeteringsplannen. Het toepassingsteam is zich ervan bewust dat alle ontwerpgebieden moeten worden overwogen om de betrouwbaarheid van deze oplossing tot essentiële standaarden te brengen. Wees gerust, ze stoppen niet met het verbeteren van hun oplossing en bewerkingen nadat u ze hebt geholpen met de aspecten die in de komende oefeningen worden behandeld.

Welkom bij het team! Contoso Shoes kijkt ernaar uit uw aanbevelingen te horen.

Instellingen

In dit uitdagingsproject neemt u de rol van een architect aan die Contoso Shoes helpt hun betrouwbaarheidsresultaten te bereiken, te beginnen met de items met prioriteit in de vorige sectie.

  • U wordt aangeraden het hulpprogramma voor architectuurdiagrammen te gebruiken om de architectuur te visualiseren.
  • U hebt geen Azure-abonnement nodig voor deze uitdaging als u vertrouwd bent met de services en de bijbehorende functies.