Partager via


Pratiques DevOps pour les charges de travail SaaS sur Azure

Les pratiques DevOps sont intégrées à la gestion des charges de travail sur Azure, en particulier pour les applications SaaS. Les aspects clés incluent l’intégration, le débordage et la modification des instances client. Ces pratiques simplifient non seulement les opérations, mais améliorent également 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 : lorsqu’un client s’inscrit.
  • Modification : modification de l’instance d’un client, telle que la modification de son niveau tarifaire.
  • Débordage : lorsqu’un client annule son compte.

Vous pouvez rencontrer des événements de cycle de vie supplémentaires. 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 simplement nécessiter la création ou la gestion de données dans une table de base de données. Pour d’autres solutions, il peut impliquer l’orchestration du 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 migrer davantage de fonctionnalités vers une solution ou une application de plan de contrôle formalisée.

Considérations sur la conception

  • Cohérence. Lors de la planification de votre stratégie de gestion du cycle de vie, tenez compte de la complexité des actions requises pour chaque événement de cycle de vie du client. Cela inclut la taille de votre solution, de votre base de clients et de la surcharge organisationnelle. Assurez-vous d’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 mutualisées avec des ressources d’infrastructure. L’intégration ou la désactivation d’un client implique 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 impliquent généralement le lancement de déploiements sur Azure, la surveillance de la progression et la gestion des défaillances 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.
En comprenant les événements, 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 au début 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, lors de l’intégration d’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 prendre en charge votre capacité à effectuer une mise à l’échelle plus facilement et à éviter les échecs de déploiement.
Automatisez vos événements de cycle de vie, le cas échéant.

Pour les solutions de faible volume ou de première étape, le déploiement manuel et la configuration peuvent être suffisants, mais doivent 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, les reconfigurer lorsque vous intégrez de nouveaux clients. Approches courantes pour la gestion du 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, ce qui est facile initialement, mais ne s’adapte pas correctement. Prévoyez d’automatiser la configuration de votre infrastructure à l’aide d’outils Infrastructure as 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, utiliser des métadonnées de ressources Azure avec des groupes de ressources et des étiquettes 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à. L’utilisation d’outils connus réduit 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, le cas échéant. La maintenance manuelle de l’infrastructure devient plus risquée et plus fastidieuse à 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 qui vous permettent de déployer et de gérer des ressources au sein de l’abonnement Azure d’un client.

Planifier les déploiements d’applications

Mettez régulièrement à jour le code et la configuration de l’application pour améliorer les fonctionnalités. 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 garantissent la cohérence entre les fonctions et la maturité dans les processus de gestion de vos déploiements d’applications. Le développement de vos propres outils est considéré comme antimodèle dans la plupart des situations.

    Reportez-vous aux pratiques de développement de logiciels OE :03.

    Compromis : complexité et coût. L’utilisation d’outils DevOps familiers peut être rentable en termes d’argent et de compétences. Toutefois, il ajoute 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 des mises à jour vers un sous-ensemble de clients à la fois, en divisant les utilisateurs en regroupements logiques. 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. Permettre aux clients de choisir leur version d’application ajoute de 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.

  • Automatisation. Les déploiements manuels sont sujets à des risques en raison d’erreurs humaines et d’un manque de cohérence. Même si vos déploiements sont déclenchés manuellement, votre processus de déploiement doit être automatisé autant que possible et nécessiter une intervention humaine minimale. Prenez en compte les étapes de votre processus de déploiement et comment les automatiser le mieux.

  • Effectuer 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 les actions à entreprendre 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. Envisagez les fonctionnalités fournies par les applications managées Azure, telles que le déploiement de mises à jour sur des 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. Le développement de vos propres outils est considéré comme antimodèle dans la plupart des situations.

Pour plus d’informations, consultez les pratiques de développement de logiciels OE :03
Vous pouvez vous assurer que votre équipe d’ingénierie déploie efficacement en n’ayant pas besoin d’apprendre des outils créés personnalisés.
Informez de manière proactive les clients des déploiements à venir ou terminés. Vous pouvez vous assurer que les attentes appropriées sont définies avec vos clients au sujet des modifications apportées à votre application.
Adoptez des pratiques de déploiement sécurisées qui déploient des mises à jour sur des groupes clients à l’aide de stratégies telles que l’exposition progressive, les modèles d’intégrité et d’autres. Commencez par les clients moins sensibles ou les premiers utilisateurs avant de passer à des clients plus importants.
Pour en savoir plus, consultez Recommandations pour des pratiques de déploiement sécurisé.
Cette approche permet d’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. Cela permet des responsabilités opérationnelles centralisées, 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 sont autorisés à 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 exécutées en production.
La gestion des versions antérieures entraîne une inefficacité opérationnelle. Fournissez le contrôle nécessaire à vos clients tout en évitant 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 restauration permettent de s’assurer que vous pouvez récupérer des 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 un état d’esprit « shift-left » et interceptez les bogues et les écarts au début du cycle de vie. Empêchez les erreurs critiques d’affecter vos clients.

Ressources supplémentaires

L’architecture multilocataire est une méthodologie métier de base pour la conception de charges de travail SaaS. Ces articles fournissent plus d’informations sur l’adoption des pratiques DevOps :

Étape suivante

Découvrez les considérations relatives à la gestion des incidents pour l’implémentation de processus et d’outils qui prennent en charge une solution SaaS sur Azure.