Ce document peut vous aider à planifier et concevoir la phase de déploiement de votre migration vers Google Cloud. Une fois que vous avez évalué votre environnement actuel, planifié la migration vers Google Cloud et créé votre base Google Cloud, vous pouvez déployer vos charges de travail.
Ce document fait partie d'une série d'articles sur la migration vers Google Cloud :
- Migrer vers Google Cloud : premiers pas
- Migrer vers Google Cloud : évaluer et découvrir vos charges de travail
- Migrer vers Google Cloud : planifier et établir vos fondations
- Migrer vers Google Cloud : transférer vos ensembles de données volumineux
- Migrer vers Google Cloud : déployer vos charges de travail (ce document)
- Migrer vers Google Cloud : migrer des déploiements manuels vers des déploiements automatisés en conteneurs
- Migrer vers Google Cloud : optimiser votre environnement
- Migrer vers Google Cloud : bonnes pratiques pour valider un plan de migration
- Migrer vers Google Cloud : réduire les coûts
Le diagramme suivant illustre le parcours de votre migration.
La phase de déploiement est la troisième phase de votre migration vers Google Cloud, au cours de laquelle vous concevez un processus de déploiement pour vos charges de travail.
Ce document est utile si vous planifiez une migration vers Google Cloud depuis un environnement sur site, un environnement d'hébergement privé ou un autre fournisseur cloud, ou si vous souhaitez évaluer une migration potentielle afin de découvrir en quoi elle pourrait consister.
Dans ce document, nous allons passer en revue les différents types de processus de déploiement, par ordre de flexibilité, d'automatisation et de complexité, ainsi que les critères de sélection d'une approche adaptée :
- Déployer manuellement
- Déployer avec des outils de gestion de la configuration
- Déployer à l'aide d'outils d'orchestration des conteneurs
- Déployer automatiquement
Avant de déployer vos charges de travail, vous devez planifier et concevoir votre phase de déploiement. Tout d'abord, vous devez évaluer les différents types de processus de déploiement que vous pouvez mettre en œuvre pour vos charges de travail. Lorsque vous évaluez les types de processus de déploiement, vous pouvez commencer par un processus simple et passer à un processus plus complexe par la suite. Cette approche peut entraîner des résultats plus rapides, mais également provoquer des frictions lors du passage à un processus plus avancé, car vous devez absorber la dette technique accumulée lors de l'utilisation du processus simplifié. Par exemple, si vous passez d'un déploiement entièrement manuel à une solution automatisée, vous devrez peut-être gérer les mises à niveau de votre pipeline de déploiement et de vos applications.
Bien qu'il soit possible de mettre en œuvre différents types de processus de déploiement en fonction des besoins de vos charges de travail, cette approche peut également accroître la complexité de cette phase. Si vous utilisez différents types de processus de déploiement, vous bénéficierez d'une plus grande flexibilité, mais vous aurez peut-être besoin d'expertises, d'outils et de ressources adaptés à chaque processus.
Déployer manuellement
Un déploiement entièrement manuel s'appuie sur un processus de provisionnement, de configuration et de déploiement qui n'est absolument pas automatisé. Bien qu'il existe des spécifications et des listes de contrôle pour chaque étape du processus, il n'existe aucune vérification ou application automatique de ces spécifications. Un processus manuel est sujet à l'erreur humaine, non reproductible, et ses performances sont limitées par le facteur humain.
Les processus de déploiement entièrement manuels peuvent être utiles, par exemple lorsque vous devez rapidement orchestrer un test dans un environnement de bac à sable. La configuration d'un processus structuré et automatisé pour un test qui ne dure que quelques minutes peut ralentir inutilement votre rythme, en particulier pendant les premières étapes de la migration, lorsque vous pouvez manquer d'expertise dans les outils et les pratiques de conception d'un processus automatisé.
Bien que cette limitation ne soit pas présente avec Google Cloud, sachez que les déploiements entièrement manuels peuvent être votre seule option lorsque vous exploitez des environnements bare metal n'offrant pas les API de gestion nécessaires. En pareil cas, vous ne pouvez pas mettre en œuvre un processus automatisé en raison de l'absence des interfaces nécessaires. Si vous exploitez une ancienne infrastructure virtualisée qui ne permet pas l'automatisation, vous devrez peut-être utiliser un processus entièrement manuel.
Nous vous recommandons d'éviter un déploiement entièrement manuel, sauf si vous n'avez pas d'autre option.
Vous pouvez mettre en œuvre un processus de provisionnement, de configuration et de déploiement entièrement manuel à l'aide d'outils tels que Google Cloud Console, Cloud Shell, les API Cloud et la Google Cloud CLI.
Déployer avec des outils de gestion de la configuration
Les outils de gestion de la configuration vous permettent de configurer un environnement de manière reproductible et contrôlée. Ces outils incluent un ensemble de plug-ins et de modules qui mettent en œuvre les opérations de configuration courantes de manière native. Ces outils vous permettent de vous concentrer sur l'état final que vous souhaitez atteindre pour votre environnement, plutôt que de mettre en œuvre la logique pour atteindre cet état final. Si les opérations incluses ne sont pas suffisantes, les outils de gestion de la configuration disposent souvent d'un système d'extensions que vous pouvez utiliser pour développer vos propres modules. Bien que ces extensions soient possibles, essayez d'utiliser les modules et plug-ins prédéfinis, le cas échéant, afin d'éviter des tâches de développement et de maintenance supplémentaires.
Vous utilisez des outils de gestion de la configuration lorsque vous devez configurer des environnements. Vous pouvez également les utiliser pour provisionner votre infrastructure et mettre en œuvre un processus de déploiement pour vos charges de travail. Les processus faisant appel à des outils de gestion de la configuration sont plus pertinents que les processus de provisionnement, de configuration et de déploiement entièrement manuels, car ils sont reproductibles, contrôlables et vérifiables. Cependant, il existe plusieurs inconvénients, car les outils de gestion de la configuration ne sont pas conçus pour les tâches de provisionnement ou de déploiement. Ils ne disposent généralement pas de fonctionnalités intégrées pour mettre en œuvre une logique de provisionnement élaborée, comme la détection et la gestion des différences entre l'état réel de votre infrastructure et l'état souhaité, ou pour des processus de déploiement complexes, comme les déploiements sans temps d'arrêt ou les déploiements bleu-vert. Vous pouvez mettre en œuvre les fonctionnalités manquantes à l'aide des points d'extension mentionnés précédemment. Ces extensions peuvent entraîner des efforts supplémentaires et accroître la complexité globale du processus de déploiement, car vous avez besoin de l'expertise nécessaire pour concevoir, développer et gérer une solution de déploiement personnalisée.
Vous pouvez mettre en œuvre ce type de provisionnement, de configuration et de déploiement à l'aide d'outils tels qu'Ansible, Chef, Puppet et SaltStack.
Déployer à l'aide d'outils d'orchestration de conteneurs
Si vous avez déjà investi ou envisagez d'investir dans la conteneurisation de vos charges de travail, vous pouvez utiliser un outil d'orchestration de conteneurs pour déployer vos charges de travail.
Un outil d'orchestration de conteneurs gère l'infrastructure qui sous-tend votre environnement et accepte un large éventail d'opérations de déploiement et de blocs fonctionnels permettant de mettre en œuvre la logique de déploiement. Vous pouvez les utiliser lorsque les outils existants ne suffisent pas. En utilisant ces outils, vous pouvez vous concentrer sur la rédaction de la logique de déploiement réelle en vous appuyant sur les mécanismes fournis. Vous ne perdez pas de temps à développer des outils équivalents.
Les outils d'orchestration de conteneurs fournissent également des abstractions permettant de généraliser vos processus de déploiement à différents environnements sous-jacents. Vous n'avez donc pas besoin de concevoir ni de mettre en œuvre des processus différents pour chacun de vos environnements. Par exemple, ces outils intègrent généralement la logique de scaling et de mise à niveau des déploiements. Vous n'avez donc pas besoin de mettre cela en œuvre vous-même. Vous pouvez même commencer à exploiter ces outils pour mettre en œuvre vos processus de déploiement dans votre environnement actuel. Vous pouvez ensuite les transférer vers l'environnement cible, étant donné que ces opérations de mise en œuvre sont par essence très proches. En adoptant ces outils très tôt, vous gagnez en expérience dans l'administration des environnements de conteneurs. Cette expérience est très utile pour votre migration vers Google Cloud.
Vous pouvez utiliser un outil d'orchestration de conteneurs si vos charges de travail sont déjà conteneurisées ou si vous avez prévu de le faire par la suite. Dans ce dernier cas, vous devez effectuer une analyse approfondie de chaque charge de travail pour déterminer les éléments suivants :
- Assurez-vous qu'une conteneurisation de la charge de travail est possible.
- Évaluez les avantages potentiels que vous pourriez obtenir en conteneurisant la charge de travail.
Si les risques l'emportent sur les avantages de la conteneurisation, vous ne devez utiliser un outil d'orchestration de conteneurs que si vos équipes s'y sont déjà engagées et si vous ne souhaitez pas gérer d'environnements hétérogènes.
Par exemple, les solutions d'entrepôt de données ne sont généralement pas déployées à l'aide d'outils d'orchestration de conteneurs, car elles ne sont pas conçues pour fonctionner dans des conteneurs éphémères.
Vous pouvez implémenter ce processus de déploiement à l'aide de Google Kubernetes Engine (GKE) sur Google Cloud. Si vous êtes intéressé par un environnement sans serveur, vous pouvez utiliser des outils tels que Cloud Run.
Déployer automatiquement
Quels que soient les outils de provisionnement, de configuration, de déploiement et d'orchestration utilisés, vous pouvez mettre en œuvre des processus de déploiement entièrement automatisés pour réduire les erreurs humaines et pour consolider, optimiser et standardiser les processus au sein de votre organisation. Si nécessaire, vous pouvez également insérer des étapes d'approbation manuelle dans le processus de déploiement. Cependant, toutes les étapes du déploiement restent entièrement automatisées.
Les étapes d'un pipeline de déploiement de bout en bout standard sont les suivantes :
- Revue de code.
- Intégration continue (CI).
- Production d'artefacts.
- Déploiement continu (CD), avec approbations manuelles à terme.
Vous pouvez automatiser toutes ces étapes indépendamment les unes des autres. Vous pouvez donc migrer progressivement vos processus de déploiement actuels vers une solution automatisée, ou mettre en œuvre un nouveau processus directement dans l'environnement cible. Pour que ce processus soit efficace, vous avez besoin de procédures de test et de validation à chaque étape du pipeline, pas seulement lors de la revue de code ou de l'étape d'intégration continue.
Pour chaque modification dans votre codebase, vous devez effectuer un examen approfondi afin d'évaluer la qualité de la modification. La plupart des outils de gestion de code source sont compatibles avec les révisions de code. Ils acceptent également la création et l'initialisation automatiques des révisions par examen de la zone de code source modifiée, à condition que vous ayez configuré les équipes responsables de chaque zone de votre codebase. Vous pouvez également exécuter des outils de vérification automatique sur le code source, tels que l'outil lint et les analyseurs statiques, afin d'appliquer des normes de cohérence et de qualité dans le codebase.
Une fois que vous avez examiné et intégré une modification dans le codebase, l'outil CI peut exécuter automatiquement des tests, évaluer les résultats, puis vous avertir de tout problème concernant la version actuelle. Vous pouvez ajouter de la valeur à cette étape en suivant un processus de développement piloté par les tests pour garantir une évaluation exhaustive des caractéristiques de chaque charge de travail.
Pour chaque version ayant passé les tests avec succès, vous pouvez automatiser la création des artefacts de déploiement. Ces artefacts représentent une version prête à déployer de vos charges de travail, avec les dernières modifications. Dans le cadre de la création d'artefacts, vous pouvez également effectuer une validation automatisée de l'artefact lui-même. Par exemple, vous pouvez configurer une analyse des vulnérabilités afin d'identifier les problèmes connus et n'autoriser le déploiement de l'artefact que si aucune faille n'est détectée.
Enfin, vous pouvez automatiser le déploiement de chaque artefact approuvé dans l'environnement cible. Si vous disposez de plusieurs environnements d'exécution, vous pouvez également mettre en œuvre une logique de déploiement unique pour chacun d'entre eux, en ajoutant si nécessaire des étapes d'approbation manuelle. Vous pouvez par exemple déployer automatiquement de nouvelles versions de vos charges de travail dans vos environnements de développement, d'assurance qualité et de préproduction, tout en continuant à exiger une révision et une approbation manuelles de votre équipe de contrôle de la production pour un déploiement dans votre environnement de production.
Bien qu'un processus de bout en bout entièrement automatisé soit l'une de vos meilleures options si vous avez besoin d'un processus automatisé, structuré, rationalisé et vérifiable, la mise en œuvre d'un tel processus n'est pas chose aisée. Avant d'opter pour ce type de processus, vous devez connaître clairement les avantages attendus et les coûts impliqués, et savoir si le niveau actuel des connaissances et de l'expertise de l'équipe est suffisant pour mettre en œuvre un processus de déploiement entièrement automatisé.
Vous pouvez mettre en œuvre des processus de déploiement entièrement automatisés avec Cloud Deploy.
Étapes suivantes
- Découvrez comment migrer vos processus de déploiement.
- Découvrez comment obtenir de l'aide pour vos migrations.
- Découvrez des architectures de référence, des schémas et des bonnes pratiques concernant Google Cloud. Consultez notre Cloud Architecture Center.