Agile Mëtteg: Introduction à DevOps

Agile Mëtteg: Introduction à DevOps

Cet Agile Mëtteg de septembre a été organisé suite à un constat : aujourd’hui les étapes dans le développement d’une application sont trop souvent gérées avec des approches différentes. Par exemple Scrum couvre plutôt la gestion des besoins, le développement et l’assurance qualité, tandis que ITIL couvre plutôt la phase d’exploitation / production.
Cycle logiciel

Tout ceci rend la réalité des équipes très différentes et engendre des difficultés de collaboration entre les développeurs et les opérateurs. Actuellement, il y a une séparation entre les deux mondes. Mais pour quelles raisons ?

Les équipes de développement et d’exploitation ont un vocabulaire différent, mais aussi des techniques et des dispositions différentes dans leur travail. Les opérateurs cherchent à garantir la stabilité, tandis que les développeurs eux, sont dans une optique de changement et d’évolution. Ces objectifs différents peuvent mener à des optimisations locales mais un processus d’ensemble non optimal pour l’utilisateur final : le client.

Pour créer de la qualité de manière efficace, le mouvement DevOps s’est créé. Il cible entre autres, le décloisonnement entre les développeurs et les opérateurs. Les faire travailler ensemble, en cherchant des feedbacks les plus rapides possibles et non à la fin du développement, est primordial. Ceci permet de réduire les gaspillages et d’avoir un produit de meilleure qualité.

Feedbacks

Chaque niveau de feedback est important. Plus celui-ci arrive tôt dans les processus de développement, plus les releases peuvent se faire rapidement et avec un haut niveau de confiance. L’idée est de rendre une release un “non-évènement” pour aller vers le “Continuous Delivery”.

Qu’est-ce que DevOps?

DevOps est un mouvement basé sur différents principes regroupés sous l’acronyme CALMS:

  • Culture : le changement des processus culturels, la culture d’entreprise, l’évolution des équipes, la communication entre collaborateurs, …
  • Automation : limiter les interventions manuelles sur les machines, les configurations, les déploiements, …
  • Lean : élimination des activités sans valeur ajoutée, optimiser dans un but d’efficacité
  • Measure : exploitation des métriques techniques/métier afin de comprendre et d’évaluer les changements
  • Sharing : partager les connaissances, les succès, les échecs, …

Le plus difficile dans cette approche est la volonté des intervenants à se lancer dans cette optique DevOps. Aborder de front l’intégralité des éléments d’une chaine de valeur DevOps n’est pas recommandé. La quantité d’information recueillie et les suggestions d’interventions et/ou d’améliorations proposées par les intervenants d’horizons différents peuvent être considérées comme insurmontables et susciter le rejet: “ce n’est pas possible chez nous!”, “on a toujours fonctionné comme ça!”, “alors il faut tout changer!?”, … Il s’agit de se concentrer sur ce qui à le plus de valeur, de dégager les priorités, et d’itérer pour s’inscrire dans un process d’amélioration continu. DevOps, ce n’est pas du “one shot”.

Exemple d’application DevOps chez Agile Partner

Dans le cadre du développement d’une application interne de gestion de candidats, nous avons appliqué la philosophie DevOps. Mais pourquoi?

Constats

  • Plusieurs développeurs différents pouvaient intervenir sur le projet
  • Différents OS sur les postes de travail (Windows, Mac OS, Linux)
  • Un développeur peut être amené à travailler sur plusieurs projets au fil du temps
  • Le temps nécessaire à préparer un poste de travail est sans valeur ajoutée pour le client
  • Le temps nécessaire à déployer et vérifier les installations est sans valeur ajoutée pour le client

Changement

La nouvelle approche avait pour objectif de faciliter l’accès au projet sans trop se soucier des environnements du développeur, permettant ainsi un démarrage rapide dans le développement. Ce qui nous a amené à utiliser ce processus:

  1. Cloner le repository du projet
  2. Pause café
  3. Commencer le développement

Dans cette configuration, nous avons utilisé Vagrant pour créer une machine virtuelle (VM) et Docker pour la création de conteneurs.

Mais quelle différence entre VM et conteneur?

Une VM est l’illusion d’un appareil informatique (une machine de développement et son OS par exemple) créée sur une machine physique (un serveur par exemple) à l’aide d’un hyperviseur (un logiciel d’émulation). Les applications sont déployées sur cette VM.

Un conteneur Docker utilise des fonctionnalités du kernel Linux (namespaces, cgroups en particulier). Contrairement à une VM, le Guest OS du conteneur n’est utilisé que pour sa structure et les librairies et ne consomme pas de ressources. De plus, le conteneur Docker ne nécessite pas un hyperviseur (pour émuler) mais s’appuie sur les fonctionnalités du système d’exploitation fournies par l’infrastructure sous-jacente. Les composants de l’application sont déployés dans des conteneurs.

Bénéfices de ces changements

  • Les environnements de développements sont harmonisés
  • Les développeurs sont plus autonomes
  • Gain de temps lors de la mise en place de l’application
  • Création et suppression de VMs indépendantes
  • Il n’y a pas de “standard” (mise à jour, patching, changement de version possibles sans impact sur le serveur )

Conclusion

Docker est une nouvelle technologie, et DevOps devient un véritable sujet de discussion et d’attention qui n’est plus la niche des géants du web. De facto, considérer les tenants et les aboutissants de DevOps est une plus value pour les objectifs business dès aujourd’hui. Mais le grand challenge reste le changement de culture des équipes et de l’entreprise pour dynamiser les projets. C’est pourquoi, il est intéressant de commencer par collaborer de façon incrémentale pour permettre le changement en douceur.

N’hésitez pas à participer à notre enquête sur les pratiques de l’IT au Luxembourg !

Vous avez des questions? Contactez-nous sur devops@agilepartner.net ou demandez votre présentation gratuite dans votre office!

Maeva Pitou
No Comments

Post a Comment

Comment
Name
Email
Website