Paris JUG du 10/01/2012 : soirée DevOps

Le Paris JUG du 10 janvier 2012 était consacré à DevOps.

Pour ceux qui ne connaîtraient pas, le terme « DevOps » a été donné au mouvement cherchant à améliorer la qualité des services fournis par les solutions informatiques ou encore aligner le SI sur les besoins de l’entreprise en rendant l’infrastructure plus agile. L’idée sous-jacente est de rapprocher les parties développement et opération du SI, deux fonctions qui se retrouvent en opposition. D’ailleurs DevOps est tout simplement la concaténation des deux mots.

Comme le dit très bien la définition de Wikipedia, le problème commun actuellement est que, si une équipe d’exploitation est primée sur la stabilité du système alors que l’équipe de développement est récompensée à chaque nouvelle fonctionnalité livrée, il est évident que ces 2 équipes vont se retrouver en conflit perpétuel.

Le but de DevOps est alors de promouvoir la coopération, industrialiser et motiver chacun individuellement sans noyer l’ensemble dans la masse. Le mouvement DevOps en plus de réfléchir à une nouvelle organisation de l’entreprise, vise à trouver des technique et des outils pour favoriser cette coopération.

C’est ce qu’est venu nous présenter Henri Gomez et Carlos Sanchez..

Henri Gomez a commencé par définir le packaging natif.

D’abord la définition d’un livrable : un livrable est un artefact utilisable par les équipes en aval, c’est-à-dire les équipes de production. Jar, War, Zip ne sont pas des livrables car ils ne sont pas directement utilisables.

Avant de créer un livrable, il faut se poser un certain nombre de questions :

  • Gestion des pré-requis
  • Cycle de vie (mise à jour, suppression)
  • Quid du déploiement
  • Localisation dans le FileSystem (FHS ? règles ?)
  • Les droits d’exécution et accès dans le FileSystem

A coté de ça, le packaging natif est une sorte de livrable très souvent utilisé par les équipes de productions. C’est le cœur de la pile applicative des OS type Unix. Il permet la gestion des dépendances, la mise à jour automatique ou sélective. Les formats les plus connus sont RPM pour Redhat, DEB pour Debian et PKG pour Solaris.

Qu’est qu’un package ?

C’est un fichier avec des données (fichiers de configuration par exemple) et des programmes (Tomcat, code de l’application, etc). C’est du code exécuté lors de l’installation, la mise à jour ou la suppression du package

Il y a des points communs avec Maven :

  • Construction par DSL connu par les Ops (simple, quelques macros, appuyé par le Shell)
  • Gestion des dépendances pour la construction mais aussi pour l’exécution
  • Dépôt de package (Nexus et Artifactory peuvent servir de dépôt)
  • Mise à jour automatique ou contrôlée

Le package offre différentes possibilités qu’on peut établir lors de la construction du RPM avec hook de pre-install et post-install ou pre-uninstall et post-uninstall.

Le hook de post-install peut par exemple être utiliser, après déploiement, pour activer des services. Alors que le hook de pre-uninstall peut servir à arrêter correctement l’application et nettoyer le système.

Il permet la déclaration du contenu (droit d’accès, paramètre de la mise à jour des fichiers de config …) et offre un historique !

Le packaging natif offre une grosse autonomie car un package est auto-suffisant, il permet par exemple la mise en place des comptes utilisateurs d’éxecution et il permet un contrôle total sur le cycle de vie avec les hooks par exemple en effectuant le lancement automatique de programmes annexes comme l’analyse des logs !

C’est un système d’installation automatisé et déterministe donc réplicable (peut être utilisé par les logiciels Puppet ou chef)

Puppet était d’ailleurs le sujet de la 2ème partie de la soirée présentée par Carlos Sanchez auquel je n’ai pu assisté.

Si cela vous a intéressé vous pouvez aller voir les videos des deux présentation ici http://www.parleys.com/#st=5&sl=0&id=2979 et la http://www.parleys.com/#st=5&sl=0&id=2980

Henri Gomez fourni une « forge » avec l’ensemble des packages nécessaires pour se mettre en mode DevOps : https://github.com/hgomez/devops-incubator

Quelques liens sur DevOps : Un twitter parodique excellent, http://devops.com/ ou encore Un article du Touilleur 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *