Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les pratiques DevOps sont intégrées à la gestion des charges de travail sur Azure, en particulier pour les applications SaaS (software as a service). Les principaux aspects de la gestion d’une charge de travail incluent l’intégration, le désengagement et la modification des instances client. Ces pratiques simplifient les opérations et améliorent la scalabilité et la fiabilité, ce qui réduit les risques de pannes.
Cet article décrit les considérations relatives à la conception pour une gestion efficace du cycle de vie des clients et des pratiques de déploiement sécurisées.
Gérer les cycles de vie des clients
La gestion des événements de cycle de vie des clients est cruciale pour n’importe quelle application SaaS. En règle générale, ces événements sont les suivants :
- Intégration : Quand un client s’inscrit.
- Altérant: Lorsque l’instance d’un client est modifiée, telle qu’une modification de son niveau tarifaire.
- Débordage : Lorsqu’un client annule son compte.
Vous pouvez rencontrer d’autres événements de cycle de vie. Par exemple, vous pouvez autoriser vos clients à suspendre leur abonnement tout en conservant leurs données pendant une période définie et reprendre leur abonnement ultérieurement. Chaque événement peut avoir des implications uniques pour votre application.
Dans certaines solutions, la gestion du cycle de vie des clients peut nécessiter uniquement la création ou la gestion de données dans une table de base de données. Pour d’autres solutions, il peut s’agir d’orchestrer le déploiement de l’infrastructure Azure, du code d’application et de la configuration plus complexe.
La gestion du cycle de vie est une responsabilité clé du plan de contrôle d’une solution SaaS. Au départ, votre équipe peut gérer ces activités manuellement. Mais au fil du temps, essayez de faire passer davantage de fonctionnalités dans une solution ou une application de plan de contrôle formalisée.
Considérations sur la conception
Cohérence. Lorsque vous planifiez votre stratégie de gestion du cycle de vie, tenez compte de la complexité des actions requises par chaque événement de cycle de vie du client. Ces actions incluent la taille de votre solution, de votre base de clients et de la surcharge organisationnelle. Avoir une compréhension claire des étapes nécessaires pour chaque événement et investir dans des contrôles afin de maintenir la cohérence. Passez régulièrement en revue et mettez à jour vos processus pour vous assurer qu’ils restent valides à mesure que votre solution évolue.
Modèle de location. Votre approche de la gestion des événements de cycle de vie des clients dépend de votre modèle de location.
Solutions entièrement multilocataires qui ont des ressources d’infrastructure. L’intégration ou la désactivation d’un client inclut généralement la mise à jour d’une liste de clients et des données associées dans le magasin de données de votre application.
Ressources dédiées par client. Les tâches incluent généralement le lancement de déploiements sur Azure, la surveillance de la progression et la gestion des échecs de déploiement, éventuellement avec une intervention humaine.
Ressources déployées par le client. Vous devrez peut-être interagir directement avec l’équipe d’ingénierie du client pour l’intégration ou le débordement.
Niveaux. Considérez votre modèle tarifaire et les besoins d’infrastructure différents de chaque niveau, en particulier si vous autorisez les clients à modifier librement leur référence SKU à tout moment. Par exemple, si votre solution SaaS inclut une application principale et plusieurs modules complémentaires payants, vérifiez que les ressources de l’application principale sont déployées lors de l’intégration. En outre, autorisez l’ajout dynamique et la suppression de modules complémentaires. Lorsqu’un module est supprimé, déterminez s’il faut supprimer les données associées ou les stocker pour une réactivation potentielle.
Recommandations de conception
| Recommandation | Avantage |
|---|---|
| Documentez chaque type d’événement de cycle de vie du client. Veillez à capturer les détails pas à pas du processus pour chaque événement. |
Vous pouvez planifier la façon de répondre à chaque événement dans votre conception de solution. Des instructions claires aident les opérateurs humains à maintenir la cohérence et à servir de base pour l’automatisation future. |
| Communiquez la responsabilité partagée entre vous et votre client pour chaque événement de cycle de vie. Communiquez clairement et rapidement sur les actions que vous attendez des clients afin d’effectuer une phase de cycle de vie. | Vous pouvez réduire les erreurs potentielles et la frustration des clients causées par une mauvaise communication. |
| Planifiez la capacité pour chaque événement de cycle de vie. Par exemple, lorsque vous intégrez un nouveau client, envisagez de déployer une nouvelle instance de votre application si les instances existantes ne disposent pas d’une capacité suffisante pour gérer la charge supplémentaire. Pour plus d’informations, consultez Facturation et gestion des coûts pour les charges de travail SaaS sur Azure. |
Vous pouvez effectuer une mise à l’échelle plus facilement et éviter les échecs de déploiement. |
| Automatisez vos événements de cycle de vie quand c’est pratique. Pour les solutions de faible volume ou de première étape, le déploiement manuel et la configuration peuvent être suffisants. Mais doit toujours utiliser des scripts, même si un ingénieur les exécute chaque fois qu’un événement de cycle de vie se produit. À mesure que votre solution mûrit, intégrez ces responsabilités dans un plan de contrôle total pour réduire les erreurs humaines et prendre en charge une plus grande échelle. |
Vous pouvez réduire le risque important d’erreur humaine et prendre en charge une plus grande échelle. |
Planifier votre stratégie de gestion de l’infrastructure
Développez une stratégie de déploiement, de maintenance et de gestion de l’infrastructure Azure dès le début. À mesure que vous mettez à l’échelle votre SaaS, le nombre de ressources augmente. Il est plus facile de suivre une stratégie de gestion dès le départ que de rapprocher l’infrastructure ultérieurement lorsqu’elle devient trop complexe à gérer manuellement.
Considérations sur la conception
Gestion des ressources client. Votre modèle de location affecte le déploiement de ressources dans les solutions SaaS. Vous pouvez déployer des ressources Azure dédiées pour chaque client ou partager des ressources entre un nombre défini de clients. Vous pouvez également utiliser un ensemble unique de ressources partagées et les reconfigurer lorsque vous intégrez de nouveaux clients. Tenez compte de ces approches classiques pour gérer le cycle de vie des ressources :
Traitez votre liste de clients comme une configuration des ressources à déployer. Utilisez des pipelines de déploiement centralisés pour déployer et configurer ces ressources.
Traitez votre liste de clients comme des données. Utilisez une application de plan de contrôle pour approvisionner et configurer l’infrastructure.
Automatisation de l’infrastructure. De nombreuses organisations commencent par déployer manuellement l’infrastructure cloud via le portail Azure. Cette stratégie est facile d’abord, mais ne s’adapte pas bien au fil du temps. Planifiez l’automatisation de votre configuration d’infrastructure à l’aide d’outils d’infrastructure en tant que code (IaC), tels que Bicep ou Terraform. Pour des exigences plus complexes, créez un plan de contrôle qui utilise directement les API Azure Resource Manager.
Attribution de l’infrastructure. Effectuez le suivi des clients déployés sur quelle infrastructure. Le suivi est important pour une planification précise de la capacité et de l’attribution des coûts. Vous pouvez suivre l’infrastructure client de manière centralisée dans une base de données client. Ou pour une infrastructure dédiée, utilisez des métadonnées de ressources Azure avec des groupes de ressources et des balises de ressources spécifiques au client. Pour plus d’informations, consultez l’organisation des ressources pour les charges de travail SaaS.
Recommandations de conception
| Recommandation | Avantage |
|---|---|
| Créez une automatisation de l’infrastructure à l’aide de pipelines de déploiement, de scripts ou de modèles avec des outils que votre équipe connaît déjà. | Les outils familiers réduisent le risque d’erreurs, car l’automatisation de l’infrastructure peut être perturbatrice si les outils ne sont pas compris. |
| Déployez votre infrastructure à l’aide de l’IaC si possible. | IaC permet de réduire la maintenance manuelle, ce qui devient plus risqué et plus fastidieux à mesure que la quantité d’infrastructure augmente. |
| Séparez l’infrastructure principale de l’infrastructure au niveau du client. | Différents types d’infrastructure ont des cycles de vie et des activités de gestion distincts. En les séparant, vous pouvez gérer chaque ensemble indépendamment selon sa propre planification. |
| Utilisez des applications managées Azure pour déployer et gérer des ressources déployées par le client. | Les applications managées Azure offrent une gamme de fonctionnalités que vous pouvez utiliser pour déployer et gérer des ressources au sein de l’abonnement Azure d’un client. |
Planifier les déploiements d’applications
Pour améliorer les fonctionnalités, mettez régulièrement à jour le code et la configuration de l’application. Les clients attendent une durée de fonctionnement cohérente pendant les mises à jour et les déploiements sécurisés afin de réduire le risque de pannes.
Considérations sur la conception
Normaliser les outils et les processus. Les outils DevOps éprouvés dans le secteur permettent de garantir la cohérence entre les fonctions et la maturité dans les processus de gestion de vos déploiements d’applications. Dans la plupart des cas, le développement de vos propres outils est considéré comme antimodèle. Pour plus d’informations, consultez les pratiques de développement de logiciels OE :03.
Compromis : complexité et coût. Les outils DevOps familiers peuvent être rentables en termes d’argent et de compétences. Toutefois, ils ajoutent le fardeau opérationnel de la gestion de chaque outil séparément. Il est important de rester ouvert aux nouvelles innovations technologiques qui pourraient bénéficier de votre charge de travail.
Déployez progressivement les mises à jour. Déployez les mises à jour aux clients en phases. Divisez les utilisateurs en groupes logiques et déployez les modifications sur un groupe à la fois. Appliquez la même rigueur aux modifications de configuration, car elles peuvent modifier le comportement du code et provoquer des pannes. Suivez un processus de déploiement pour ces modifications.
Adoptez une stratégie de contrôle de version. Lorsque les clients peuvent choisir leur version d’application, cela augmente la flexibilité, mais complique vos opérations. Définissez des attentes claires pour la dépréciation des anciennes versions et décrivez ce qui se passe lorsqu’elles ne sont plus prises en charge.
Implémenter l’automatisation. Les déploiements manuels sont sujets à des risques en raison d’une erreur humaine et d’un manque de cohérence. Même si vos déploiements sont déclenchés manuellement, vous devez automatiser votre processus de déploiement autant que possible et exiger une surveillance humaine minimale. Prenez en compte les étapes de votre processus de déploiement et comment les automatiser le mieux.
Intégrer des tests. Intégrez les tests à votre processus de déploiement en exécutant :
- Tests unitaires pendant la génération de code.
- Tests d’intégration après le déploiement.
- Tests de performances réguliers.
- Tests de sécurité et d’intrusion réguliers.
Déterminez un plan d’action si des tests échouent à un stade quelconque.
Échecs de déploiements. Planifiez les échecs de déploiement en prenant en compte les actions nécessaires et en préparant une stratégie de restauration.
Accès aux environnements clients. Si vous déployez des ressources dans des environnements clients, découvrez comment appliquer des mises à jour dans ces environnements. Tenez compte des fonctionnalités que fournit Les applications managées Azure, telles que le déploiement de mises à jour sur les applications.
Recommandations de conception
| Recommandation | Avantage |
|---|---|
| Utilisez des outils et des processus DevOps établis et éprouvés pour gérer vos déploiements d’applications. Dans la plupart des cas, le développement de vos propres outils est considéré comme antimodèle. Pour plus d’informations, consultez les pratiques de développement de logiciels OE :03. |
Cette stratégie peut vous aider à garantir que votre équipe d’ingénierie déploie efficacement des applications en n’ayant pas à apprendre les outils personnalisés. |
| Informez de manière proactive les clients des déploiements à venir ou terminés. | Cette stratégie peut vous aider à garantir que les attentes appropriées sont définies avec vos clients au sujet des modifications à venir apportées à votre application. |
| Adoptez des pratiques de déploiement sécurisées qui installent les mises à jour pour des groupes de clients en utilisant des stratégies telles que l’exposition progressive et les modèles de santé opérationnelle. Commencez par les clients moins sensibles ou les premiers utilisateurs avant de passer à une base de clients plus large. Pour en savoir plus, consultez Recommandations pour des pratiques de déploiement sécurisé. |
Cette stratégie peut vous aider à identifier les problèmes avant qu’ils n’affectent tous les clients. |
| Traitez la configuration sous forme de code. | Vous pouvez réduire la probabilité d’un temps d’arrêt et adopter un processus cohérent pour les changements de production. Cette approche centralise les responsabilités opérationnelles, telles que le test des modifications et le déploiement progressif des mises à jour de la configuration et du code. |
| Définissez un processus de gestion des modifications et communiquez une stratégie de mise à jour de version pour vous assurer que les clients savent qui déclenche les mises à jour, leur fréquence et leurs conditions. Si les clients peuvent choisir leur version d’application, définissez des instructions claires pour déprécier les anciennes versions. Réduisez le nombre de versions d’application qui s’exécutent en production. |
La gestion des versions antérieures entraîne une inefficacité opérationnelle. Fournissez le contrôle nécessaire à vos clients et évitez de surcharger votre équipe en définissant des attentes et des stratégies claires. |
| Évitez de personnaliser des applications pour un seul client. Pour prendre en charge différents besoins des clients, vous pouvez créer différents niveaux de votre solution ou utiliser des indicateurs de fonctionnalité pour activer des fonctionnalités spécifiques pour certains utilisateurs. |
Évitez toute ambiguïté quant aux fonctionnalités déployées dans quelle version et réduisez votre charge de maintenance. |
| Disposer d’un plan de restauration pour les déploiements ayant échoué, y compris les critères de déclenchement et d’approbations nécessaires. | Les plans de retour en arrière aident à garantir que vous pouvez corriger les erreurs de déploiement même dans des circonstances imprévues. |
| Testez régulièrement votre application et à plusieurs étapes du processus de développement logiciel. Adoptez une approche 'shift-left' et identifiez les bogues et les écarts tôt dans le cycle de vie. | Empêchez les erreurs critiques d’affecter vos clients. |
Autres ressources
L’architecture multilocataire est une méthodologie métier de base pour la conception de charges de travail SaaS. Les articles suivants fournissent plus d’informations sur l’adoption des pratiques DevOps :
- Approches architecturales pour le déploiement et la configuration de solutions multilocataires
- Considérations relatives à la mise à jour d’une solution mutualisée
- Considérations relatives aux plans de contrôle multilocataires
- Approches architecturales pour les plans de contrôle dans les solutions multilocataires
Étape suivante
Découvrez les considérations relatives à la gestion des incidents pour implémenter des processus et des outils qui prennent en charge une solution SaaS sur Azure.