DevOps diversité & inclusion


Premier Support for Developers is available in various regions worldwide.  Representing our Canadian team, Application Development Manager, Adlene Sifi, provides our first French post on DevOps Diversity and Inclusion.


Malgré les années, il demeure difficile de définir clairement ce qu'est DevOps. À la base DevOps était défini comment étant une meilleure cohésion entre les équipes de développement et les équipes d'opérations. Cette définition a beaucoup évolué avec le temps. Désormais, certains le voient comme une culture, d'autres comme un mouvement et finalement certains le voient comme un ensemble de pratiques. Cependant, dans tous les cas, on semble mettre l'emphase sur une meilleure communication et une plus grande synergie entre les différents détenteurs d'enjeux impliqués dans la création de valeurs pour l'utilisateur final. À cet égard, la définition qui me semble la plus inclusive aujourd'hui est celle de Donovan Brown, "What is DevOps?" :

"DevOps c'est l'union des personnes, des processus et des produits pour permettre la livraison continue de valeur pour l'utilisateur final"

clip_image002

Nous allons décortiquer cette définition. En premier lieu, cette définition met bien l'accent sur une meilleure collaboration entre l'ensemble des détenteurs d'enjeux. Pour bien comprendre ce dont il est question lorsqu'on parle de meilleure collaboration, il faut revenir quelques années en arrière. Dans l'illustration qui suit, on voit la séparation qui existait entre les différents détenteurs d'enjeux dans le modèle de développement en cascade. La collaboration n'était pas très optimale.

clip_image004

Avec l'arrivée des approches agiles, on voit une meilleure communication et une plus grande synergie entre les secteurs affaires et les équipes de développement. Cependant, il y a toujours une barrière entre les équipes de développement et les équipe d'opération ce qui entraine souvent des délais de livraison et beaucoup de tension entre les différentes équipes au détriment de l'utilisateur final et du client (les secteurs d'affaires).

clip_image006

Avec DevOps, tous les détenteurs d'enjeux travaillent en étroite collaboration pour livrer plus de valeur et en continu à l'utilisateur final. Les enjeux des opérations tels la sécurité, la relève, la disponibilité, la performance, le déploiement, la configuration, bref tous les besoins non fonctionnels sont enfin pris en charge très tôt lors de la conception.

clip_image008

DevOps n'est pas une révolution. C'est plutôt une évolution des approches agiles qui elles-mêmes sont une évolution des approches de développement itératives et en cascade. Ainsi avant de vous lancer dans la mise en place de l'approche DevOps, commencez, si ce n'est pas déjà le cas, par adopter les approches agiles. C'est une question de maturité TI. Comme l'élément le plus important pour adopter soit DevOps soit les approches agiles est le changement de culture, le fait d'avoir préalablement mis en place les approches agiles vient atténuer les freins à l'adoption de DevOps.

J'attire également votre attention sur le fait que dans cette définition, il n'est pas question d'un produit miraculeux DevOps. En effet, il n'existe malheureusement pas de produit DevOps que l'on achète dans une petite boite et que l'on installe sur des serveurs. Quand je dis qu'il n'existe pas, cela signifie qu'il ne devrait pas en exister, parce que dans les faits, il y a plein de produits DevOps sur le marché, car toute nouvelle tendance est aussi une nouvelle opportunité d'affaires.

Cette définition fait ensuite référence à l'union des processus. Dans ce contexte, il est question d'une meilleure intégration de l'ensemble des activités requises pour imaginer, penser, construire, livrer et faire vivre un produit. Dans le cadre de DevOps, ces activités sont communément appelées pratiques. Comme il semble en exister autant que de "produits DevOps", j'ai décidé de me baser sur une étude exhaustive "What Is DevOps? : A Systematic Mapping Study on Definitions and Practices.", ACM, 24 May 2016 qui a analysé plus de 49 études scientifiques sur l'approche DevOps afin d'en distiller les essences. Selon cette étude, les principales pratiques DevOps sont :

  • La définition des besoins et la planification continue
  • La participation active des détenteurs d'enjeux (houra!)
  • Le prototypage d'application
  • La rétroaction entre le développement et le client

clip_image010

  • La programmation et la gestion du code
  • L'intégration continue
  • La gestion des tests
  • L’automatisation des tests et leur exécution en continu

clip_image012

  • La livraison continue
  • Les infrastructures programmables
  • La configuration programmable

clip_image014

  • La surveillance continue et la notification en temps réel
  • La rétroaction entre les opérations et le développement
  • Les rapports et les tableaux de bord automatisés

clip_image016

L'ensemble de ces pratiques s'intègrent dans le cycle de vie DevOps ci-après

clip_image018

Dans la définition, il est également question de livraison continue de Valeur. Nous retrouvons déjà la livraison continue parmi la liste des pratiques DevOps, mais quand est-il du terme Valeur ? Pourquoi ne parle-t-on pas plutôt de produit ? Valeur dans ce contexte est une caractéristique essentielle du produit livré. On ne veut pas simplement livrer en continu un produit quelconque, on veut avant tout livrer un produit de qualité et qui correspond réellement aux besoins de l'utilisateur final (à ne pas confondre avec le client).

Nous arrivons enfin au dernier élément de notre définition : les produits (et non le produit). Les produits sont là pour supporter les pratiques DevOps et permettre leur exécution optimale. Les produits viennent automatiser les activités d'un processus suivi par des détenteurs d'enjeux pour livrer de la valeur en continu à l'utilisateur final.

Nous avons parlé d'inclusion des personnes, des processus et des produits. Cependant mon titre fait également référence à la diversité. Cette diversité s'exprime par la panoplie de produits différents que vous pouvez utiliser pour réaliser vos pratiques DevOps. Cette diversité prend racine dans la mission de Microsoft :

"Donner les moyens à chaque personne, à chaque compagnie dans le monde pour faire plus"

Que vous soyez un développeur Java, Node.js, JavaScript/TypeScript, PHP, Python, Go, C++ ou .NET, que vous développiez avec Eclipse, Xcode, IntelliJ ou Visual Studio, que vous développiez sous Linux, Mac OS ou Windows, que vous utilisiez Chef, Puppet, Ansible ou ARM et DSC pour la gestion de votre configuration, que vous utilisiez Jenkins, Gradle, Grunt, Hudson ou VSTS pour votre intégration continue ou pour votre livraison continue, que vous déployiez sous Linux, Docker, OSX ou Windows, que vous utilisiez CocoaPods, NPM ou Nuget pour la gestion de vos paquetages, la suite VSTS de Microsoft vous permet d'intégrer vos outils et produits préférés pour du DevOps inclusif et diversifié!

Références :

http://donovanbrown.com/post/what-is-devops

https://www.visualstudio.com/vs/devops/

https://channel9.msdn.com/Series/DevOps-Fundamentals

http://dl.acm.org/citation.cfm?id=2962707&dl=ACM&coll=DL&CFID=928097005&CFTOKEN=60565468

https://blogs.technet.microsoft.com/uspartner_learning/2016/09/09/application-development-devops-and-open-source-solutions/

https://en.wikipedia.org/wiki/DevOps#Relationship_to_agile_and_continuous_delivery

http://www.drdobbs.com/architecture-and-design/what-exactly-is-devops/240009147

http://www.drdobbs.com/architecture-and-design/top-10-practices-for-effective-devops/240149363

https://www.visualstudio.com/en-us/docs/overview

https://www.visualstudio.com/en-us/docs/build/define/build


Premier Support for Developers provides strategic technology guidance, critical support coverage, and a range of essential services to help teams optimize development lifecycles and improve software quality.  Contact your Application Development Manager (ADM) or email us to learn more about what we can do for you.

Comments (0)

Skip to main content