Delen via


DevOps-procedures voor SaaS-workloads in Azure

DevOps-procedures zijn integraal voor het beheren van workloads in Azure, met name voor SaaS-toepassingen. Belangrijke aspecten zijn onboarding, offboarding en het wijzigen van klantexemplaren. Deze procedures stroomlijnen niet alleen bewerkingen, maar verbeteren ook de schaalbaarheid en betrouwbaarheid, waardoor de kans op storingen wordt geminimaliseerd.

In dit artikel worden ontwerpoverwegingen beschreven voor efficiënt levenscyclusbeheer van klanten en veilige implementatieprocedures.

Levenscycluss van klanten beheren

Het beheren van levenscyclus-gebeurtenissen van klanten is van cruciaal belang voor elke SaaS-toepassing. Deze gebeurtenissen zijn doorgaans:

  • Onboarding: Wanneer een klant zich aanmeldt.
  • Wijzigen: het exemplaar van een klant wijzigen, zoals het wijzigen van de prijscategorie.
  • Offboarding: wanneer een klant zijn account annuleert.

Er kunnen extra levenscyclus-gebeurtenissen optreden. U kunt bijvoorbeeld toestaan dat uw klanten hun abonnement onderbreken terwijl ze hun gegevens gedurende een bepaalde periode bewaren en hun abonnement later hervatten. Elke gebeurtenis kan unieke gevolgen hebben voor uw toepassing.

In sommige oplossingen vereist het levenscyclusbeheer van klanten mogelijk alleen het maken of beheren van gegevens in een databasetabel. Voor andere oplossingen kan het nodig zijn om de implementatie van de Azure-infrastructuur, toepassingscode en complexere configuratie in te delen.

Levenscyclusbeheer is een belangrijke verantwoordelijkheid van het besturingsvlak van een SaaS-oplossing. In eerste instantie kan uw team deze activiteiten handmatig afhandelen, maar in de loop van de tijd proberen om meer functionaliteit over te zetten naar een geformaliseerde oplossing of toepassing voor het besturingsvlak.

Ontwerpoverwegingen

  • Consistentie. Houd bij het plannen van uw strategie voor levenscyclusbeheer rekening met de complexiteit van acties die vereist zijn voor elke levenscyclus-gebeurtenis van de klant. Dit omvat de grootte van uw oplossing, het klantenbestand en de overhead van de organisatie. Zorg ervoor dat u duidelijk inzicht hebt in de benodigde stappen voor elke gebeurtenis en investeer in controles om consistentie te behouden. Controleer en werk uw processen regelmatig bij om ervoor te zorgen dat ze geldig blijven naarmate uw oplossing zich ontwikkelt.

  • Tenancymodel. Uw benadering voor het verwerken van levenscyclus-gebeurtenissen van klanten is afhankelijk van uw tenancymodel.

    • Volledig multitenant oplossingen met infrastructuurbronnen. Onboarding of offboarding van een klant omvat meestal het bijwerken van een klantenlijst en de bijbehorende gegevens in het gegevensarchief van uw toepassing.
    • Toegewezen resources per klant. De taken omvatten doorgaans het initiëren van implementaties in Azure, het bewaken van de voortgang en het afhandelen van implementatiefouten, mogelijk met menselijke tussenkomst.
    • Door de klant geïmplementeerde resources. Mogelijk moet u rechtstreeks communiceren met het technische team van de klant voor onboarding of offboarding.
  • Lagen. Houd rekening met uw prijsmodel en de verschillende infrastructuurbehoeften van elke laag, met name als u klanten toestaat hun SKU op elk gewenst moment te wijzigen.

    • Als uw SaaS-oplossing bijvoorbeeld een kerntoepassing en meerdere betaalde invoegtoepassingsmodules bevat, moet u ervoor zorgen dat de resources van de kern-app worden geïmplementeerd tijdens de onboarding. Daarnaast kunt u dynamische toevoeging en verwijdering van invoegtoepassingsmodules toestaan. Wanneer een module wordt verwijderd, moet u beslissen of u gekoppelde gegevens wilt verwijderen of wilt opslaan voor mogelijke heractivering.

Ontwerpaanaanvelingen

Aanbeveling Voordeel
Documenteer elk type levenscyclus-gebeurtenis van de klant.

Zorg ervoor dat u stapsgewijze details van het proces voor elke gebeurtenis vastlegt.
Door inzicht te krijgen in de gebeurtenissen, kunt u plannen hoe u op elke gebeurtenis in uw oplossingsontwerp kunt reageren.
Duidelijke instructies helpen menselijke operators consistentie te behouden en dienen als de basis voor toekomstige automatisering.
Communiceer de gedeelde verantwoordelijkheid tussen u en uw klant voor elke levenscyclus-gebeurtenis. Communiceer duidelijk en vroeg over welke acties u verwacht dat de klanten doen om een levenscyclusfase te voltooien. U kunt potentiële fouten en frustraties van klanten verminderen die worden veroorzaakt door miscommunicatie.
Capaciteitsplanning uitvoeren voor elke levenscyclus-gebeurtenis.

Als u bijvoorbeeld een nieuwe klant onboardt, wilt u een nieuw exemplaar van uw toepassing implementeren als bestaande exemplaren onvoldoende capaciteit hebben om de extra belasting af te handelen.

Zie Facturering en kostenbeheer voor SaaS-workloads in Azure voor meer informatie.
U kunt uw mogelijkheid om eenvoudiger te schalen ondersteunen en implementatiefouten voorkomen.
Automatiseer uw levenscyclus-gebeurtenissen, indien praktisch.

Voor oplossingen met een laag volume of vroeg stadium is handmatige implementatie en configuratie mogelijk voldoende, maar moet nog steeds scripts worden gebruikt, zelfs als een technicus deze uitvoert telkens wanneer een levenscyclusgebeurtenis plaatsvindt.

Wanneer uw oplossing zich verder ontwikkeld, integreert u deze verantwoordelijkheden in een volledig controlevlak om menselijke fouten te verminderen en een hogere schaal te ondersteunen.
U kunt het aanzienlijke risico op menselijke fouten verminderen en een hogere schaal ondersteunen.

Uw strategie voor infrastructuurbeheer plannen

Ontwikkel een strategie voor het implementeren, onderhouden en beheren van De Azure-infrastructuur. Naarmate u uw SaaS schaalt, neemt het aantal resources toe. Het is gemakkelijker om vanaf het begin een beheerstrategie te volgen dan om de infrastructuur later af te stemmen wanneer het te complex wordt om handmatig te verwerken.

Ontwerpoverwegingen

  • Beheer van klantresources. Uw tenancymodel is van invloed op de implementatie van resources in SaaS-oplossingen. U kunt toegewezen Azure-resources implementeren voor elke klant of resources delen tussen een bepaald aantal klanten. U kunt ook één set gedeelde resources gebruiken en deze opnieuw configureren wanneer u nieuwe klanten onboardt. Algemene benaderingen voor het beheren van de levenscyclus van de resources:

    • Behandel uw klantenlijst als een configuratie van de resources die u wilt implementeren. Gebruik gecentraliseerde implementatiepijplijnen om deze resources te implementeren en te configureren.
    • Behandel uw klantenlijst als gegevens. Gebruik een besturingsvlaktoepassing om infrastructuur in te richten en te configureren.
  • Automatisering van infrastructuur. Veel organisaties beginnen met het handmatig implementeren van cloudinfrastructuur via Azure Portal, wat in eerste instantie eenvoudig is, maar niet goed schaalt. Plan het instellen van uw infrastructuur te automatiseren met IaC-hulpprogramma's (Infrastructure as Code), zoals Bicep of Terraform. Voor complexere vereisten maakt u een besturingsvlak dat rechtstreeks gebruikmaakt van Azure Resource Manager-API's.

  • Toeschrijving van infrastructuur. Houd bij welke klanten worden geïmplementeerd op welke infrastructuur. Het bijhouden is belangrijk voor nauwkeurige capaciteitsplanning en kostentoewijzing. U kunt de klantinfrastructuur centraal bijhouden in een klantdatabase of, voor een toegewezen infrastructuur, azure-resourcemetagegevens gebruiken met klantspecifieke resourcegroepen en resourcetags. Zie Resource-organisatie voor SaaS-workloads voor meer informatie.

Ontwerpaanaanvelingen

Aanbeveling Voordeel
Bouw infrastructuurautomatisering met behulp van implementatiepijplijnen, scripts of sjablonen met hulpprogramma's waarmee uw team al bekend is. Het gebruik van bekende hulpprogramma's vermindert het risico op fouten, omdat automatisering van de infrastructuur verstorend kan zijn als de hulpprogramma's niet worden begrepen.
Implementeer waar mogelijk uw infrastructuur met behulp van IaC. Het handmatig onderhouden van de infrastructuur wordt riskanter en lastiger naarmate de hoeveelheid infrastructuur groeit.
Scheid de kerninfrastructuur van de infrastructuur op klantniveau. Verschillende typen infrastructuur hebben verschillende levenscycluss en beheeractiviteiten. Door ze te scheiden, kunt u elke set onafhankelijk van elkaar beheren volgens een eigen schema.
Azure Managed Applications gebruiken om door de klant geïmplementeerde resources te implementeren en te beheren. Azure Managed Applications biedt een scala aan mogelijkheden waarmee u resources binnen het Azure-abonnement van een klant kunt implementeren en beheren.

Implementaties van toepassingen plannen

Werk de toepassingscode en -configuratie regelmatig bij om de functionaliteit te verbeteren. Klanten verwachten consistente uptime tijdens updates en veilige implementaties om het risico op storingen te minimaliseren.

Ontwerpoverwegingen

  • Hulpprogramma's en processen standaardiseren. Door de branche bewezen DevOps-hulpprogramma's zorgt voor consistentie tussen functies en volwassenheid in processen voor het beheren van uw toepassingsimplementaties. Het ontwikkelen van uw eigen hulpprogramma's wordt in de meeste situaties beschouwd als een antipatroon.

    Raadpleeg de procedures voor softwareontwikkeling van OE:03.

    Compromis: Complexiteit en kosten. Het gebruik van vertrouwde DevOps-hulpprogramma's kan kostenefficiënt zijn in termen van geld en vaardigheden. Het voegt echter de operationele last toe van het afzonderlijk beheren van elk hulpprogramma. Het is belangrijk om open te blijven voor nieuwe technologische innovaties die kunnen profiteren van uw workload.

  • Implementeer geleidelijk updates. Implementatie van updates voor een subset van klanten tegelijk, waarbij gebruikers worden verdeeld in logische groeperingen. Pas dezelfde rigor toe op configuratiewijzigingen, omdat ze het gedrag van code kunnen wijzigen en storingen kunnen veroorzaken. Volg een implementatieproces voor deze wijzigingen.

  • Een versiebeheerstrategie aannemen. Klanten toestaan hun toepassingsversie te kiezen, voegt flexibiliteit toe, maar maakt uw bewerkingen ingewikkeld. Stel duidelijke verwachtingen in voor het afschamen van oude versies en geef een overzicht van wat er gebeurt wanneer ze niet meer worden ondersteund.

  • Automatisering. Handmatige implementaties zijn gevoelig voor risico's vanwege menselijke fouten en gebrek aan consistentie. Zelfs als uw implementaties handmatig worden geactiveerd, moet uw implementatieproces zoveel mogelijk worden geautomatiseerd en moet er minimale menselijke tussenkomst nodig zijn. Bekijk de stappen van uw implementatieproces en hoe u ze het beste kunt automatiseren.

  • Test. Integreer testen in uw implementatieproces door het volgende uit te voeren:

    • Eenheidstests tijdens het bouwen van code
    • Integratietests na implementatie
    • Regelmatige prestatietests
    • Regelmatige beveiligings- en penetratietests

Bepaal welke acties moeten worden uitgevoerd als er tests in een willekeurige fase mislukken.

  • Mislukte implementaties. Plan implementatiefouten door de benodigde acties te overwegen en een strategie voor terugdraaien voor te bereiden.

  • Toegang tot klantomgevingen. Als u resources implementeert in klantomgevingen, begrijpt u hoe u updates in deze omgevingen kunt toepassen. Overweeg mogelijkheden die worden geboden door Azure Managed Applications, zoals de implementatie van updates voor toepassingen.

Ontwerpaanaanvelingen

Aanbeveling Voordeel
Gebruik gevestigde, bewezen DevOps-hulpprogramma's en processen voor het beheren van uw toepassingsimplementaties. Het ontwikkelen van uw eigen hulpprogramma's wordt in de meeste situaties beschouwd als een antipatroon.

Zie OE:03 Softwareontwikkelingsprocedures voor meer informatie
U kunt ervoor zorgen dat uw technische team effectief wordt geïmplementeerd door geen aangepaste, gebouwde hulpprogramma's te hoeven leren.
Informeer klanten proactief over toekomstige of voltooide implementaties. U kunt ervoor zorgen dat de juiste verwachtingen worden ingesteld bij uw klanten over wijzigingen die in uw toepassing worden aangebracht.
Gebruik veilige implementatieprocedures voor het implementeren van updates voor klantgroepen met behulp van strategieën zoals progressieve blootstelling, gezondheidsmodellen en andere. Begin met minder gevoelige of early adopter-klanten voordat u overstapt op belangrijkere klanten.
Zie Aanbevelingen voor veilige implementatieprocedures voor meer informatie.
Deze aanpak helpt bij het identificeren van problemen voordat ze van invloed zijn op alle klanten.
Behandel configuratie als code. U kunt de kans op downtime verminderen en een consistent proces gebruiken voor productiewijzigingen. Dit maakt gecentraliseerde operationele verantwoordelijkheden mogelijk, zoals het testen van wijzigingen en het geleidelijk implementeren van updates voor configuratie en code.
Definieer een wijzigingsbeheerproces en communiceer een versie-updatebeleid om ervoor te zorgen dat klanten weten wie updates, hun frequentie en voorwaarden activeert.

Als klanten hun toepassingsversie mogen kiezen, stelt u duidelijke richtlijnen in voor het afschaven van oude versies. Minimaliseer het aantal toepassingsversies dat in productie wordt uitgevoerd.
Het onderhouden van oudere versies veroorzaakt operationele inefficiëntie. Geef de benodigde controle voor uw klanten terwijl u overbelasting van uw team vermijdt door duidelijke verwachtingen en beleid in te stellen.
Vermijd het aanpassen van toepassingen voor één klant.

Ter ondersteuning van verschillende behoeften van klanten kunt u verschillende lagen van uw oplossing maken of functievlagmen gebruiken om specifieke functies voor bepaalde gebruikers in te schakelen.
Vermijd dubbelzinnigheid over welke functies worden geïmplementeerd in welke versie en verminder uw onderhoudslast.
Zorg voor een terugdraaiplan voor mislukte implementaties, inclusief criteria voor het activeren en de benodigde goedkeuringen. Met terugdraaiplannen kunt u ervoor zorgen dat u kunt herstellen van implementatiefouten, zelfs in onvoorziene omstandigheden.
Test uw toepassing regelmatig en in meerdere fasen in het softwareontwikkelingsproces. Neem een 'shift-left'-mindset aan en vangen bugs en afwijkingen vroeg in de levenscyclus. Voorkom dat kritieke fouten van invloed zijn op uw klanten.

Aanvullende bronnen

Multitenancy is een kernbedrijfsmethodologie voor het ontwerpen van SaaS-workloads. Deze artikelen bevatten meer informatie over het aannemen van DevOps-procedures:

Volgende stap

Meer informatie over overwegingen voor incidentbeheer voor het implementeren van processen en hulpprogramma's die ondersteuning bieden voor een SaaS-oplossing in Azure.