Aujourd'hui, nous allons parler DevOps. Qu'est-ce que DevOps concrètement ? La définition de DevOps est plutôt claire, mais ce qui est important, c'est de comprendre ce que cela signifie concrètement. Et le modèle CAMS répond de manière très claire et précise à cette question.


DevOps ne se limite pas à des outils, c'est avant tout une culture, comme le met en avant le modèle CAMS. Le modèle CAMS a été inventé par Damon Edwards et John Willis, auteurs du célèbre Podcast DevOps Cafe. CAMS est l'acronyme de Culture, Automation, Measurement and Sharing.

Commençons par le premier volet, la culture.

C pour Culture

La culture est la partie la plus importante du mouvement DevOps. Mais de quoi parle-t-on ici ? La culture va regrouper tout un ensemble de pratiques :

  • l'utilisation de Scrum,
  • la présence de silos,
  • la volonté affirmée de limiter le niveau de dette technique,
  • la mise en place de rétrospectives, ...

Attention cependant à ne pas chercher à tout prix à reproduire des pratiques d'autres organisations telles quelles, sous prétexte qu'elles fonctionnent chez elles. C'est ce qu'on appelle l'effet Cargo Culting. Au contraire, vous devez d'abord examiner les problèmes que ces autres organisations ont tenté de résoudre et voir comment ils les résolvent. Seulement après vous pouvez déterminer ce qui fonctionnera pour votre propre organisation.

A pour Automation

L'automatisation répond à de nombreux besoins et résout de nombreux problèmes bien sûr. Mais attention, elles ne représentent que 25% du travail du DevOps !

Alors pourquoi automatiser ? Avant tout pour accélérer la circulation de l'information et pour éviter de recruter des personnes.

Accélérer la circulation de l'information permet d'amener bien sûr le logiciel au client plus tôt, mais cela permet aussi d'obtenir les résultats plus tôt. Et donc si un problème survient plus tôt (comme la détection d'un bug), cela coûte beaucoup moins cher que s'il est découvert plus tard.

Eviter de recruter des personnes pourquoi ? Bien sûr pour des raisons financières, mais aussi pour éviter de potentiels problèmes de communication entre les humains, pour éviter les confits de personnes et pour éviter les erreurs commises par les humains. Et oui, parce que plus il y a d'humains, plus il y a d'erreur ...

L'investissement est lourd. Le retour sur investissement se fera sur le temps.

Quand on parle automatisation, on pense notamment aux notions de :

  • "infrastructure as code" (pour cela, on peut utiliser les outils comme Ansible ou Chef),
  • pipelines de livraison continue (ici, on parle de Jenkins par exemple).

Le concept de "infrastructure as code" permet d'automatiser les tests sur l'infrastructure, pour s'assurer que l'infrastructure est continuellement testée. Il permet aussi de mettre en place des environnements de pré-production identiques aux environnements de production.

Les pipelines de livraison continue recouvrent en fait deux parties : le Continuous Integration et le Continuous Delivery.

M pour Measurement

Le processus d'amélioration continue (Kaizen) se trouve au coeur du DevOps. Mais pour cela, encore faut-il pouvoir savoir si on s'est amélioré et pouvoir le prouver. Pas miracle, les mesures sont la clé, car les décisions doivent être prises sur des faits, des données, pas sur des opinions.

Alors que peut-on mesurer ? Et bien on eut mesurer bien sur le temps de réponse du système, ce qui permet de savoir par exemple si le dernier changement apporté au système a améliorer les performances ou au contraire les a dégradées.

C'est pourquoi, du côté des développeurs, il est très important qu'ils prévoient des dispositifs de surveillance embarqués dans les applications fournies.

A partir de ces mesures, on peut établit des KPI ("indicateurs de performance clés") permettant de répondre à des questions importantes, comme :

  • Combien d'utilisateurs se sont inscrits aujourd'hui ?
  • Quels sont les revenus aujourd'hui ?
  • Quels sont les coûts d'exploitation ?
  • Quel est le nombre de tickets ouverts au centre d'appels aujourd'hui ?
  • Etc ...

Il existe de nombreuses plateformes d'instrumentation permettant de produire des graphiques (Graphite, Grafana, ...).

C'est également une bonne pratique de mettre en place des radiateurs d'information dans les locaux de l'organisation, par exemple sur un grand écran. Ces radiateurs d'information doivent montrer de manière très claire ce à quoi ressemble la normale, de manière à remarquer plus facilement les comportements étranges.

S pour Sharing

La dernière composante du CAMS est le partage (Sharing). Le partage comprend trois composantes :

  • la visibilité,
  • la transparence,
  • le transfert de connaissance.

Parlons d'abord de la visibilité. La visibilité est ce qui permet à tout le monde de voir les progrès des autres parties de l'organisation. Il s'agit donc de ce que vous avez fait.

Concrètement, la visibilité permet de savoir si le travail d'une équipe peut poser un problème à une autre équipe. Et elle permet aussi d'avoir un feedback tôt, ce qui permet de faire en sorte que les échecs se produisent tôt plutôt que tard.

Passons à la transparence. La transparence est ce qui permet à tout le monde de travailler vers un but commun. Il s'agit donc de la raison pour laquelle on a fait ce qu'on a fait.

Concrètement, un manque de transparence peut conduire un mauvais alignement entre des équipes, et conduire par exemple à des développements inappropriés.

Enfin, le transfert de connaissance. Le transfert de connaissance a pour but de :

  • éviter les contraintes dans l'organisation,
  • favoriser l'intelligence collective.

Que signifie éviter les contraintes ? Pour mieux comprendre, prenons un exemple. Souvent, dans les organisations, une seule personne dispose de certains savoir faire. Et lorsqu'elle part en vacances, l'équipe toute entière se retrouve bloquée. C'est ce qu'on appelle une contrainte.

Pour éviter cela, la solution est de partager la connaissance entre les personnes. Prenons un exemple concret : le déploiement d'une application. Si une seule personne sait comment déployer une application, alors lorsqu'elle sera absente, l'équipe ne pourra plus déployer l'application.

Et que signifie l'intelligence collective ? L'intelligence collective matérialise le fait qu'on est plus intelligent collectivement qu'individuellement. Pourquoi ? Simplement parce qu'il est alors possible de retenir les meilleurs idées pour résoudre les problèmes.

Il y a beaucoup de manière de mettre en place le partage de connaissance. Si vous êtes en Agile, alors vous partagez déjà de la connaissance à travers les Daily Stand-up et les rétrospectives. Côté développement, la documentation en général et le code bien documenté sont des moyens de partager la connaissance. Le ChatOps, qui fera l'objet d'un article ultérieurement, permet de faire savoir à tout le monde le résultat du travail réalisé. Des événements comme des conférences internes, des présentations techniques ou des discussions moins formalisées lors de repas, permettent aussi de favoriser le partage de la connaissance.


A la lumière de ce modèle, on prend plus conscience que la partie automatisation pure de la chaîne de build et du delivery ne constituent qu'une petite partie du DevOps. Le DevOps n'est pas simplement des outils, c'est beaucoup plus, c'est une culture, un état d'esprit, qui reprend des concepts de l'Agilité, comme l'Agilité reprend des principes du Lean. Autrement dit, le DevOps repose beaucoup sur le Lean.

 


Pensées pour mieux produire

Soyez prévenu dès que mon livre "Pensées pour mieux produire" sera disponible à la vente !

DevOps, Agile, Scrum, Kanban, XP, SAFe, LeSS, Lean Startup, Lean UX, Design Thinking, Craftmanship, Management 3.0, ...

 

Bruno Delb

Agile Coach and DevOps, with an experience in the Medical Device software domain, Management 3.0, Agile games and development (especially on mobile) are my passion.

Search

Ads