Notre quotidien est de plus en plus rythmé par des applications, que ce soit pour nos processus dématérialisés sur l’internet grand public (shopping, démarches administratives) ou au sein des infrastructures d’entreprise (intranet, workflows métiers), qu’ils soient accessibles depuis des ordinateurs, des tablettes ou des téléphones. Parallèlement, si ces services apportent une valeur non négligeable dans un environnement ultra-concurrentiel, ils sont aussi la cible d’organisations malveillantes de manière croissante, tout en étant devenus si incontournables que la moindre indisponibilité parasite l’activité de multiples acteurs de notre économie interconnectée.
La bonne gestion du cycle de vie des applications dont on a la responsabilité est ainsi d’autant plus importante, que ce soit pour rester au niveau de la compétition sur son secteur d’activité ou pour assurer la disponibilité de son service et la sécurité des informations de ses utilisateurs. Pour supporter la cadence de mises à jour rendue nécessaire pour atteindre ces objectifs, il est primordial d’opter pour des pratiques industrielles d’ingénierie logicielle, soutenues par exemple par une suite d’applications et d’outils adaptés sous forme d’une « Software Factory », afin de sécuriser les pratiques et de n’introduire qu’un nombre maîtrisé de vulnérabilités ou de dysfonctionnements à chaque déploiement d’une nouvelle livraison de version des applications.
La mise en place d’une telle structure peut s’appuyer aussi bien sur des ressources techniques internes (On Premise) que celles disponibles dans un Cloud hébergé chez un tiers (ou une combinaison des deux). De manière similaire, la construction et l’exploitation peut s’appuyer sur les compétences de ses propres équipes autant que celles d’un partenaire. Aussi, le choix des applications et des outils doit être fait en concordance avec les équipes de développement (internes ou tierces), afin d’assurer la cohérence de la chaîne d’intégration continue avec le produit qui y est analysé, compilé, testé, intégré, livré (et éventuellement déployé). Chacun de ces aspects doit être étudié afin d’apporter une solution technique adaptée au besoin et aux exigences.
Les principales briques du cycle de vie applicatif peuvent ainsi être regroupées et organisées au sein d’une Software Factory avec par exemple, et de manière non exhaustive :
- Gestion du code source (Git, SVN, …)
- Services d’analyse statique du code source (qualité du code, vulnérabilités des librairies tierces…)
- Serveurs de build et de compilation sous forme d’un binaire ou d’un package applicatif
- Déploiement d’instances temporaires pour des tests d’intégration voir des tests fonctionnels automatisés
- Livraison dans des dépôts spécifiques et préparation au déploiement déclenchable
Horizon CloudOps Factory (HCF), l’offre Prolival de Software Factory basée sur les ressources du Cloud Managé, intègre un ensemble de briques techniques essentielles afin de construire une infrastructure modulable et adaptée aux principaux usages d’une telle Factory, en s’appuyant sur l’exploitation d’un cluster Kubernetes aux caractéristiques évolutives. Des expériences d’usage multiples peuvent y être construites, en s’appuyant sur le déploiement facilité de composants conteneurisés : de l’intégration continue de son code source pour packager une application répondant à des critères de qualité et de performance spécifiques (CI, Continuous Integration), à la livraison et au déploiement en continu d’applications préalablement packagées, afin de fournir le service de cette application à ses utilisateurs (CD, Continuous Delivery). HCF est ainsi une offre de Software Factory dans le Cloud standardisée et modulable, pensée et conçue par des spécialistes de l’infogérance, qui en assurent l’exploitation 24 heures sur 24, et 7 jours sur 7.
Par Yann Delaunoy, Ingénieur Système / Intégration / DevOps, le 20 avril 2022