Comprendre la CI hébergée dans le cloud

Le cloud computing a eu un impact énorme sur le développement de logiciels. Les applications et services cloud natifs, conçus pour tirer parti d'une infrastructure évolutive hébergée dans le cloud, sont de plus en plus courants.

La CI hébergée dans le cloud étend les avantages de l'infrastructure cloud au processus de build, de test et de déploiement de votre logiciel.

Si vous découvrez le CI/CD ou si vous utilisez une configuration sur site, cette page vous aidera à comprendre les avantages que peut vous apporter le CI/CD hébergé dans le cloud.

Explications sur la CI dans le cloud

L'intégration, la livraison et le déploiement continus permettent de livrer des logiciels à vos utilisateurs plus rapidement et de manière plus fiable. Chaque fois que vous apportez une modification à votre base de code, le CI/CD soumet votre logiciel à une série d'étapes automatisées pour vérifier qu'il fonctionne comme prévu. Ce système réduit le temps entre le développement et la publication et minimise le nombre de bugs en production, mais il offre également une multitude d'autres avantages.

Bien que le passage d'un processus manuel à un processus de CI/CD automatisé permette d'économiser du temps et des efforts, il accroît également la pression sur votre infrastructure. Au lieu de déployer une nouvelle version de votre produit dans des environnements de test et de staging toutes les quelques semaines ou quelques mois, le CI/CD vous permet de tester le dernier code plusieurs fois par jour.

Plus vous avez de personnes qui travaillent sur la même base de code et y apportent des modifications, plus vous soumettez souvent votre code à ce processus automatisé de build, de test et de déploiement. Si vous hébergez votre processus de CI/CD sur vos propres serveurs, le nombre de serveurs disponibles deviendra bientôt le facteur limitant. En période de forte demande (par exemple lorsque les équipes travaillent dur sur un correctif critique ou finalisent des fonctionnalités pour un lancement) vous constaterez peut-être que votre infrastructure de CI/CD interne devient un goulot d'étranglement.

Dans ces scénarios, l'hébergement de votre processus de CI/CD dans le cloud peut s'avérer utile. La CI dans le cloud peut désigner soit la configuration de vos pipelines pour qu'ils s'exécutent sur une infrastructure hébergée dans le cloud, soit l'utilisation d'un service de CI/CD cloud entièrement géré.

Les deux options vous permettent de profiter de l'évolutivité du cloud computing. Plutôt que d'essayer de trouver un équilibre entre une capacité suffisante pendant les périodes de forte demande et le coût des serveurs inactifs, vous pouvez faire évoluer votre batterie de builds selon vos besoins.

Les avantages de la CI hébergée dans le cloud

L'hébergement du CI/CD dans le cloud étend vos ressources à la demande et peut renforcer vos processus, réduire les coûts de maintenance et faciliter le développement natif dans le cloud.

Simplifiez votre workflow grâce à l'infrastructure en tant que code (IaC)

Pour une infrastructure hébergée dans le cloud, la configuration des environnements à l'aide de scripts est la norme. En codant la configuration de votre infrastructure, vous vous assurez que chaque environnement de build et de test est identique. Ce processus permet également de mettre davantage d'infrastructures en ligne lorsque vous en avez besoin.

Tout comme les logiciels en développement, l'infrastructure elle-même peut être soumise à un pipeline de CI/CD pour garantir son bon fonctionnement. Cette étape permet d'annuler facilement les modifications.

Tirez le meilleur parti de la conteneurisation

Si vous développez une application cloud native, il y a de fortes chances que vous utilisiez des conteneurs. Les conteneurs permettent d'empaqueter les dépendances environnementales et les détails de configuration avec le logiciel dans un même artefact ; celui-ci peut être déployé sur n'importe quelle machine avec le runtime du conteneur.

Des outils d'orchestration de conteneurs, tels que Kubernetes, ont été développés pour faciliter la gestion d'un grand nombre de conteneurs. Ils automatisent des tâches telles que les déploiements, la gestion et les changements d'échelle.

L'utilisation de conteneurs dans un workflow de CI/CD facilite le déploiement du dernier build aux différentes étapes du pipeline. L'artefact de build est une image de conteneur qui peut être déployée à l'identique dans chaque environnement de test avant d'être mis en production.

Dans un système de CI/CD cloud, les conteneurs utilisent efficacement les ressources informatiques et vous permettent d'exploiter les outils d'automatisation. Vous pouvez augmenter la capacité lorsque la demande est élevée, mais économiser sur les coûts en éliminant des conteneurs et en libérant l'infrastructure sous-jacente lorsqu'elle est plus faible.

Débarrassez-vous des problèmes de maintenance des serveurs

Si vous déplacez votre processus de CI/CD vers le cloud, votre batterie de builds est hébergée dans des machines virtuelles. Si vous avez besoin de plus de capacité, il vous suffit de le paramétrer : vous n'avez plus besoin de gérer l'approvisionnement, l'installation et la gestion du matériel physique.

Cela permet à votre équipe de se concentrer sur l'optimisation de vos processus de pipeline et leur sécurité. Le coût jouant à la fois sur la puissance de traitement et le temps, il vaut la peine de prendre le temps de paralléliser les tâches lorsque c'est possible : vos développeurs obtiendront des résultats plus rapidement qu'en utilisant moins de machines sur une période plus longue.

Gardez votre parcours de publication ouvert et prêt

Un processus de CI/CD est un atout essentiel pour toute équipe de développement logiciel. Il s'agit du mécanisme permettant de publier des mises à jour logicielles pour vos utilisateurs. L'hébergement de ce processus dans le cloud réduit la probabilité que l'accès à la version soit compromis par une panne inattendue. Bien que ce niveau de résilience puisse sembler un luxe en temps normal, cela devient rapidement une exigence lorsqu'un bug critique est découvert et qu'un correctif urgent doit être déployé.

Un processus de CI/CD hébergé dans le cloud peut également faciliter l'adoption d'une stratégie de déploiement bleu/vert, grâce à l'évolutivité des ressources cloud. Une approche bleu/vert vous permet de rediriger rapidement le trafic vers la version précédente en cas de problème en production. Ce processus garantit donc la continuité de votre service pendant que vous travaillez sur un correctif.

Considérations relatives à l'hébergement de la CI dans le cloud

Bien qu'un système de CI/CD cloud puisse offrir des avantages considérables sur le plan des coûts d'infrastructure, d'évolutivité et de fiabilité, il présente certains inconvénients et pièges potentiels à prendre en compte.

Architecture du système

Si votre produit est architecturé autour de conteneurs, l'hébergement cloud du CI/CD vous permet de l'utiliser pour rationaliser le déploiement dans vos environnements de test. Mais si vous travaillez avec une architecture monolithique, empaqueter votre logiciel dans des conteneurs peut s'avérer difficile.

Bien entendu, les conteneurs ne sont pas essentiels pour l'hébergement cloud. Vous pouvez toujours utiliser des machines virtuelles sur l'infrastructure d'un fournisseur de cloud pour exécuter des builds et fournir des environnements de préproduction cohérents pour les tests. Ceci étant, les VM consomment plus de ressources que les conteneurs et les environnements doivent être configurés séparément.

Connaissances et compétences

Si vous n'avez pas encore d'expertise en matière d'infrastructure en tant que code (IaC), les membres de votre équipe auront besoin de temps pour se former, ou vous devrez envisager d'apporter ces connaissances d'une autre façon.

Une expérience de travail avec les technologies cloud est toutefois une compétence souhaitable. Offrir à vos équipes la possibilité de développer ces compétences et d'utiliser les dernières technologies peut favoriser la rétention et l'embauche du personnel.

Coût

Dans le cloud, le temps, c'est de l'argent : vous ne voulez pas payer pour des ressources informatiques qui restent inutilisées. Pour qu'un hébergement cloud soit rentable, vous devez l'utiliser efficacement. Il faut donc exploiter pleinement les outils qui surveillent l'utilisation et libérent les instances inactives après un délai d'inactivité, ou mettre en place cette logique vous-même. Cette dernière option peut nécessiter des compétences que votre entreprise n'a pas encore, il vaut donc la peine d'étudier et de comparer les différentes options.

Sécurité

La sécurité a toujours été une préoccupation lorsqu'il s'agit d'héberger des données et des services dans le cloud. Pour certaines entreprises, le simple fait qu'un logiciel sensible se trouve sur le kit d'un tiers est un obstacle. Néanmoins, de nombreuses organisations utilisent désormais des cloud publics pour héberger à la fois leurs services en direct et leurs pipelines de déploiement, des référentiels de contrôle de code source aux serveurs de CI, en passant par les environnements de test.

L'identification des vecteurs d'attaque potentiels, l'intégration de protections dans votre processus de CI/CD et la mise en œuvre d'un contrôle d'accès sont des mesures essentielles pour atténuer les risques posés par les acteurs malveillants.

Approches hybrides

Bien que l'infrastructure en tant que code (IaC), les conteneurs et l'orchestration de conteneurs soient ancrés dans la technologie cloud, ils peuvent également être intégrés dans des configurations de CI/CD utilisant des clouds privés ou une infrastructure hybride, sur site et hébergée dans le cloud.

Vous pouvez par exemple choisir d'utiliser une infrastructure hébergée dans le cloud pour une partie de votre processus, comme l'exécution de tests de performance, mais de garder le reste sur site.

Cette approche hybride présente plusieurs avantages :

  • Si votre organisation envisage de passer à une infrastructure hébergée dans le cloud à l'avenir, l'adoption d'outils cloud natifs vous permettra d'acquérir une expertise par anticipation et de faciliter la transition.
  • Avec l'IaC, l'actualisation des environnements entre les exécutions de tests est beaucoup plus rapide, car il vous suffit d'exécuter un script.
  • La codification de la création d'environnements assure également la consistance, ce qui vous permet d'assurer la parité entre votre configuration de production et les environnements de pré-production, que ce soit pour la sécurité, les performances ou les tests d'interface utilisateur, ou les sandboxes pour les équipes de support et de vente.
  • En conservant les fichiers de configuration de l'infrastructure dans le contrôle de code source, l'équipe dispose d'une piste d'audit des modifications introduites (et du moment où elles ont été introduites) pour simplifier le débogage des problèmes environnementaux.

Comment TeamCity peut vous aider

Avec TeamCity , vous pouvez choisir exactement la part de votre processus de CI/CD que vous souhaitez exécuter dans le cloud.

TeamCity On-Premises vous offre le choix d'héberger votre serveur de CI et vos agents de build sur site ou dans le cloud. Que vous souhaitiez héberger toutes vos tâches de build, de test et de déploiement dans le cloud ou étendre automatiquement votre batterie de builds lorsque la demande augmente, les intégrations natives de TeamCity avec les principaux fournisseurs de cloud proposent toutes les fonctionnalités dont vous pouvez avoir besoin.

TeamCity Cloud propose un serveur de CI géré, afin que vous puissiez vous concentrer sur la simplification de votre processus de build, de test et de déploiement sans avoir d'infrastructure à entretenir. La possibilité d'utiliser à la fois des agents de build hébergés par JetBrains et vos propres machines de build, hébergées dans le cloud ou sur site, vous offre la liberté de créer une batterie de builds à votre convenance.

TeamCity Pipelines est conçu pour renforcer l'efficacité du CI/CD grâce à une approche flexible, native du cloud. Vous pouvez facilement créer, gérer et optimiser vos pipelines à l'aide d'un éditeur visuel par glisser-déposer ou de YAML, selon celui qui convient le mieux à votre workflow. Grâce à la prise en charge d'agents hébergés dans le cloud et autohébergés, TeamCity Pipelines vous permet d'évoluer en fonction de vos besoins, et de garantir une transparence et une automatisation optimales de vos processus de build, de test et de déploiement.