DevOPS DataOPS différence

DevOps vs DataOps : différences et complémentarités

Au début de l’informatique, les applications étaient simples et pouvaient être gérées directement par les personnes en charge du développement.

Avec le temps et l’avancée des technologies, les applications se sont complexifiées et, afin d’organiser le travail et de rationaliser les coûts, des équipes ont été créées avec des spécialisations différentes.

Ce découpage des tâches a débouché sur une organisation en deux équipes traditionnelles  : les développeurs (devs) d’un côté et les opérateurs système (ops) de l’autre.

Dev et Ops : deux équipes, deux objectifs différents

Composé de programmeurs ou encore de testeurs QA (Quality Assurance), l’équipe des développeurs a pour tâche la création et l’évolution à moindre coût, d’un service numérique (application, jeu vidéo …) qui répond aux attentes définies par un cahier des charges.  L’équipe Ops, quant à elle, a pour mission la mise en production et la maintenance du service développé. Cette équipe, composée de profils orientés backend tel que l’administrateur système ou encore l’administrateur réseau, se porte garante de la disponibilité de l’application déployée. 

Nous avons donc deux équipes avec des objectifs antagonistes ce qui peut être source de conflits. En effet, la recherche de disponibilité et de stabilité d’une application, si chère aux ops, est en général perçue comme un aspect sans intérêt aux yeux des développeurs, voire une perte de temps. Inversement, les changements seront mal perçus par les équipes d’exploitation puisqu’ils sont source d’instabilité alors que pour les développeurs il s’agira de l’essence même de leur travail. À noter que ces deux équipes ne sont, en général, pas mélangées, voire situées dans des bâtiments différents ce qui n’est pas sans conséquence au niveau de la communication. 

C’est donc dans ce contexte que la mouvance DevOps a émergé afin de réconcilier ces équipes. Le terme lui-même est la contraction de Dev et Ops et a été inventé par Patrick Debois en octobre 2009.

La philosophie DevOps 

L’approche Devops associe développeurs et opérateurs système de manière étroitement intégrée. Cette philosophie est enracinée dans la conviction que travailler ensemble en tant qu’équipe collaborative fait tomber les barrières entre ces deux mondes antagonistes, réduit les conflits et produit de meilleurs résultats.

Avec le DevOps toutes les disciplines travaillent ensemble à travers toutes les phases du cycle de vie d’un projet. La culture DevOps se caractérise par plusieurs points :

  • Les équipes Devs et Ops ont la responsabilité d’astreinte simultanée pour l’environnement complet.
  • Aucun système ou application ne doit être lancé sans la mise en place de tests automatisés et d’une surveillance (monitoring). Cela crée un contrat entre les Devs et les Ops. De même, les deux équipes doivent approuver tout lancement avant son exécution.
  • Tout environnement de production doit être le reflet d’un environnement de développement identique. Cela permet ainsi d’avoir un environnement d’essai et de réduire les accidents en production.
  • Au niveau de la communication, les équipes de développement et d’administration système ont régulièrement des réunions conjointes et doivent pouvoir rester en contact via un canal de discussion commun dédié au traitement des problèmes stratégiques et opérationnels. 
Aucun texte alternatif pour cette image

Avec le DevOps, on sort des conventions classiques de la traditionnelle réunion quotidienne ou hebdomadaire pour préférer une interaction et une communication en temps réel entre les équipes. La mise en place de canaux partagés de discussion (dits chatOps) avec des outils tels que Slack permet de communiquer dans la mesure du possible et de concerter les équipes sur la résolution un par un des problèmes.

L’automatisation est une caractéristique clé de la mouvance DevOps. Si une tâche doit être exécutée plus de deux fois, elle doit être automatisée. Appliquer l’automatisation va dispenser les équipes de consacrer leur temps sur le traitement de tâches souvent répétitives ce qui va notamment réduire les risques d’erreur humaine. L’infrastructure va donc être “capturée” sous forme de code ce qui centralise son administration et permet un meilleur suivi des versions.  Avec l’automatisation, il est possible de faire évoluer son infrastructure de manière plus sécurisée (si une montée de version échoue, un retour en arrière automatique peut s’appliquer facilement) de plus, en l’appliquant dans l’exploitation de ressources virtuelles ou venant du cloud, on garantit que les services déployés restent toujours à l’échelle. 

Le DevOps va donc être amené à manipuler différents outils d’automatisation après avoir défini clairement une stratégie d’automatisation. Une stratégie qui doit inclure plusieurs éléments, à commencer par la configuration automatisée des nouvelles machines. Ceci ne consiste pas uniquement à installer le système d’exploitation, mais à inclure l’ensemble des outils logiciels configurés pour permettre à la machine d’être utilisée en production. Les changements de configuration doivent aussi être automatisés et appliqués automatiquement à l’ensemble des machines. Mettre à jour chaque machine de manière manuelle est une tâche longue et répétitive avec un haut risque d’erreur humaine. Appliquer l’automatisation rend l’environnement consistant. Le déploiement de nouvelles fonctionnalités à partir d’un environnement de développement vers un environnement de test puis vers un environnement de production peut être automatisé tout comme l’exécution des tests destinés à valider ces nouvelles fonctionnalités. Pour terminer lorsqu’un problème est identifié sur une des machines, on doit être en mesure de déployer un correctif sur toutes les machines affectées.

Le suivi de l’état de santé de l’ensemble de l’infrastructure et des applications déployées est essentiel pour garantir un bon fonctionnement. Le DevOps va donc mettre en place des outils de surveillance (monitoring) capables de remonter des métriques pertinentes sur le fonctionnement des différents environnements et ainsi détecter toute anomalie dans le but de retrouver la cause de celle-ci.

Le travail collaboratif et le développement partagé des capacités sont au cœur d’un effort DevOps réussi. Les équipes doivent être encouragées à partager leur travail à la fois en interne (présentations, ateliers …) et en externe (conférences, livres blancs, webinars, …). Ces efforts étendent la philosophie au-delà du groupe de travail local et aident tout le monde à apprendre et à évoluer. De véritables communautés ont ainsi émergées et contribuent à la diffusion de la culture DevOps. On retrouve par exemple “Les compagnons de DevOps” ( https://forum.compagnons-devops.fr/ ) qui est la plus grosse communauté francophone sur cette mouvance. 

De nouveaux défis avec la Data

Avec l’essor du “Big data”, les entreprises sont de plus en plus confrontées à l’industrialisation d’initiatives d’apprentissage automatique à partir de données collectées de manière massive.  La construction d’un modèle d’apprentissage automatique présente des challenges supplémentaires par rapport au développement et au déploiement traditionnel de logiciels. 

En apprentissage automatique, le programme peut apprendre. L’application entraîne le modèle en utilisant des données et des résultats cibles. Concrètement, un data scientist alimente l’application en données d’entrées, ainsi qu’en données de sortie attendues. Les erreurs sont ensuite réinjectées dans l’algorithme d’apprentissage pour améliorer la précision du modèle. Cette procédure se poursuit jusqu’à ce que le modèle atteigne le niveau de précision attendu. 

Les projets d’apprentissage automatique suivent un cheminement plus complexe qu’un projet classique. En effet, les données qui sont injectées dans le modèle pour son entraînement requièrent plusieurs traitements en amont. Pour rendre les données brutes, souvent imparfaites, exploitables, l’équipe doit d’abord les nettoyer (suppression des valeurs aberrantes … ), les normaliser et les préparer. On parle ainsi de preprocessing. 

Une fois les données traitées et le modèle entraîné, celui-ci est déployé et ses performances sont surveillées. Lorsque les conditions ou exigences de l’entreprise changent, l’ensemble des étapes de preprocessing, d’entraînement et de déploiement doit être repris par l’équipe pour des changements ou améliorations supplémentaires. Ce processus se poursuit aussi longtemps que le modèle est utilisé. Le développement et le déploiement d’un système complet d’apprentissage automatique est donc un processus complexe, lent et sujet à des erreurs si celui-ci est exécuté manuellement. Néanmoins il est possible d’améliorer cela en tirant parti des mêmes processus et méthodologies qui ont intensifié colossalement la productivité

du génie logiciel et des industries manufacturières au cours des dernières décennies. L’ensemble de ces techniques vont constituer la mouvance DataOps. 

La philosophie DataOps 

La pratique DataOps s’inspire de trois méthodologies importantes qui ont révolutionné leur domaine : le développement logiciel agile, la pratique DevOps et la maîtrise statistique des procédés (MSP). L’application de la maîtrise statistique des procédés (MSP), ou Statistical Process Control (SPC) en anglais, a pour but de surveiller et de contrôler la chaîne regroupant l’ensemble des procédés destinés à transformer la donnée en valeur exploitable. Cette discipline utilise un certain nombre de techniques tels le contrôle de réception, les plans d’expérience ou les techniques de régression dans une démarche de contrôle qualité  visant à anticiper, via les écarts à une valeur donnée de référence, les mesures à prendre pour améliorer notre chaîne de transformation des données. Avec cette technique, le bon fonctionnement des processus de données dans le système opérationnel est vérifié. Si une anomalie se produit, l’équipe chargée des données sera la première à le savoir, grâce à une alerte automatisée.

Le DataOps a été initié par le besoin de gérer toujours plus de données. Il apporte les mêmes principes d’agilité aux données qui sont devenues l’actif le plus stratégique et sont désignées comme le nouveau code source. La pratique DataOps se caractérise par  : 

  • La transformation et l’enrichissement des données, pour s’assurer que des informations exploitables à partir des données soient ingérées à partir de sources de données structurées, semi-structurées et non structurées 
  • L’opérationnalisation des données, qui implique la consolidation vers une source unique de vérité, l’orchestration des données et la gouvernance des données (qui implique la sécurité, la protection des données, la reprise après sinistre et la gestion du cycle de vie) de la périphérie au cloud.

Ainsi la philosophie DataOps tend à accroître la rapidité et l’efficacité dans le traitement des données, afin qu’elles soient exploitables par les entreprises pour notamment entraîner des modèles d’apprentissage automatique conduisant à des prédictions et des analyses de plus en plus poussées. Cette méthodologie apporte une meilleure productivité des équipes informatiques avec une réduction des risques.

Sources :

  • Gil Benghiat, Christopher Bergh, and Eran Strod. The DataOps Cookbook. DataKitchen, 2019
  • Trent R. Evi Nemeth, Garth Snyder and Dan Mackin. Unix and Linux system administration handbook. Addison-Wesley, 2018.
Top

ADDRESSE
18 Rue de Villiers
92300 Levallois-Perret

SOCIAL MEDIA