Cet article a été initialement publié sur DevOps.com. Il a été mis à jour et modifié.
Tout comme « blockchain », « big data » et « disruption numérique », le terme « DevOps » est un autre terme à la mode actuellement utilisé dans les services informatiques des grandes entreprises.
De nombreux professionnels ont correctement identifié la nécessité d'accélérer le cycle de vie du développement logiciel ; un processus plus précis, étroitement aligné sur les objectifs commerciaux, permettant un flux de travail plus clair et une collaboration entre les équipes chargées du développement et des opérations. DevOps est essentiellement un développement « agile », conçu et prêt à répondre aux besoins en constante innovation et en déploiement rapide des entreprises modernes. Pour les professionnels de la sécurité, il s'agit d'une initiative remarquable : nous pouvons intégrer la sécurité dans le processus beaucoup plus tôt, ce qui réduit le coût de la correction des bogues et évite toute catastrophe potentielle en cours de route.
Le problème est que peu d'entreprises parviennent réellement à mettre en œuvre DevOps. Sans le soutien, les encouragements et la compréhension appropriés au sein de l'entreprise, celle-ci peut rapidement devenir un projet inefficace... vous savez, l'un de ces projets dont on préfère ne pas parler.
Alors, quel est le problème ? C'est une discussion intéressante, et il existe plusieurs manières d'aborder DevOps qui, je pense, faciliteront la navigation. Un programme efficace ne se limite pas à quelques nouveaux outils, titres et réunions d'équipe sophistiquées. Cela ne sera pas toujours facile, mais prendre le temps de corriger une stratégie défaillante (ou de la mettre en œuvre de la bonne manière dès le début) sera beaucoup moins pénible à long terme. En fin de compte, cela se traduira par des logiciels de meilleure qualité et plus sécurisés.
Analysons-le :
Veuillez relâcher les cordons du tablier « Agile ».
Il existe une idée fausse selon laquelle une organisation doit choisir entre Agile ou DevOps, en se fixant une voie ou une autre, pour ne jamais revenir en arrière.
Le fait est que le processus de développement fonctionne mieux lorsque les deux sont considérés et mis en œuvre comme un seul. DevOps n' est pas une réinvention du développement Agile ; il s'agit plutôt d'une extension de celui-ci. Les roues ont tendance à tomber lorsque l'on s'attend à ce que le processus soit exactement comme Agile, ou complètement différent de Agile.
Agile soutient le principe des équipes interfonctionnelles, en réunissant les concepteurs, les testeurs et les développeurs dès le début et en s'engageant à ouvrir des lignes de communication tout au long d'un projet. Son objectif est de mettre fin à la livraison cloisonnée et de réduire la double gestion, deux avantages du processus DevOps. Cependant, DevOps va encore plus loin en intégrant les systèmes, la sécurité et les opérations dans le mix afin d'offrir un ensemble de compétences robustes de bout en bout dont l'objectif ultime est de fournir des logiciels complets et fonctionnels au client.
Lors des inévitables difficultés liées au passage à un processus davantage centré sur DevOps, le risque d'un développement cloisonné peut réapparaître. Il arrive souvent que l'équipe Agile d'origine travaille ensemble, tandis que les éléments supplémentaires liés à la sécurité et aux opérations trouvent toujours leur place dans la structure ; cependant, il n'y a pas de consensus sur la manière de les inclure, sur ce qu'ils doivent accomplir et sur leurs objectifs généraux.
DevOps ne peut fonctionner sans objectifs clairement définis, une intégration interfonctionnelle et une communication directe avec toutes les parties. Il y aura une période d'adaptation qui exigera une gestion minutieuse du changement, bien entendu, mais mettre tout le monde sur la même longueur d'onde grâce aux améliorations apportées par les fonctionnalités DevOps représente la moitié du chemin.
De plus en plus (Dieu merci), DevOps met également l'accent sur les meilleures pratiques de sécurité dans le cadre du processus, démystifiant cette étape et comblant le fossé entre l'équipe de sécurité et, enfin, les autres. Comme je l'ai déjà mentionné, il nous reste encore un long chemin à parcourir pour permettre aux développeurs de coder en toute sécurité dès le départ, mais la mise en œuvre réussie des méthodologies DevOps constitue une excellente base sur laquelle les compétences en matière de sécurité peuvent être renforcées au sein de l'équipe de développement.
L'automatisation n'est pas la solution unique (et ce n'est pas la solution la plus sûre).
Une autre caractéristique de la méthodologie DevOps est, dans une certaine mesure, l'automatisation du processus de développement logiciel. Les principes d'intégration continue et de livraison continue (CI/CD) sont les fondements de ce concept et, comme vous pouvez probablement le deviner, dépendent largement des outils.
Les outils sont remarquables, ils le sont vraiment. Ils peuvent apporter une rapidité sans précédent au processus de livraison des logiciels, en gérant le référentiel de code, les tests, la maintenance et les éléments de stockage avec une facilité relativement fluide.
Cependant, bien que les robots puissent prendre tous nos emplois et nous emprisonner un jour, ils n'en sont certainement pas encore là. La forte dépendance à l'égard des outils et de l'automatisation laisse la porte ouverte aux erreurs. Les analyses et les tests peuvent ne pas tout détecter, le code peut ne pas être vérifié, ce qui entraîne d'énormes problèmes de qualité (sans parler de sécurité) à terme. Un attaquant n'a besoin que d'une seule porte dérobée à exploiter pour voler des données, et le fait de renoncer à l'élément humain dans le contrôle de la qualité et de la sécurité peut avoir des conséquences désastreuses.
Le « juste milieu » consiste à vous assurer d'avoir un équilibre entre les personnes et les outils. Les outils doivent servir d'assistants à une équipe en qui vous avez confiance pour atteindre les objectifs du projet. Vous devez :
- Veuillez prévoir suffisamment de temps pour permettre aux utilisateurs de se familiariser avec la chaîne d'outils DevOps choisie.
- Concentrez-vous sur une collaboration efficace (et sur la manière dont les outils peuvent y contribuer)
- Comblez toutes les lacunes du processus, qu'elles soient liées aux compétences, aux connaissances ou aux outils.
En résumé, il est important de ne pas se contenter de se doter des outils nécessaires et d'espérer que tout se passera bien.
DevOps n'est pas un terme à la mode, c'est une culture. Cultivez-vous la vôtre ?
La gestion du changement est difficile dans le meilleur des cas. La crainte de l'inconnu peut empêcher même les membres les plus brillants de l'équipe de développer leurs compétences et d'élargir leurs horizons. L'
. Vous voyez, le simple fait de dire « Adoptons DevOps » et de déplacer les bureaux de l'équipe des opérations ne suffira pas à mettre en œuvre un processus réussi comme par magie. Beaucoup seront perplexes et les membres de longue date de l'équipe seront mécontents. Il est essentiel de communiquer clairement les attentes et de « joindre le geste à la parole ». Le DevOps représente autant un mouvement culturel qu'une méthodologie de développement, et une équipe doit incarner et respirer un état d'esprit interfonctionnel et collaboratif.
À quoi ressemble une bonne culture DevOps ?
- Les individus sont habilités à apporter leur expertise à un processus, et pas seulement aux dirigeants.
- Communication ouverte, honnête et respectueuse entre les équipes
- Chaque personne est responsable de l'objectif global qui consiste à intégrer la qualité et la sécurité dans le processus de développement.
- Tout le monde partage la même vision en ce qui concerne la définition du DevOps au sein de l'entreprise, la feuille de route et le comment/quoi/pourquoi du rôle de chacun.
Depuis plusieurs années, je souligne l'importance de créer une culture de sécurité positive au sein des équipes de développement, et DevOps ne fait pas exception à cette règle.
Les outils, les connaissances et le soutien appropriés sont essentiels pour appliquer les meilleures pratiques en matière de sécurité, constater une diminution des vulnérabilités découvertes et faire comprendre à l'équipe l'importance de protéger nos données. Avec DevOps, il est nécessaire de jeter les bases culturelles d'un changement positif : s'assurer que chacun comprend son rôle, sa valeur et ses attentes, les objectifs généraux du projet et les étapes du processus.
L'avez-vous maîtrisé ? Excellent. Maintenant, changeons les choses, améliorons l'aspect sécurité et faisons de DevSecOps le plan ultime en matière d'excellence logicielle.