Dela via


DevOps-metoder för SaaS-arbetsbelastningar i Azure

DevOps-metoder är en viktig del i hanteringen av arbetsbelastningar i Azure, särskilt för SaaS-program. Viktiga aspekter är registrering, avregistrering och ändring av kundinstanser. Dessa metoder effektiviserar inte bara driften utan förbättrar även skalbarheten och tillförlitligheten, vilket minimerar risken för avbrott.

I den här artikeln beskrivs designöverväganden för effektiv livscykelhantering och säkra distributionsmetoder.

Hantera kundlivscykler

Att hantera kundlivscykelhändelser är avgörande för alla SaaS-program. Dessa händelser omfattar vanligtvis:

  • Registrering: När en kund registrerar sig.
  • Ändra: Ändra en kunds instans, till exempel ändra prisnivån.
  • Avregistrering: När en kund avbryter sitt konto.

Du kan stöta på ytterligare livscykelhändelser. Du kan till exempel tillåta att dina kunder pausar sin prenumeration samtidigt som de behåller sina data under en viss period och återupptar sin prenumeration senare. Varje händelse kan få unika konsekvenser för ditt program.

I vissa lösningar kan kundens livscykelhantering bara kräva att du skapar eller hanterar data i en databastabell. För andra lösningar kan det innebära att orkestrera distributionen av Azure-infrastruktur, programkod och mer komplex konfiguration.

Livscykelhantering är ett viktigt ansvar för en SaaS-lösnings kontrollplan. Till en början kan ditt team hantera dessa aktiviteter manuellt, men med tiden kan du försöka överföra fler funktioner till en formaliserad kontrollplanslösning eller ett program.

Utformningsbeaktanden

  • Konsekvens. När du planerar din strategi för livscykelhantering bör du tänka på komplexiteten i de åtgärder som krävs för varje kunds livscykelhändelse. Detta omfattar storleken på din lösning, kundbas och organisationsomkostnader. Se till att du har en tydlig förståelse för nödvändiga steg för varje händelse och investera i kontroller för att upprätthålla konsekvens. Granska och uppdatera dina processer regelbundet för att säkerställa att de är giltiga allt eftersom din lösning utvecklas.

  • Innehavarmodell. Din metod för att hantera kundlivscykelhändelser beror på din innehavarmodell.

    • Helt fleraktiva lösningar med infrastrukturresurser. Registrering eller avregistrering av en kund innebär vanligtvis att uppdatera en kundlista och associerade data i programmets datalager.
    • Dedikerade resurser per kund. Uppgifterna skulle vanligtvis innebära att initiera distributioner till Azure, övervaka förloppet och hantera distributionsfel, eventuellt med mänsklig inblandning.
    • Kunddistribuerade resurser. Du kan behöva interagera direkt med kundens tekniska team för registrering eller avregistrering.
  • Nivåer. Tänk på din prismodell och de olika infrastrukturbehoven för varje nivå, särskilt om du tillåter att kunderna ändrar sin SKU fritt när som helst.

    • Om din SaaS-lösning till exempel innehåller ett kärnprogram och flera betalda tilläggsmoduler kontrollerar du att kärnappens resurser distribueras under registreringen. Dessutom kan du tillåta dynamisk addition och borttagning av tilläggsmoduler. När en modul tas bort bestämmer du om du vill ta bort associerade data eller lagra dem för potentiell återaktivering.

Designrekommendationer

Rekommendation Förmån
Dokumentera varje typ av kundlivscykelhändelse.

Se till att du samlar in stegvis information om processen för varje händelse.
Genom att förstå händelserna kan du planera hur du ska svara på varje händelse i din lösningsdesign.
Tydliga instruktioner hjälper mänskliga operatörer att upprätthålla konsekvens och fungera som grunden för framtida automatisering.
Förmedla det delade ansvaret mellan dig och din kund för varje livscykelhändelse. Kommunicera tydligt och tidigt om vilka åtgärder du förväntar dig att kunderna ska göra för att slutföra en livscykelfas. Du kan minska potentiella fel och kund frustration som orsakas av felkommunikation.
Planera kapaciteten för varje livscykelhändelse.

När du till exempel registrerar en ny kund planerar du att distribuera en ny instans av ditt program om befintliga instanser saknar tillräcklig kapacitet för att hantera den extra belastningen.

Mer information finns i Fakturering och kostnadshantering för SaaS-arbetsbelastningar i Azure.
Du kan underlätta skalning och undvika distributionsfel.
Automatisera dina livscykelhändelser när det är praktiskt möjligt.

För lösningar med låg volym eller tidigt stadium kan manuell distribution och konfiguration vara tillräckliga, men bör fortfarande använda skript, även om en tekniker kör dem varje gång en livscykelhändelse inträffar.

När din lösning mognar integrerar du dessa ansvarsområden i ett fullständigt kontrollplan för att minska mänskliga fel och stödja högre skala.
Du kan minska den betydande risken för mänskliga fel och stödja högre skala.

Planera din strategi för infrastrukturhantering

Utveckla en strategi för att distribuera, underhålla och hantera Azure-infrastruktur tidigt. När du skalar din SaaS växer antalet resurser. Det är enklare att följa en hanteringsstrategi från början än att stämma av infrastrukturen senare när det blir för komplext att hantera manuellt.

Utformningsbeaktanden

  • Kundresurshantering. Din innehavarmodell påverkar resursdistributionen i SaaS-lösningar. Du kan distribuera dedikerade Azure-resurser för varje kund eller dela resurser mellan ett visst antal kunder. Du kan också använda en enda uppsättning delade resurser och konfigurera om dem när du registrerar nya kunder. Vanliga metoder för att hantera resursernas livscykel:

    • Behandla din kundlista som en konfiguration av de resurser som ska distribueras. Använd centraliserade distributionspipelines för att distribuera och konfigurera dessa resurser.
    • Behandla din kundlista som data. Använd ett kontrollplansprogram för att etablera och konfigurera infrastrukturen.
  • Infrastrukturautomatisering. Många organisationer börjar med att distribuera molninfrastruktur manuellt via Azure Portal, vilket är enkelt till en början men inte skalar bra. Planera för att automatisera din infrastrukturkonfiguration med hjälp av IaC-verktyg (Infrastruktur som kod) som Bicep eller Terraform. För mer komplexa krav skapar du ett kontrollplan som använder Azure Resource Manager-API:er direkt.

  • Infrastrukturtillskrivning. Håll reda på vilka kunder som distribueras på vilken infrastruktur. Spårning är viktigt för korrekt kapacitetsplanering och kostnadsattribution. Du kan spåra kundens infrastruktur centralt i en kunddatabas eller för dedikerad infrastruktur använda Azure-resursmetadata med kundspecifika resursgrupper och resurstaggar. Mer information finns i Resursorganisation för SaaS-arbetsbelastningar.

Designrekommendationer

Rekommendation Förmån
Skapa infrastrukturautomatisering med hjälp av distributionspipelines, skript eller mallar med verktyg som ditt team redan är bekant med. Att använda kända verktyg minskar risken för fel, eftersom infrastrukturautomation kan vara störande om verktygen inte förstås.
Distribuera infrastrukturen med hjälp av IaC där det är möjligt. Manuellt underhåll av infrastrukturen blir mer riskabelt och betungande när mängden infrastruktur växer.
Separera kärninfrastrukturen från infrastrukturen på kundnivå. Olika typer av infrastruktur har olika livscykeler och hanteringsaktiviteter. Genom att separera dem kan du hantera varje uppsättning separat enligt sitt eget schema.
Använd Azure Managed Applications för att distribuera och hantera kunddistribuerade resurser. Azure Managed Applications tillhandahåller en mängd funktioner som gör att du kan distribuera och hantera resurser i en kunds Azure-prenumeration.

Planera för programdistributioner

Uppdatera programkoden och konfigurationen regelbundet för att förbättra funktionerna. Kunderna förväntar sig konsekvent drifttid under uppdateringar och säkra distributioner för att minimera risken för avbrott.

Utformningsbeaktanden

  • Standardisera verktyg och processer. Branschbeprövade DevOps-verktyg säkerställer konsekvens mellan funktioner och mognad i processer för att hantera dina programdistributioner. Att utveckla egna verktyg anses vara ett antimönster i de flesta situationer.

    Se OE:03 Metoder för programvaruutveckling.

    Kompromiss: Komplexitet och kostnad. Att använda välbekanta DevOps-verktyg kan vara kostnadseffektivt när det gäller pengar och färdigheter. Den lägger dock den operativa bördan för att hantera varje verktyg separat. Det är viktigt att vara öppen för nya tekniska innovationer som kan gynna din arbetsbelastning.

  • Distribuera uppdateringar progressivt. Distribuera uppdateringar till en delmängd kunder i taget och dela upp användare i logiska grupper. Använd samma stränghet för konfigurationsändringar eftersom de kan ändra kodbeteendet och orsaka avbrott. Följ en distributionsprocess för dessa ändringar.

  • Anta en versionsstrategi. Att låta kunderna välja sin programversion ger flexibilitet men komplicerar din verksamhet. Ange tydliga förväntningar på inaktuella gamla versioner och beskriv vad som händer när de inte längre stöds.

  • Automatisering. Manuella distributioner är utsatta för risker på grund av mänskliga fel och brist på konsekvens. Även om dina distributioner utlöses manuellt bör distributionsprocessen automatiseras så mycket som möjligt och bör kräva minimal mänsklig inblandning. Överväg stegen i distributionsprocessen och hur du bäst automatiserar dem.

  • Test. Integrera testning i distributionsprocessen genom att köra:

    • Enhetstester under kodversion
    • Integreringstester efter distribution
    • Regelbundna prestandatester
    • Regelbundna säkerhets- och intrångstester

Besluta om åtgärder som ska utföras om några tester misslyckas i något skede.

  • Misslyckade distributioner. Planera för distributionsfel genom att överväga nödvändiga åtgärder och förbereda en återställningsstrategi.

  • Åtkomst till kundmiljöer. Om du distribuerar resurser till kundmiljöer kan du förstå hur du kan tillämpa uppdateringar i dessa miljöer. Överväg funktioner som tillhandahålls av Azure Managed Applications, till exempel distribution av uppdateringar till program.

Designrekommendationer

Rekommendation Förmån
Använd etablerade, branschbeprövade DevOps-verktyg och processer för att hantera dina programdistributioner. Att utveckla egna verktyg anses vara ett antimönster i de flesta situationer.

Mer information finns i OE:03 Software development practices (Utvecklingsmetoder för OE:03-programvara)
Du kan se till att ditt ingenjörsteam distribuerar effektivt genom att inte behöva lära sig anpassade verktyg.
Meddela kunderna proaktivt om kommande eller slutförda distributioner. Du kan se till att rätt förväntningar ställs in hos dina kunder om ändringar som kommer till ditt program.
Anta säkra distributionsmetoder som distribuerar uppdateringar till kundgrupper med hjälp av strategier som progressiv exponering, hälsomodeller och andra. Börja med mindre känsliga eller tidiga användare innan du flyttar till viktigare kunder.
Mer information finns i Rekommendationer för säkra distributionsmetoder.
Den här metoden hjälper dig att identifiera problem innan de påverkar alla kunder.
Hantera konfiguration som kod. Du kan minska sannolikheten för stilleståndstid och införa en konsekvent process för produktionsändringar. Detta möjliggör centraliserat driftsansvar, till exempel testning av ändringar och stegvis distribution av uppdateringar av konfiguration och kod.
Definiera en ändringshanteringsprocess och kommunicera en versionsuppdateringsprincip för att se till att kunderna vet vem som utlöser uppdateringar, deras frekvens och villkor.

Om kunderna får välja sin programversion anger du tydliga riktlinjer för inaktuella gamla versioner. Minimera antalet programversioner som körs i produktion.
Att underhålla äldre versioner orsakar driftseffektivitet. Ge dina kunder nödvändig kontroll samtidigt som du undviker att överbelasta ditt team genom att ange tydliga förväntningar och principer.
Undvik att anpassa program för en enskild kund.

För att stödja olika kundbehov kan du antingen skapa olika nivåer av din lösning eller använda funktionsflaggor för att aktivera specifika funktioner för vissa användare.
Undvik tvetydigheter om vilka funktioner som distribueras till vilken version och minska underhållsbelastningen.
Ha en återställningsplan för misslyckade distributioner, inklusive kriterier för utlösande och nödvändiga godkännanden. Återställningsplaner hjälper dig att se till att du kan återställa från distributionsfel även under oförutsedda omständigheter.
Testa ditt program regelbundet och i flera steg i programutvecklingsprocessen. Anta ett "skift-vänster"-tänkesätt och fånga buggar och avvikelser tidigt i livscykeln. Förhindra att kritiska fel påverkar dina kunder.

Ytterligare resurser

Multitenancy är en viktig affärsmetod för att utforma SaaS-arbetsbelastningar. De här artiklarna innehåller mer information om hur du använder DevOps-metoder:

Gå vidare

Lär dig mer om incidenthanteringsöverväganden för implementering av processer och verktyg som stöder en SaaS-lösning i Azure.