Mettre en place des fondements stables pour plus d'agilité
Introduction à l’agilité
1. Le Manifeste Agile
L’agilité, c’est s’adapter rapidement face des évènements, tant à la suite de difficultés que pour répondre à de nouveaux besoins et opportunités. Pour y arriver, il est nécessaire de respecter quatre principes : des interactions, un produit fonctionnel, de la collaboration, et de la réactivité.
Les méthodes agiles permettent de respecter les principes d’agilité en définissant des cycles de création de valeur courts, ou inversement, selon le point de vue. En effet, le tout forme un ensemble où les causes et les conséquences ne font qu’un. On retiendra l’aspect de cycle de vie itératif, incrémental et adaptatif basé sur du pragmatisme et de la réactivité pour tenir compte de besoins en évolution. L’agilité c’est donc la capacité à accompagner la maturation des besoins et intégrer des changements de périmètre à tout moment. Intégrer la maturité projet dans la démarche permet de favoriser la capacité d’exécution et de maximiser la valeur produite en utilisant le produit au plus tôt.
L’agilité est en quelque sorte résumée à travers le Manifeste Agile. Le Manifeste Agile est un document fondateur pour le mouvement agile dans le développement logiciel. Il a été rédigé en 2001 par un groupe de praticiens du développement logiciel qui cherchaient des alternatives aux approches traditionnelles de gestion de projet. Ce manifeste s’avère très simple et repose sur quatre principes simples, tout du moins simples à comprendre :
Les individus et leurs interactions plus que les processus et les outils.
Des logiciels opérationnels plus qu’une documentation exhaustive.
La collaboration avec les clients plus que la négociation contractuelle.
L’adaptation au changement plus que le suivi d’un plan.
Ces mêmes praticiens indiquent par ailleurs l’élément suivant : « Nous reconnaissons la valeur des seconds éléments, mais privilégions les premiers. »
Concrètement, qu’est-ce...
L’agilité et la gouvernance : des concepts aux antipodes ?
1. La gouvernance des technologies de l’information
Souvent confondue avec la gestion des technologies de l’information, la gouvernance des technologies est l’ensemble des pratiques et moyens de gestion et de régulation des systèmes d’information. Ces pratiques et moyens ont pour but de s’assurer de comment les investissements sont utilisés dans le but de créer de la valeur, de servir le client, d’améliorer les performances des processus en place ou de contrôler les risques. Il s’agit également de clarifier les aspects financiers, notamment les coûts, ainsi que l’organisation globale du département informatique et les besoins en solutions et compétences. Ces derniers doivent en effet permettre au département de fonctionner sur le long terme. Certains départements seront en recherche de compétences techniques fortes, d’autres favorisent l’innovation. La gouvernance peut notamment donner des recommandations en termes de technologies, permettant notamment de favoriser la mobilité interne ou de technologies plus à même de répondre à des besoins spécifiques du métier. Ainsi, la gouvernance est l’outil de la stratégie et de la culture du département informatique qu’elle doit faciliter.
Plus concrètement, la gouvernance définit comment se prennent les décisions majeures, qui a la responsabilité de le faire et sur la base de quelle information. Chaque entreprise dispose d’une gouvernance qui lui est propre et qui tient compte de sa structure et de ses enjeux et objectifs. Les règles sur la gestion des risques font également partie de la gouvernance. En effet, on peut imaginer qu’une application pour téléphone soit délivrée sur le marché avec l’un ou l’autre souci, connu ou non mais il n’est cependant pas concevable qu’un avion ou un appareil médical puisse être commercialisé avec le même niveau de risque.
Par les aspects couverts, la gouvernance permet l’évaluation, la sélection, la hiérarchisation, le financement et la supervision de la mise en œuvre. Selon l’information Technology Governance...
Introduction à DevOps
1. Le DevOps, c’est quoi concrètement ?
C’est en 2008 que le terme Agile Infrastructure a fait son apparition et a très rapidement été repris par la communauté, ce qui était déjà en soi une révolution. Dès l’année suivante, le mouvement était né au travers des premières présentations d’une seule voie sur l’agilité au sein des développements et l’agilité de l’infrastructure avec comme leitmotiv de casser les silos et d’améliorer la flexibilité au sens large.
À une époque où le hashtag arrivait en force, #devops s’est alors imposé. Pourtant, ce terme représente assez mal ce mouvement et ne met en exergue que le rapprochement voire la collaboration entre les développeurs et les opérations ou encore ce qui est en amont et en aval du livrable. Pourtant, dans un contexte agile, le livrable évolue et n’est plus le point de référence.
Le rapprochement entre les Devs et les Ops a permis de mettre en avant d’autres silos au sein même de cette seconde catégorie. En effet, bien que cela ne fasse pas toujours plaisir à tout un chacun, Ops englobe bien des choses : les bases de données, le réseau, les sauvegardes, les logs, la sécurité, etc.
Mais dès lors, comment être agile quand, en pratique, bien des silos existent ? Chaque élément du système se doit d’être agile, c’est un fait mais surtout il est nécessaire de faire en sorte que chacun partage « un état d’esprit DevOps » qui repose sur quelques fondements que nous allons aborder ci-dessous.
2. Que peut-on attendre de DevOps ?
Les objectifs de DevOps sont multiples. Nous ferons le choix de les grouper en 6 grandes catégories et qui se caractérisent par des mots clés spécifiques :
-
Déploiement accéléré : déploiement en continu, automatisation, connaissance des environnements ;
-
Robustesse : microservices, architecture, tests réguliers ;
-
Évolutivité : élasticité de la charge, architecture modulaire ;
-
Cohésion des équipes : interdisciplinarité...
Du simple déploiement à un système complet de réflexion
1. L’humain comme le vecteur de l’innovation
L’impact des différentes révolutions industrielles n’est plus à démontrer, non pas uniquement pour les travailleurs agricoles mais pour l’ensemble des classes. Après avoir placé la technologie (la machinerie et la robotique) et les énergies (le gaz, le pétrole et l’électricité) au centre des discussions, nous sommes en pleine transition vers l’industrie 4.0. La notion de processus a ainsi pris le pas sur la technologie avant d’être récemment remplacé par la donnée et son exploitation, toute proche, par l’intelligence artificielle. La conjonction de ces éléments nécessite une vue globale qu’aucune technologie n’est capable de supporter actuellement. L’humain se positionne alors comme le vecteur de l’innovation là où la technologie a été considérée comme la solution durant des décennies.
Les décideurs doivent modifier la manière de recruter et de gérer les collaborateurs. La cohésion des équipes tend à remplacer la notion de compétences. Les soft skills tels que la communication, l’adaptabilité et l’agilité sont désormais appréciés tout autant que la compétence qui se devra être multidisciplinaire et couvrir un horizon qui inclut l’informatique et le métier. L’acquisition de compétences informatiques dites dures se voit remplacer par un apprentissage en continu sous forme de coaching ou intégré dans l’outillage. Les structures de formation continue suivent également ce mouvement en proposant des accompagnements sur du plus long terme. De nombreuses institutions publiques doivent se transformer et proposer de nouveaux types d’apprentissage au risque de se mettre en difficulté à cause d’un décalage entre le besoin et la formation proposée.
2. Les praticiens DevOps de plus en plus nécessaires
Le praticien DevOps, bien que chacun ait sa propre définition du poste, est en phase de devenir un profil central, tout comme l’a été le manager dans les organisations hiérarchiques...
Le platform engineering en complément du DevOps
L’avènement du génie des plateformes, ou platform engineering, constitue une réponse stratégique à la complexité croissante des infrastructures technologiques et des applications distribuées à grande échelle. Cette approche a émergé à mesure que les organisations adoptaient des architectures informatiques distribuées et des environnements cloud, nécessitant une standardisation et une automatisation accrues.
Fondé sur des principes clés, le génie des plateformes repose sur l’automatisation et l’orchestration des processus pour déployer, configurer et gérer les infrastructures et les applications de manière reproductible. Il vise à abstraire la complexité sous-jacente en offrant des interfaces standardisées aux développeurs et en favorisant la scalabilité, la résilience, la sécurité et la conformité.
Les composants clés du génie des plateformes incluent l’Infrastructure as Code (IaC), qui permet la gestion de l’infrastructure à l’aide de fichiers de configuration et de scripts, ainsi que l’utilisation généralisée de conteneurs, tels que Docker, et d’orchestrateurs comme Kubernetes. Les architectures basées sur les microservices...
L’agilité dans un monde où l’on veut tout contrôler
1. Le forfait ou la régie, les approches les plus courantes
De manière classique, on retrouve deux types de relations. Lorsque le périmètre est identifié, alors le commanditaire fait généralement appel au forfait, à savoir le paiement d’une somme définie pour un périmètre explicite et immutable. Il arrive régulièrement que cette approche soit choisie alors que le périmètre s’avère très large, augmentant fortement le risque pour le prestataire. Pour les autres situations, la mise à disposition de ressources en régie, c’est-à-dire en fonction du temps passé et des moyens mis en œuvre, est choisie. Dans ce cas, c’est le client qui supporte le risque dans sa globalité.
La régie est souvent perçue comme étant plus adaptée face à l’inconnu. Le forfait est plus adapté à des situations fortement maîtrisées.
2. L’impact sur la responsabilité
L’approche agile et itérative permet de faire en sorte que chaque cycle génère un produit directement utile. Une telle approche basée sur des retours dynamiques et en temps réel s’avère très utile pour le projet. La responsabilité partagée...