Aanbevelingen voor veilige implementatiepraktijken
Van toepassing op deze aanbeveling voor de Well-Architected Operational Excellence-checklist: Power Platform
OE:10 | Definieer duidelijk de veilige implementatiepraktijken van uw workload. Benadruk de idealen van kleine, incrementele releasemethoden met kwaliteitspoorten. Gebruik moderne implementatiepatronen om risico's te beheersen. Verantwoord routine-implementaties en nood- of hotfix-implementaties. |
---|
In deze guide worden de aanbevelingen voor het gebruik van veilige implementatiepraktijken beschreven. Veilige implementatieprocessen en -procedures bepalen hoe u veilig wijzigingen in uw workload kunt aanbrengen en implementeren. Bij de implementatie hiervan moet u nadenken over implementaties vanuit het oogpunt van risicobeheer. Door deze maatregelen te nemen, kunt u het risico op menselijke fouten bij uw implementaties minimaliseren en de gevolgen van problematische implementaties voor uw gebruikers beperken.
Belangrijke ontwerpstrategieën
Er zijn belangrijke richtlijnen waarmee u rekening moet houden bij het implementeren van veilige implementatiepraktijken:
- Veiligheid en consistentie: Alle wijzigingen in de productiewerklast zijn inherent risicovol en moeten worden doorgevoerd met de nadruk op veiligheid en consistentie.
- Gezondheidsmodellen: Implementaties moeten gezondheidscontroles doorstaan voordat elke fase van progressieve blootstelling kan beginnen.
- Probleemdetectie: Wanneer er problemen worden gedetecteerd, moet de implementatie onmiddellijk worden stopgezet en moet het herstel worden gestart.
De volgende secties bevatten gedetailleerde aanbevelingen voor elk van deze punten.
Veiligheid en consistentie
Of u nu een update implementeert voor uw applicatiecode, infrastructuur als code (IaC), feature flag of configuratie, u introduceert risico's voor de werklast. Er zijn geen implementaties met een laag risico in productie. Elke implementatie moet een standaardpatroon volgen en moet worden geautomatiseerd om consistentie af te dwingen en het risico op menselijke fouten tot een minimum te beperken. Het is van essentieel belang dat de toeleveringsketen voor workloads en implementatiepijplijnen betrouwbaar en veilig zijn en dat er duidelijk gedefinieerde implementatiestandaarden zijn. Behandel elke implementatie als een mogelijk risico en onderwerp elke implementatie aan hetzelfde niveau van risicobeheer.
Ondanks de risico's moet u regelmatig wijzigingen in de workload blijven doorvoeren. Het niet implementeren van regelmatige updates brengt andere risico's met zich mee, zoals beveiligingskwetsbaarheden die door middel van implementaties moeten worden aangepakt. Meer informatie vindt u in Aanbevelingen voor het ontwerpen van een workloadontwikkeling toeleveringsketen.
Regelmatige kleine implementaties verdienen de voorkeur boven onregelmatige grote implementaties. Kleine wijzigingen zijn gemakkelijker op te lossen als er problemen optreden en regelmatige implementaties helpen uw team vertrouwen op te bouwen in het implementatieproces. Het is ook belangrijk dat u leert van de productie door uw workloadprocessen te herzien wanneer u tijdens de implementatie een afwijking tegenkomt. Mogelijk vindt u zwakke punten in het ontwerp van uw infrastructuur of uitrol. Wanneer er zich tijdens een implementatie problemen voordoen, zorg er dan voor dat onschuldige postmortems deel uitmaken van uw proces, zodat u lessen kunt trekken uit het incident.
Gezondheidsmodellen
Ontwikkel een robuust gezondheidsmodel als onderdeel van uw bewakingsplatform voor waarneembaarheid en betrouwbaarheidsstrategieën. Uw gezondheidsmodel moet diepgaand inzicht bieden in de onderdelen en de algehele status van de workload. Houd de gezondheidsstatistieken nauwlettend in de gaten na een uitrol. Als u tijdens de uitrol een melding over een gezondheidswijziging ontvangt, onderzoekt u het probleem onmiddellijk en bepaalt u de volgende stappen, zoals het terugdraaien van de wijziging. Als gebruikers geen problemen melden en alle gezondheidsindicatoren groen blijven, kan de uitrol worden voortgezet. Zorg ervoor dat u gebruiksstatistieken in uw gezondheidsmodel opneemt om ervoor te zorgen dat het gebrek aan door gebruikers gerapporteerde problemen en negatieve gezondheidssignalen geen probleem verbergt. Meer informatie vindt u in Aanbevelingen voor het uitvoeren van faalmodusanalyse.
Detectie van problemen
Wanneer uw implementatie een probleem veroorzaakt in een van de uitrolgroepen, moet de uitrol onmiddellijk worden gestopt. Onderzoek de oorzaak van het probleem en de ernst van de gevolgen zodra de waarschuwing wordt ontvangen. Herstel van het probleem kan het volgende omvatten:
- Terugdraaien door de wijzigingen in de implementatie ongedaan te maken en terug te keren naar de laatste bekende werkende configuratie.
- Door het probleem al tijdens de uitrol aan te pakken, gaan we verder. U kunt problemen halverwege de implementatie oplossen door een hotfix toe te passen of het probleem op een andere manier te minimaliseren.
- Nieuwe infrastructuur implementeren door gebruik te maken van de laatste bekende werkende configuratie.
Het terugdraaien van wijzigingen, met name database-, schema- of andere wijzigingen in stateful onderdelen, kan complex zijn. Uw richtlijnen voor veilige implementatiepraktijken moeten duidelijke instructies bevatten over hoe u met gegevenswijzigingen omgaat, in overeenstemming met het data-ontwerp voor uw werklast. Ook moet er zorgvuldig worden omgegaan met het doorrollen, zodat veilige implementatieprocessen niet worden verwaarloosd en de hotfix of andere minimaliserende maatregelen veilig worden uitgevoerd.
Algemene aanbevelingen
Implementeer versiebeheer in al uw build-artefacten om ervoor te zorgen dat u indien nodig terug en vooruit kunt draaien.
Gebruik een releasestroom of trunkvertakkingsstructuur, die nauw gesynchroniseerde samenwerking binnen het ontwikkelteam afdwingt, in plaats van een op Gitflow of omgeving gebaseerde vertakkingsstructuur.
Automatiseer zoveel mogelijk van uw veilige implementatiepraktijken. Meer informatie vindt u in Aanbevelingen voor het implementeren van automatisering.
Gebruik continue integratie (CI)-praktijken om regelmatig codewijzigingen in opslagplaatsen te integreren. CI-praktijken kunnen u helpen integratieconflicten te identificeren en de kans op grote, risicovolle fusies te verkleinen. Meer informatie vindt u in Aanbevelingen voor continue integratie.
Gebruik functievlaggen om nieuwe functies of wijzigingen in de productie selectief in of uit te schakelen. Functievlaggen kunnen u helpen de blootstelling van nieuwe code te beheersen en de implementatie snel terug te draaien als er zich problemen voordoen.
Implementeer wijzigingen in faseringsomgevingen die een afspiegeling zijn van uw productieomgeving. Met oefenomgevingen kunt u wijzigingen in een gecontroleerde omgeving testen voordat u ze in de live-omgeving implementeert.
Voer controles vóór de implementatie uit, inclusief codebeoordeling, beveiligingsscans en nalevingscontroles, om ervoor te zorgen dat wijzigingen veilig kunnen worden geïmplementeerd.
Installeer circuit breakers om het verkeer naar een service die problemen ondervindt automatisch te stoppen en verdere achteruitgang van het systeem te voorkomen.
Noodprotocollen
Stel voorgeschreven protocollen op die definiëren hoe uw veilige implementatieprocessen kunnen worden aangepast in geval van een hotfix of bij noodgevallen, zoals een inbreuk op de beveiliging of het blootleggen van een kwetsbaarheid. Uw noodprotocollen kunnen bijvoorbeeld het volgende omvatten:
- Versnelling van de promotie- en goedkeuringsfase
- Versnelling van rooktesten en integratietesten
- Vermindering van de baktijd
In sommige gevallen kan de noodsituatie de kwaliteit en het testen van poorten beperken, toch moeten de poorten nog steeds zo snel mogelijk in werking worden gesteld als een out-of-band oefening. Zorg ervoor dat u vastlegt wie in noodsituaties de veilige versnelling van de inzet kan goedkeuren en aan welke criteria moet worden voldaan om de versnelling te laten goedkeuren. Uitlijnen uw noodprotocollen met uw noodplan respons om ervoor te zorgen dat alle noodgevallen volgens dezelfde protocollen worden afgehandeld.
Overwegingen
Het opzetten en onderhouden van veilige implementatiepraktijken is complex. In hoeverre u robuuste standaarden volledig kunt implementeren is afhankelijk van de volgroeidheid van uw praktijken op veel gebieden van softwareontwikkeling. Door automatisering, IaC-only voor infrastructuurwijzigingen, consistentie in vertakkingsstrategieën, feature flags en andere werkwijzen te gebruiken, kunt u een veilige implementatie garanderen. Gebruik deze guide om uw workload te optimaliseren en als basis voor uw plannen voor verbetering naarmate uw werkwijzen evolueren.
Power Platform-facilitering
Pipelines zijn bedoeld om Application Lifecycle Management (ALM) te democratiseren voor Power Platform - en Dynamics 365-klanten door ALM-automatisering en CI/CD-mogelijkheden (Continuous Integration and Continuous Delivery) in de service te integreren. Power Platform
Microsoft Power Platform Build Tools voor Azure DevOps kunnen worden gebruikt om algemene build- en implementatietaken te automatiseren die betrekking hebben op apps die zijn gebouwd op Power Platform.
Met GitHub Actions kunnen ontwikkelaars geautomatiseerde workflows voor de levenscyclus van softwareontwikkeling bouwen. Power Platform Met GitHub-acties voor Microsoft Power Platform kunt u werkstromen in uw opslagplaats maken om apps te bouwen, te testen, te verpakken, vrij te geven, te implementeren, automatisering uit te voeren en bots en andere onderdelen gebouwd op Power Platform te beheren.
ALM Accelerator is een open-sourcetool die bestaat uit een set applicaties, scripts en pijplijnen die zijn ontworpen om het continue integratie-/continue leveringsproces te automatiseren.
Automatiseer tests met Azure Pipelines.
omgeving variabelen in oplossingen slaan de parametersleutels en -waarden op, die vervolgens als invoer voor andere toepassingsobjecten dienen. Door de parameters te scheiden van de verbruikende objecten, kunt u de waarden binnen dezelfde omgeving wijzigen of wanneer u oplossingen naar andere omgevingen migreert.
Power Platform omgevingen bieden functionaliteit voor herstel op een bepaald tijdstip, waarmee u kunt terugdraaien.