Les défis de la livraison continue et du déploiement de produits logiciels





L'article a été rédigé par Konstantin Bryukhanov, responsable du cours "CI / CD" . Dans ce document, Konstantin a révélé un certain nombre de points problématiques liés à la livraison du déploiement du code de produit logiciel dans les entreprises informatiques, et recueilli des recommandations parmi les meilleures pratiques internationales.






Dans l'exploitation informatique, l'orientation la plus demandée est précisément l'ajustement et la fourniture d'une livraison et d'un déploiement continus. Les technologies et les méthodologies évoluent constamment, les outils sont améliorés. Ainsi, les dernières exigences de livraison et de déploiement incluent la disponibilité et la continuité des tests de changement, la préparation et la mise en place d'un environnement de test pour l'équipe QA.



Les percées technologiques et les logiciels libres ont conduit à un changement significatif dans l'approche de l'organisation des processus CI / CD. La transition vers de nouveaux principes a grandement influencé la culture d'entreprise, les compétences recherchées des employés et les principes mêmes du travail dans les organisations, ce qui a conduit à des changements à grande échelle dans le monde du développement logiciel.



Les solutions cloud deviennent de plus en plus prioritaires. La fourniture continue de logiciels nécessite une collaboration efficace entre les équipes de développement, de test et d'exploitation, et le cloud est idéal pour cette collaboration.



Cependant, la phase de déploiement, effectuée dans une topologie distribuée complexe, est sujette aux erreurs et nécessite généralement un dépannage manuel. La phase de déploiement de produit d'un processus de livraison continue crée souvent des goulots d'étranglement et a un impact négatif sur l'efficacité du processus DevOps.



La livraison continue vous permet d'automatiser le test des modifications logicielles incrémentielles et le déploiement rapide des mises à jour de la manière la plus efficace et la plus sûre. Cette approche donne aux utilisateurs l'assurance que la dernière version du code est utilisée dans l'environnement de production et que les modifications apportées par les programmeurs peuvent atteindre les clients en quelques heures, voire quelques minutes.



Considérons le scénario le plus courant pour implémenter CI / CD dans un projet:



  1. L'équipe de développement publie une nouvelle version du produit (nouvelle fonctionnalité ou correction de bogues de la version précédente).
  2. Le service d'intégration continue (CI) valide le nouveau code avec une série de tests qui incluent plusieurs niveaux de test, tels que des tests de syntaxe, d'unité et de régression.
  3. , (CD).
  4. (, ) , (staging), , .
  5. stage- CI/CD , .
  6. .




Ce scénario est le plus général et couvre la plupart des besoins des équipes de développement et d'exploitation, mais présente encore quelques problèmes , par exemple:



  1. Remplacement des fichiers . Souvent, vous devez mettre à jour ou remplacer les fichiers de configuration ou régénérer du contenu statique. Dans ce cas, les utilisateurs peuvent recevoir des erreurs jusqu'à ce que le trafic passe de l'ancienne version du logiciel à la nouvelle. Si le déploiement échoue, il existe un risque d'incompatibilité de fichiers.
  2. . , , . . , - , - .
  3. . . , , .. . , - , , .. .




Il convient de noter que les problèmes énumérés ci-dessus peuvent survenir même dans un environnement quasi idéal, mais l'une des principales difficultés de mise en œuvre de la méthodologie DevOps est qu'il n'y a pas d'image unique de ce à quoi devrait ressembler le processus de livraison continue et de déploiement de produit. De nombreuses sociétés informatiques connaissent trop peu le DevOps, parfois elles ne comprennent pas du tout cette méthodologie, tandis que d'autres ont déjà des solutions historiques, sur lesquelles de nouveaux processus doivent être construits. Compte tenu des exigences élevées en matière de qualifications des spécialistes Devops et de leur pénurie sur le marché du travail, l'employeur est souvent contraint d'utiliser les ressources dont il dispose déjà et de confier des tâches Devops à des ingénieurs novices. En conséquence, il y a encore plus de points faibles dans le système.



Lors de l'utilisation de CI / CD sans une compréhension correcte de la méthodologie, sans une approche analytique de la construction de l'infrastructure et des méthodes de livraison du code, les problèmes suivants se posent:



1. Facteur humain . Le premier et le plus important risque est lié aux facteurs humains. Imaginons une situation où il est nécessaire de configurer plusieurs serveurs supplémentaires similaires aux serveurs existants. Si le spécialiste qui a effectué les installations ou réglages précédents est actuellement indisponible pour une raison quelconque (malade, démission, etc.) et n'a pas préparé d'instructions détaillées, la situation devient beaucoup plus compliquée. Dans ce cas, chaque nouveau spécialiste doit étudier l'intégralité du processus de configuration du serveur, alors qu'il n'a aucune marge d'erreur. Et de plus, il est impossible d'estimer avec précision le temps qu'il faudra pour mettre en place et garantir son succès.



Cela inclut également les risques liés au fait que l'auteur de la méthode a commis une erreur, oublié de couvrir les processus avec des tests, ou simplement n'a pas pris en compte quelque chose, et son successeur ne l'a pas remarqué.



Il faut également se rappeler que les entreprises développent souvent plusieurs projets, et le département des opérations informatiques en est généralement un, et un ingénieur des opérations sert plusieurs projets. S'il n'y a pas de schéma et de concept unique, alors les processus des différentes équipes seront construits de différentes manières, ce qui compliquera considérablement le développement ultérieur de Devops dans l'entreprise et établira un seuil élevé pour l'entrée d'un ingénieur d'exploitation dans un autre projet, où des processus sont déjà utilisés qui sont différents de ceux avec lesquels il a travaillé. plus tôt.



2. Scénarios non idempotents... L'idempotence est un attribut essentiel des scénarios de livraison continue et de déploiement de code, en particulier dans les déploiements d'infrastructure. L'ingénieur doit être sûr que chaque fois que les scripts sont exécutés, le résultat sera uniquement garanti, attendu et inchangé lors de la relecture du même script. Souvent, lors de la mise en œuvre de Devops dans une entreprise, les ingénieurs essaient de développer une solution métier et peuvent ne pas prendre en compte l'idempotence ou tout simplement ne pas connaître cette exigence. Dans ce cas, l'entreprise reçoit une bombe à retardement. il est possible de livrer du code inattendu aux installations de production. Par exemple, si quelqu'un a mis à jour un module CMS pour un projet, et a ainsi influencé d'autres, là où cela n'est pas prévu.



3. Stockage des données sensibles et organisation des accès. L'un des points les plus importants de l'approche Devops pour stocker des données secrètes, restreindre les droits, organiser l'accès au réseau et aux utilisateurs. Jusqu'à présent, il n'existe pas de pratiques et d'outils uniformes acceptés pour résoudre ce problème et les ingénieurs doivent à chaque fois mener des recherches, en fonction de l'organisation actuelle de l'infrastructure et des méthodes adoptées pour restreindre l'accès. Pour cette raison, la mise en œuvre de la méthodologie Devops dans une entreprise est compliquée par le fait qu'il est impossible de trouver sans équivoque une solution à votre cas particulier, et l'utilisation des pratiques d'autres personnes ne garantit pas toujours la sécurité.



4. Modèle de budgétisation défini , plus adapté à la méthodologie Waterfall.



5. Exigences de sécurité élevées.Par conséquent, il est impossible de placer l'infrastructure des projets informatiques nationaux dans la zone de responsabilité d'entreprises commerciales étrangères, par exemple Amazon, Microsoft.



6. Grande quantité de «code hérité», «infrastructure héritée» qui doit être maintenue. La nécessité d'une intégration avec un grand nombre de systèmes hérités.



Ainsi, le processus de construction de Devops dans une entreprise peut s'accompagner d'un certain nombre de problèmes et ne pas toujours résoudre les problèmes pour lesquels il a été créé.



La première étape importante consiste à abandonner la relation aux serveurs en tant qu'élément d'infrastructure unique et difficile à personnaliser., transition de la configuration manuelle du serveur à la gestion d'infrastructure automatisée et centralisée. Le processus de configuration de chaque serveur doit être décrit sous la forme d'une configuration facile à lire, modifiable et prête à être réutilisée en toute sécurité, fournissant un résultat garanti sans ambiguïté. Des exemples de systèmes d'orchestrateur industriels sont Chef ou Ansible. Ces systèmes vous permettent de gérer un grand nombre de serveurs avec des coûts minimes.



La prochaine étape importante consiste à appliquer des tests automatiséspour couvrir autant que possible les fonctionnalités du code en cours de développement (à la fois logiciel et infrastructure). En d'autres termes, avec une infrastructure déployée, mais sans tests automatisés, le goulot d'étranglement du processus de développement sera la vérification rapide des fonctionnalités. L'automatisation du processus de test doit commencer par l'écriture réelle du code logiciel (test unitaire), l'application des tests primaires sur le serveur responsable de la création du logiciel et un test de la configuration du serveur. Cela réduira la charge de travail de l'équipe d'assurance qualité des logiciels et réduira considérablement le temps de passage des logiciels dans le pipeline.



La dernière étape logique est la collecte et l'analyse centralisées des fichiers journaux de tous les serveurspour une notification rapide de toutes les parties prenantes et une surveillance proactive de l'état de l'infrastructure dans son ensemble.



Les instructions ci-dessus vous aideront à créer une infrastructure résiliente et évolutive qui peut gérer un processus de développement intensif. La mise en œuvre de DevOps nécessite l'implication de tous dans le processus, du test et du développement aux managers et aux opérations. À chaque étape, une analyse rétrospective constante du processus est nécessaire, car à la suite d'erreurs aléatoires lors du changement de configuration, les systèmes cessent complètement de fonctionner. La télémétrie doit être améliorée pour mieux détecter les erreurs et les récupérer, ainsi que pour protéger le pipeline de déploiement et atteindre les objectifs de changement de gestion. Cela vous permettra de recevoir un soutien maximal de la direction dans la mise en œuvre des initiatives DevOps, de créer un environnement de travail plus vivant et plus convivial,afin que chaque participant puisse apprendre tout au long du temps - cela aidera non seulement chaque artiste à atteindre ses objectifs, mais conduira également l'organisation au succès.



En 3 mois sur notre cours en ligne "CI / CD", vous développerez une compréhension de l'architecture des fournisseurs de cloud, apprendrez à automatiser l'analyse de code et à rechercher des vulnérabilités, et apprendrez à personnaliser les processus de construction, de test et d'installation d'une application des trois plus grands fournisseurs . Le programme est conçu pour des spécialistes ayant une expérience en administration - un test d'entrée spécial vous aidera à savoir si vous avez suffisamment de préparation pour la formation.






Lire la suite:






All Articles