DevOps-Methoden für SaaS-Workloads in Azure
DevOps-Praktiken sind integraler Bestandteil der Verwaltung von Workloads in Azure, insbesondere für SaaS-Anwendungen. Wichtige Aspekte sind das Onboarding, das Offboarding und das Ändern von Kundeninstanzen. Diese Methoden optimieren nicht nur Vorgänge, sondern verbessern auch Skalierbarkeit und Zuverlässigkeit, wodurch die Chancen auf Ausfälle minimiert werden.
In diesem Artikel werden Entwurfsüberlegungen für eine effiziente Verwaltung des Kundenlebenszyklus und sichere Bereitstellungsmethoden beschrieben.
Verwalten von Kundenlebenszyklus
Das Verwalten von Kundenlebenszyklusereignissen ist für jede SaaS-Anwendung von entscheidender Bedeutung. In der Regel umfassen diese Ereignisse Folgendes:
- Onboarding: Wenn sich ein Kunde anmeldet.
- Ändern: Ändern der Instanz eines Kunden, z. B. Ändern des Preisniveaus.
- Offboarding: Wenn ein Kunde sein Konto storniert.
Möglicherweise treten zusätzliche Lebenszyklusereignisse auf. Beispielsweise können Sie Ihren Kunden erlauben, ihr Abonnement während der Aufbewahrung ihrer Daten für einen festgelegten Zeitraum anzuhalten und ihr Abonnement später fortzusetzen. Jedes Ereignis kann eindeutige Auswirkungen auf Ihre Anwendung haben.
In einigen Lösungen erfordert die Verwaltung des Kundenlebenszyklus möglicherweise nur das Erstellen oder Verwalten von Daten in einer Datenbanktabelle. Bei anderen Lösungen kann es erforderlich sein, die Bereitstellung von Azure-Infrastruktur, Anwendungscode und komplexerer Konfiguration zu koordinieren.
Die Lebenszyklusverwaltung ist eine Schlüsselverantwortung für die Steuerungsebene einer SaaS-Lösung. Zunächst kann Ihr Team diese Aktivitäten manuell behandeln, aber im Laufe der Zeit versuchen, mehr Funktionen in eine formalisierte Steuerungsebenenlösung oder -anwendung zu übertragen.
Überlegungen zum Entwurf
Konsistenz. Berücksichtigen Sie bei der Planung Ihrer Lifecycle-Management-Strategie die Komplexität von Aktionen, die für jedes Kundenlebenszyklusereignis erforderlich sind. Dies umfasst die Größe Ihrer Lösung, der Kundenbasis und des Organisationsaufwands. Stellen Sie sicher, dass Sie über ein klares Verständnis der erforderlichen Schritte für jedes Ereignis verfügen und in Steuerelemente investieren, um Konsistenz zu gewährleisten. Überprüfen und aktualisieren Sie Ihre Prozesse regelmäßig, um sicherzustellen, dass sie gültig bleiben, während Ihre Lösung weiterentwickelt wird.
Mandantmodell. Ihr Ansatz zur Behandlung von Kundenlebenszyklusereignissen hängt von Ihrem Mandantenmodell ab.
- Vollständig mehrinstanzenfähige Lösungen mit Infrastrukturressourcen. Das Onboarding oder Offboarding eines Kunden umfasst in der Regel das Aktualisieren einer Kundenliste und zugehöriger Daten im Datenspeicher Ihrer Anwendung.
- Dedizierte Ressourcen pro Kunde. Die Aufgaben umfassen in der Regel das Initiieren von Bereitstellungen in Azure, die Überwachung des Fortschritts und die Behandlung von Bereitstellungsfehlern, möglicherweise mit menschlichem Eingreifen.
- Vom Kunden bereitgestellte Ressourcen. Möglicherweise müssen Sie direkt mit dem Entwicklungsteam des Kunden für das Onboarding oder Offboarding zusammenarbeiten.
Ebenen. Berücksichtigen Sie Ihr Preismodell und die unterschiedlichen Infrastrukturanforderungen jeder Stufe, insbesondere, wenn Sie es Kunden ermöglichen, ihre SKU jederzeit frei zu ändern.
- Wenn Ihre SaaS-Lösung beispielsweise eine Kernanwendung und mehrere kostenpflichtige Add-On-Module enthält, stellen Sie sicher, dass die Ressourcen der Kern-App während des Onboardings bereitgestellt werden. Darüber hinaus ermöglichen Sie das dynamische Hinzufügen und Entfernen von Add-On-Modulen. Wenn ein Modul entfernt wird, entscheiden Sie, ob verknüpfte Daten gelöscht oder zur potenziellen Reaktivierung gespeichert werden sollen.
Entwurfsempfehlungen
Empfehlung | Vorteil |
---|---|
Dokumentieren Sie jeden Typ des Kundenlebenszyklusereignisses. Stellen Sie sicher, dass Sie schritt-für-Schritt-Details des Prozesses für jedes Ereignis erfassen. |
Indem Sie die Ereignisse verstehen, können Sie planen, wie Sie auf jedes Ereignis im Lösungsentwurf reagieren. Klare Anweisungen helfen menschlichen Operatoren dabei, Konsistenz zu gewährleisten und als Grundlage für zukünftige Automatisierung zu dienen. |
Kommunizieren Sie die gemeinsame Verantwortung zwischen Ihnen und Ihrem Kunden für jedes Lebenszyklusereignis. Kommunizieren Sie klar und früh darüber, welche Aktionen sie für die Kunden erwarten, um eine Lebenszyklusstufe abzuschließen. | Sie können potenzielle Fehler und Kunden-Frustrationen reduzieren, die durch Fehlkommunikation verursacht werden. |
Planen Sie die Kapazitätsplanung für jedes Lebenszyklusereignis. Planen Sie beispielsweise beim Onboarding eines neuen Kunden die Bereitstellung einer neuen Instanz Ihrer Anwendung, wenn vorhandene Instanzen über ausreichende Kapazität verfügen, um die zusätzliche Last zu verarbeiten. Weitere Informationen finden Sie unter Abrechnung und Kostenverwaltung für SaaS-Workloads in Azure. |
Sie können Ihre Fähigkeit unterstützen, einfacher zu skalieren und Bereitstellungsfehler zu vermeiden. |
Automatisieren Sie Ihre Lebenszyklusereignisse, wenn sie praktisch sind. Bei Lösungen mit geringem Volumen oder frühen Phasen reicht die manuelle Bereitstellung und Konfiguration möglicherweise aus, sollten aber dennoch Skripts verwenden, auch wenn ein Techniker sie jedes Mal ausführt, wenn ein Lebenszyklusereignis eintritt. Wenn Ihre Lösung reift, integrieren Sie diese Verantwortlichkeiten in eine Vollzugriffsebene, um den menschlichen Fehler zu reduzieren und eine höhere Skalierung zu unterstützen. |
Sie können das erhebliche Risiko von menschlichem Fehler verringern und eine höhere Skalierung unterstützen. |
Planen Der Strategie für die Infrastrukturverwaltung
Entwickeln Sie frühzeitig eine Strategie für die Bereitstellung, Wartung und Verwaltung der Azure-Infrastruktur. Während Sie Ihre SaaS skalieren, wächst die Anzahl der Ressourcen. Es ist einfacher, eine Managementstrategie von Anfang an zu verfolgen, als die Infrastruktur später abzugleichen, wenn sie zu komplex wird, um manuell zu verarbeiten.
Überlegungen zum Entwurf
Kundenressourcenverwaltung. Ihr Mandantenmodell wirkt sich auf die Ressourcenbereitstellung in SaaS-Lösungen aus. Sie können dedizierte Azure-Ressourcen für jeden Kunden bereitstellen oder Ressourcen für eine festgelegte Anzahl von Kunden freigeben. Alternativ können Sie einen einzigen Satz freigegebener Ressourcen verwenden und diese neu konfigurieren, während Sie neue Kunden integrieren. Allgemeine Ansätze für die Verwaltung des Lebenszyklus der Ressourcen:
- Behandeln Sie Ihre Kundenliste als Konfiguration der bereitzustellenden Ressourcen. Verwenden Sie zentralisierte Bereitstellungspipelinen, um diese Ressourcen bereitzustellen und zu konfigurieren.
- Behandeln Sie Ihre Kundenliste als Daten. Verwenden Sie eine Steuerungsebenenanwendung zum Bereitstellen und Konfigurieren der Infrastruktur.
Infrastrukturautomatisierung. Viele Organisationen beginnen mit der manuellen Bereitstellung der Cloudinfrastruktur über die Azure-Portal, was anfangs einfach ist, aber nicht gut skaliert wird. Planen Sie die Automatisierung Ihrer Infrastruktureinrichtung mithilfe von Infrastructure as Code (IaC)-Tools wie Bicep oder Terraform. Erstellen Sie für komplexere Anforderungen eine Steuerungsebene, die Azure Resource Manager-APIs direkt verwendet.
Infrastrukturzuordnung. Verfolgen Sie, welche Kunden in welcher Infrastruktur bereitgestellt werden. Die Nachverfolgung ist wichtig für die genaue Kapazitätsplanung und Kostenzuordnung. Sie können die Kundeninfrastruktur zentral in einer Kundendatenbank nachverfolgen oder für dedizierte Infrastruktur Azure-Ressourcenmetadaten mit kundenspezifischen Ressourcengruppen und Ressourcentags verwenden. Weitere Informationen finden Sie in der Ressourcenorganisation für SaaS-Workloads.
Entwurfsempfehlungen
Empfehlung | Vorteil |
---|---|
Erstellen Sie die Infrastrukturautomatisierung mithilfe von Bereitstellungspipelines, Skripts oder Vorlagen mit Tools, mit denen Ihr Team bereits vertraut ist. | Die Verwendung bekannter Tools reduziert das Risiko von Fehlern, da die Infrastrukturautomatisierung störend sein kann, wenn die Tools nicht verstanden werden. |
Stellen Sie Ihre Infrastruktur mit IaC bereit, sofern möglich. | Die manuelle Wartung der Infrastruktur wird riskanter und belastender, da die Menge der Infrastruktur wächst. |
Trennen Sie die Kerninfrastruktur von der Infrastruktur auf Kundenebene. | Verschiedene Arten von Infrastruktur weisen unterschiedliche Lebenszyklus- und Verwaltungsaktivitäten auf. Durch trennende Elemente können Sie jeden Satz unabhängig voneinander nach eigenem Zeitplan verwalten. |
Verwenden Sie azure Managed Applications, um vom Kunden bereitgestellte Ressourcen bereitzustellen und zu verwalten. | Azure Managed Applications bieten eine Reihe von Funktionen, mit denen Sie Ressourcen innerhalb des Azure-Abonnements eines Kunden bereitstellen und verwalten können. |
Planen von Anwendungsbereitstellungen
Aktualisieren Sie den Anwendungscode und die Konfiguration regelmäßig, um die Funktionalität zu verbessern. Kunden erwarten eine konsistente Betriebszeit während Updates und sichere Rollouts, um das Risiko von Ausfällen zu minimieren.
Überlegungen zum Entwurf
Standardisieren Sie Tools und Prozesse. Branchenbewährte DevOps-Tools sorgen für Konsistenz zwischen Funktionen und Reife in Prozessen für die Verwaltung Ihrer Anwendungsbereitstellungen. Die Entwicklung Eigener Tools gilt in den meisten Situationen als Antipattern.
Weitere Informationen finden Sie unter OE:03 Softwareentwicklungspraktiken.
Kompromiss: Komplexität und Kosten. Die Verwendung vertrauter DevOps-Tools kann kosteneffizient in Bezug auf Geld und Fähigkeiten sein. Sie fügt jedoch die betriebliche Belastung für die Verwaltung der einzelnen Tools hinzu. Es ist wichtig, offen für neue technologische Innovationen zu bleiben, die Ihrer Arbeitsauslastung zugute kommen könnten.
Stellen Sie Updates schrittweise bereit. Rollout von Updates für eine Teilmenge von Kunden zu einem Zeitpunkt, unterteilen Benutzer in logische Gruppierungen. Wenden Sie die gleiche Strenge auf Konfigurationsänderungen an, da sie das Codeverhalten ändern und Ausfälle verursachen können. Folgen Sie einem Bereitstellungsprozess für diese Änderungen.
Übernehmen Sie eine Versionsverwaltungsstrategie. Kunden können ihre Anwendungsversion auswählen, bietet flexibilität, erschwert aber Ihre Vorgänge. Legen Sie klare Erwartungen für das Veraltet von alten Versionen fest, und erläutern Sie, was geschieht, wenn sie nicht mehr unterstützt werden.
Automatisierung. Manuelle Bereitstellungen sind aufgrund menschlicher Fehler und mangelnder Konsistenz anfällig für Risiken. Auch wenn Ihre Bereitstellungen manuell ausgelöst werden, sollte Der Bereitstellungsprozess so weit wie möglich automatisiert werden und ein minimaler menschlicher Eingriff erforderlich sein. Berücksichtigen Sie die Schritte ihres Bereitstellungsprozesses und wie Sie diese am besten automatisieren können.
Tests durchführen Integrieren Sie Tests in Ihren Bereitstellungsprozess, indem Sie Folgendes ausführen:
- Komponententests während des Codebuilds
- Integrationstests nach der Bereitstellung
- Regelmäßige Leistungstests
- Regelmäßige Sicherheits- und Penetrationstests
Entscheiden Sie, ob Aktionen ausgeführt werden sollen, wenn tests zu einem beliebigen Zeitpunkt fehlschlagen.
Fehlgeschlagene Bereitstellungen. Planen Sie Bereitstellungsfehler, indem Sie erforderliche Aktionen in Betracht ziehen und eine Rollbackstrategie vorbereiten.
Zugriff auf Kundenumgebungen. Wenn Sie Ressourcen in Kundenumgebungen bereitstellen, verstehen Sie, wie Sie Updates in diesen Umgebungen anwenden können. Berücksichtigen Sie funktionen, die von Azure Managed Applications bereitgestellt werden, z . B. die Bereitstellung von Updates für Anwendungen.
Entwurfsempfehlungen
Empfehlung | Vorteil |
---|---|
Verwenden Sie etablierte, branchenspezifische DevOps-Tools und -Prozesse, um Ihre Anwendungsbereitstellungen zu verwalten. Die Entwicklung Eigener Tools gilt in den meisten Situationen als Antipattern. Weitere Informationen finden Sie unter OE:03 Softwareentwicklungsmethoden |
Sie können sicherstellen, dass Ihr Entwicklungsteam effektiv bereitgestellt wird, indem Sie keine benutzerdefinierten integrierten Tools erlernen müssen. |
Benachrichtigen Sie Kunden proaktiv über bevorstehende oder abgeschlossene Bereitstellungen. | Sie können sicherstellen, dass ihre Kunden die richtigen Erwartungen hinsichtlich der Änderungen an Ihrer Anwendung erfüllen. |
Übernehmen Sie sichere Bereitstellungsmethoden, die Updates für Kundengruppen bereitstellen, indem Sie Strategien wie progressive Exposition, Integritätsmodelle und andere verwenden. Beginnen Sie mit weniger sensiblen oder Early Adopter-Kunden, bevor Sie zu wichtigeren wechseln. Weitere Informationen finden Sie unter Empfehlungen für sichere Vorgehensweisen bei der Bereitstellung. |
Dieser Ansatz hilft dabei, Probleme zu erkennen, bevor sie sich auf alle Kunden auswirken. |
Behandeln Sie Konfiguration als Code. | Sie können die Wahrscheinlichkeit von Ausfallzeiten verringern und einen konsistenten Prozess für Produktionsänderungen übernehmen. Dies ermöglicht zentrale betriebliche Verantwortlichkeiten, z. B. Das Testen von Änderungen und das schrittweise Rollout von Updates für Konfiguration und Code. |
Definieren Sie einen Änderungsverwaltungsprozess und kommunizieren Sie eine Versionsaktualisierungsrichtlinie, um sicherzustellen, dass Kunden wissen, wer Updates, ihre Häufigkeit und Bedingungen auslöst. Wenn Kunden ihre Anwendungsversion auswählen dürfen, legen Sie klare Richtlinien für veraltete Versionen fest. Minimieren Sie die Anzahl der Anwendungsversionen, die in der Produktion ausgeführt werden. |
Die Aufrechterhaltung älterer Versionen führt zu einer betrieblichen Ineffizienz. Bieten Sie Ihren Kunden die erforderliche Kontrolle, ohne Ihr Team zu überlasten, indem Sie klare Erwartungen und Richtlinien festlegen. |
Vermeiden Sie das Anpassen von Anwendungen für einen einzelnen Kunden. Um unterschiedliche Kundenanforderungen zu unterstützen, können Sie entweder verschiedene Ebenen Ihrer Lösung erstellen oder Featurekennzeichnungen verwenden, um bestimmte Funktionen für bestimmte Benutzer zu aktivieren. |
Vermeiden Sie Mehrdeutigkeit darüber, welche Features in welcher Version bereitgestellt werden, und verringern Sie Ihre Wartungslast. |
Führen Sie einen Rollbackplan für fehlgeschlagene Bereitstellungen durch, einschließlich kriterien für das Auslösen und die erforderlichen Genehmigungen. | Rollbackpläne tragen dazu bei, dass Sie sich selbst unter unvorhergesehenen Umständen von Bereitstellungsfehlern erholen können. |
Testen Sie Ihre Anwendung regelmäßig und in mehreren Phasen des Softwareentwicklungsprozesses. Übernehmen Sie eine "Shift-left"-Denkweise, und fangen Sie Fehler und Abweichungen frühzeitig im Lebenszyklus an. | Vermeiden Sie kritische Fehler, die Sich auf Ihre Kunden auswirken. |
Zusätzliche Ressourcen
Multitenancy ist eine Kern-Geschäftsmethodik für das Entwerfen von SaaS-Workloads. Diese Artikel enthalten weitere Informationen zur Einführung von DevOps-Methoden:
- Architekturansätze für die Bereitstellung und Konfiguration mehrinstanzenfähiger Lösungen
- Überlegungen zum Aktualisieren einer Mehrinstanzenlösung
- Überlegungen zu mehrinstanzenfähigen Steuerungsebenen
- Architekturansätze für Steuerungsebenen in mandantenfähigen Lösungen
Nächster Schritt
Erfahren Sie mehr über Überlegungen zur Vorfallverwaltung für die Implementierung von Prozessen und Tools, die eine SaaS-Lösung in Azure unterstützen.