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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 :
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.