Penser, planifier et appliquer Devops

Share

Penser plannifier appliquer devops

DevOps est un concept qui a pour objectif de faire travailler ensemble plusieurs communautés sur un même projet. Bien que cette diversité puisse conduire à des divergences d’opinions, cette approche augmente considérablement la communication car les experts des différentes disciplines peuvent se rapporter à DevOps et ensemble peuvent apporter leurs expériences individuelles et leurs compétences. Une fois regroupés, ces experts peuvent plus aisément discuter et partager leur connaissance et leur expérience entre eux.

Les valeurs et les objectifs de Devops

DevOps décrit les pratiques qui simplifient la livraison du logiciel. DevOps met l’accent sur les retours des utilisateurs finaux. Ce qui permet de développer et d’améliorer la durée du cycle de développement du produit.

Comme pour le mouvement Agile, DevOps met fortement l’accent sur les aspects interpersonnels. DevOps c’est allier le plaisir à l’informatique ! Cependant, que signifie la collaboration ? Les bases préalables de la coopération et de la confiance sont notamment :

  • Le respect d’autrui,
  • L’engagement à des objectifs communs,
  • La propriété collective,
  • Des valeurs partagées.

L’indispensable pour améliorer la collaboration est l’alignement des motivations entre les équipes et l’application des processus et des outils communs. Cela se traduit par la définition commune de la qualité pour l’ensemble du projet de l’entreprise et l’engagement à la respecter. La visibilité, la transparence favorise aussi la collaboration. Les groupes doivent être traités comme une seule équipe. Autrement dit, toute l’équipe doit être récompensée pour le développement des changements stables qui favorise la collaboration. Cette structure peut mettre fin à la tension entre les deux groupes antagonistes à savoir les développeurs et les opérationnelles. Comme conditions préalables, les équipes sont inters fonctionnels. Les individus de l’équipe commune doivent avoir au moins une compréhension de bases des autres domaines.

 DevOps n’encourage pas seulement la livraison rapide d’un logiciel. Il aide aussi les acteurs à produire un logiciel de meilleure qualité, qui répond au mieux aux besoins des individus et aux conditions de base.

Les processus Devops

Un problème est souvent aperçu comme un éléphant dans un magasin de porcelaine : à première vue insurmontable et dont la solution demanderait beaucoup d’investissement de temps, d’effort et d’argent. Pour surpasser cette vision, il suffit de prendre un nouvel angle de vue et se focaliser sur l’essentiel. Pour ce faire, la pensée DevOps suit le processus suivant :

  • La définition des règles: l’équipe entière doit assigner à chacun les rôles et mettre en place les interactions entre les différentes parties. Le meilleur moyen de procéder et de se poser certaines questions. De telles investigations susciteront surement des réactions émotionnelles de certaines personnes. C’est pourquoi, des règles doivent être définies pour que l’objectif de toute l’équipe soit purement professionnel.
  • L’inclusion de tous: la pensée DevOps encourage la collaboration de différents départements. Dans cette optique, il est conseillé de faire participer tout le monde, soit la majorité si possible. Il faut aussi savoir attribuer les tâches adéquates aux personnes appropriées. De même, il est recommandé d’éviter de surcharger une personne. Il est aussi préférable de favoriser la conversation entre les équipes. Leur répartition dans le local joue un rôle important dans cette démarche.
  • L’identification des personnes clé: pour chaque processus, il est important d’identifier la personne clé. Pour la trouver, il suffit de poser des questions à l’équipe. Généralement c’est celui vers qui les autres se tournent en cas de problèmes.
  • L’ouverture, la transparence et l’honnêteté: ce sont les ingrédients nécessaires pour recueillir les informations et les données pertinentes auprès de tous.
  • Le divertissement : développer une application peut s’avérer frustrant lorsque les personnes y sont plongées toute la journée. Les pauses et les divertissements aident à aérer l’esprit, à lâcher la pression et favorise la cohésion des équipes.

Techniquement parlant, les processus qui définissent la façon dont le logiciel est développé et livré sont plus importants que les outils. Après l’élaboration des processus qui correspondent aux besoins individuels et aux conditions de base, vous pouvez ensuite choisir les meilleurs outils pour leurs mises en œuvre. Les processus prennent plus d’importance dans les interactions entre les différents départements. Il n’est pas nécessaire de fusionner les deux départements. Il suffit de mettre des experts interdisciplinaires comme intermédiaire entre le département développement et celui des opérations. Pour y arriver il faut :

  • Aligner les responsabilités avec les rapports et non avec les rôles, comme la tradition le suggérait.
  • Mettre en place et rationnaliser un processus général qui maintien la vitesse pendant que l’équipe de développement transmet le logiciel à l’équipe des opérations.
  • Inclure les deux équipes dans un processus de livraison complète, de bout en bout.
  • Inclure l’équipe opérationnelle dans les interfaces et les processus d’Agile tels que Scrum et Kanban.

Traditionnellement, l’approche d’optimisation verticale est celle préférée de l’équipe de développement. En DevOps, les deux équipes préfèrent des solutions en production viables. Ils sont aussi ouverts d’esprit sur l’approche d’optimisation verticale. En un mot, l’approche de DevOps et d’Agile se résume par le schéma suivant :

Approche Devops

Les outils Devops

Rappelons que DevOps est une approche pour améliorer la collaboration entre plusieurs départements. DevOps est donc formé par un ensemble d’outils, de processus et n’est pas, en aucun cas, un nouvel outil. Tout outil pertinent s’intègre sans encombrement dans la pensée DevOps.

Un fournisseur d’outils peut labelliser son produit comme étant un outil DevOps du moment que celui-ci peut être partagé entre les équipes de développement et opérationnelles. Cependant, rappelez-vous qu’avant tout, l’humain et les processus sont plus importants que les outils. Cependant les outils sont encore importants, en particulier pour automatiser les activités tout au long du processus de livraison. Plus vous disposez d’outils, plus vous déciderez quel outil s’ajuste mieux à une tâche donnée. Normaliser DevOps est fortement tributaire d’une automatisation complète. Il faut tenir compte de toutes les étapes d’une compilation incluant :

  • La préparation du système à mettre en place,
  • L’application des normes de base pour le contrôle de la structure de base des systèmes,
  • L’implémentation du logiciel,
  • L’exécution des tests techniques, fonctionnels et d’acceptation,
  • L’emballage,
  • Le déploiement et la mise en scène des artefacts …

Tout est automatisé avec les outils appropriés. Les lignes de codes et les scripts sont stockés dans les systèmes de contrôle de version. Pour DevOps, ils incluent les lignes de codes et les scripts pour :

  • La compilation de l’application,
  • Le test unitaire de l’application,
  • Les tests d’acceptation de l’application,
  • Le déploiement de l’application,
  • La configuration des options de l’application pour différents environnements cible,
  • La programmation des attributs et du « comportement » de l’environnement cible.

Avec les outils tels que Puppet ou Chef, les domaines spécifiques des langages de programmation (domain-specific languages ou DSL en anglais) peut être utilisés pour décrire les attributs d’un environnement : par exemple, les utilisateurs techniques, les autorisations et les packages installés. Les lignes de code et les scripts sont stockés dans les systèmes de contrôle de versions tel que Git ou Subversion. Cette approche comporte plusieurs avantages tels que :

  • Les descriptions abstraites des machines en utilisant DSL tout en jouissant de la complète puissance des langages de scripts. Par exemple, avec Puppet ou Chef, vous pouvez décrire un comportement avec le langage de programmation Ruby.
  • Les descriptions déclaratives des comportements cible. De ce fait, l’exécution des scripts donneront toujours le même résultat final.
  • La gestion des lignes de code dans les contrôles de version. En utilisant un système de contrôle de version, vous n’avez plus besoin de configurer les machines manuellement.
  • La synchronisation des environnements en utilisant le système de version de contrôle et un approvisionnement automatique d’environnements. De cette façon, les intégrations continues de serveurs, tels que Jenkins, ont simplement à « écouter » le chemin dans le système de contrôle de version pour détecter les changements. Ensuite, l’outil de gestion de la configuration (par exemple Puppet) s’assure que les machines correspondantes appliquent le comportement décrit dans le contrôle de version.
  • Avec l’utilisation des outils tels que Jenkins, Puppet ou Vagrant, la configuration totale, incluant la virtualisation peut être gérer de manière automatique.

Save

Save

Save

Save

Save

Save

Save

Save

Save

Save

Posted in Agilité d'entreprise and tagged , , .

Laisser un commentaire

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