Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

L'évolution vers le (Dev)NoOps

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Chargement dans…3
×

Consultez-les par la suite

1 sur 61 Publicité

L'évolution vers le (Dev)NoOps

Télécharger pour lire hors ligne

Le Cloud a apporté son lot de nouveautés : nouveau business model, nouvelle façon de concevoir, déployer et d'opérer les infrastructures et applications, qu'elles soient de type IaaS ou PaaS et a facilité l'introduction du concept DevOps en son sein.

D'autres innovations telles que les conteneurs, Serverless ou encore architecture orientée micro-service, ont également apportées de nouvelles façons d'appréhender les applicatifs, que l'on désignerait comme Cloud Native, si un certain nombre de caractéristiques sont appliquées, comme le résume très bien les TWELVE FACTORS, que nous aborderons ici.

Le Cloud a apporté son lot de nouveautés : nouveau business model, nouvelle façon de concevoir, déployer et d'opérer les infrastructures et applications, qu'elles soient de type IaaS ou PaaS et a facilité l'introduction du concept DevOps en son sein.

D'autres innovations telles que les conteneurs, Serverless ou encore architecture orientée micro-service, ont également apportées de nouvelles façons d'appréhender les applicatifs, que l'on désignerait comme Cloud Native, si un certain nombre de caractéristiques sont appliquées, comme le résume très bien les TWELVE FACTORS, que nous aborderons ici.

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à L'évolution vers le (Dev)NoOps (20)

Publicité

Plus récents (20)

L'évolution vers le (Dev)NoOps

  1. 1. #GlobalAzure L’évolution vers le (Dev)NoOps ;-)
  2. 2. http://www.e-novatic.fr @enovatic
  3. 3. ■Introduction ■Une application Cloud Native ? ■L’approche DevOps ■Les conteneurs et architecture orientées micro-service ■Infrastructure As Code – IaC ■Les architectures Serverless ■L’Application Management Performance dans une chaîne NoOps ■L’approche NoOps ■Conclusion Agenda
  4. 4. ■Nouvelle façon de concevoir, déployer & d’opérer les infra & applis ■NOUVEAU business model ! ■Une transformation CLOUD c’est transformer son Operating & Delivery Model ■Nouvelles notions: PaaS, serverless, conteneurs, micro services, … ■Utiliser les outils cloud native ■Nouvelles façons de travailler: DevOps, DevSecOps, NoOps ■Mort des admins (?), transformation des métiers admin & dev => Chaine réussie d’une transformation cloud ! Le Cloud: le messie ? Oui, mais…
  5. 5. ■Méthodologie pour construire des applications software-as-a-service qui : ■Utilisent un format déclaratif pour l’automatisation des installations ■Ont un contrat clair avec l’OS sous jacent et qui offrent une portabilité maximale pour l’exécution sur différents environnements ■Sont adaptées à un déploiement sur des plateformes cloud ■Minimisent la divergence entre développement et production et permettent un déploiement continu pour un maximum d’agilité ■Peuvent monter en charge sans changement majeur d’outillage, d’architecture ou de pratique de développement Les Twelve Factor
  6. 6. Faites moi un sandwich 1. Prendre du pain 2. Le couper en deux 3. Mettre du beurre sur un morceau 4. Poser une tranche de jambon 5. Mettre la deuxième tranche de pain Format déclaratif Je veux ce sandwich “Un sandwich avec deux tranches de pain. Il doit avoir du beurre sur les morceaux de pain et une tranche de jambon entre les deux morceaux de pain  Impératif  Déclaratif
  7. 7. ■Il existe plusieurs approches, classique (Waterfall par exemple) et DevOps (Agile, ...) qui incluent les OPS (Ingénieurs systèmes, architectes, ...) et les DEV (développeurs, Architectes logiciels, ...). ■Dans une approche classique: ■Les DEV produisent du code, les évolutions fonctionnelles, ... ■Les OPS mettent à disposition les infrastructures sans tenir compte des évolutions logicielles mais plutôt en se concentrant sur le SLA du service ainsi que la performance associée ■Dans une approche de type DevOps, l'ensemble des acteurs, soit les DEV et les OPS se répartissent les responsabilités et sont tous impliqués dans la chaîne de mise en production d'une application Le concept DevOps
  8. 8. Le concept DevNoOps, les nouvelles technologies permettront de s'affranchir des OPS dans le sens où le code de l'infrastructure ne deviendra plus qu'une variable dans la chaîne ! En images
  9. 9. CI, CD… KEZAKO ? CI: intégration continue, une pratique qui vise à faciliter la préparation d'une version CD: une livraison continue ou un déploiement continu
  10. 10. ■Intégration continue consiste à fusionner les modifications dans la branche principale aussi souvent que possible. Les modifications du développeur sont validées en créant une génération et en exécutant des tests automatisés par rapport à la génération ■Livraison continue est une extension de l'intégration continue qui, en plus d'avoir automatisé les tests, automatise le processus de publication et de déploiement à tout moment en cliquant sur un bouton ■Déploiement continu va plus loin car chaque modification apportée à toutes les étapes de votre pipeline de production est transmise aux utilisateurs. Il n'y a pas d'intervention humaine, et seul un test échoué empêchera le déploiement d'un nouveau changement dans la production En détail
  11. 11. CI/CD en images BUILD Test unitaires Intégration Test UAT Production BUILD Test unitaires Intégration Test UAT Production BUILD Test unitaires Intégration Test UAT Intégration Continue Livraison Continue Déploiement Continu Automatisé Manuel
  12. 12. Pet vs Cattle
  13. 13. Mutable vs immutable
  14. 14. Baking vs Frying
  15. 15. Exemple concret
  16. 16. La vue fonctionnelle
  17. 17. L’architecture technique
  18. 18. ■Chaque micro service dispose de son datastore ■Cycle de vie indépendant pour chaque micro service ■Peu / pas d’adhérence entre micro services ■Scalabilité indépendante ■Déploiements plus petits, plus fréquents, plus nombreux ■Isolation des ressources Les micro services en bref
  19. 19. ■Les architectures micro-services permettent des déploiements plus petits, plus fréquents et plus nombreux ■Cela qui induit une multiplication des conteneurs (Cattle) car une application pensée micro-services est découpée en de multiples services/composants ■L'orchestrateur sera révélera indispensable pour gérer cet ensemble de Cattle... Pour récapituler
  20. 20. Transport de marchandises avant les années 60 Multiplicité des marchandises Est ce que je m’inquiète de l’interaction entre marchandises? Multiplicité des méthodes de transport et de stockage Est ce que je peux transporter rapidement et de manière fluide?
  21. 21. Le conteneur a apporté une solution Multiplicité des marchandises Est ce que je m’inquiète de l’interaction entre marchandises? Multiplicité des méthodes de transport et de stockage Est ce que je peux transporter rapidement et de manière fluide?
  22. 22. Et en IT, ça donne quoi ? Multiplicité des piles applicatives Est ce que les services et applications interagissent de manière appropriée ? Multiplicité des plateformes matérielles ou virtuelles Est-ce que je peux migrer rapidement et de manière fluide? User DB QA server Development VM Contributor’s laptop Customer Data Center Production Cluster Public Cloud Static website nginx 1.5 + modsecurity + openssl + bootstrap 2 Web frontend Ruby + Rails + sass + Unicorn Queue Redis + redis-sentinel Analytics DB hadoop + hive + thrift + OpenJDK
  23. 23. Le conteneur apporte LA solution  32 Multiplicité des piles applicatives Est ce que les services et applications interagissent de manière appropriée ? Multiplicité des plateformes matérielles ou virtuelles Est-ce que je peux migrer rapidement et de manière fluide? User DB Analytics DB Queue Web frontend Static website QA server Development VM Contributor’s laptop Customer Data Center Production Cluster Public Cloud
  24. 24. Consiste à reconstruire la vue qu’un processus a de son environnement d’exécution Lui donner l’illusion qu’il est le seul à s’exécuter sur la machine, avec une arborescence de fichiers limitée par le périmètre du container Le principe
  25. 25. En image VM
  26. 26. ■Les conteneurs permettent de conditionner l'application avec son environnement d'exécution complet, soit tous les fichiers nécessaires à son exécution. L'image de conteneur contient toutes les dépendances de l'application, elle est portable et cohérente au fur et à mesure qu'elle passe du développement au test et enfin à la production. Récapitulatif Fonctionnalité Conteneur VM Définition Virtualisation d'OS Virtualisation de serveur OS Partage OS hôte Chaque VM a son propre OS Taille Mo Go Démarrage secondes minutes Kernel Partagé avec l'hôte Chaque VM a son propre Kernel
  27. 27. Bref, quels usages pour les conteneurs
  28. 28. ■Configurer des environnements de développement locaux qui s'exécutent exactement comme un serveur de production ■Exécuter plusieurs environnements de développement à partir du même hôte avec un logiciel, des systèmes d'exploitation et des configurations uniques ■Permettre à quiconque de travailler sur le même projet avec les mêmes paramètres, quel que soit l'environnement hôte Et le DevOps la dedans ?
  29. 29. En termes de part de marché, les technologies de conteneurs les plus largement adoptées ne sont pas étonnant: Docker à 52% et Kubernetes en tant d'orchestrateur à 30%. Un point intéressant révèle que 71% des personnes interrogées ont déployées des conteneurs dans une machine virtuelle, ce qui signifie que les machines virtuelles ne vont pas disparaître, mais la tendance est de réduire les coûts de licence. La tendance du marché Source: Diamanti
  30. 30. ■Efficacité: la consommation (cloud) a lieu sur le conteneur plutôt que sur l'application ou la machine virtuelle, densité d’applications bien supérieure, sans sacrifier les performances, tout en réduisant le temps nécessaire pour effectuer des tâches courantes, en accélérant le déploiement en s'intégrant parfaitement dans une chaîne DevOps ■Flexibilité: plate-forme de conteneurs véritablement agnostique, offrant une véritable portabilité, basés sur des normes ouvertes et s'exécutent sur toute infrastructure (Cloud, virtuelle, ...) ■Sécurité: les plates-formes de conteneur isolent les applications de l'infrastructure, ainsi que des autres applications Trois principales caractéristiques
  31. 31. ■Comme tout élément de l'infrastructure informatique, les conteneurs doivent être surveillés et contrôlés ■La courte durée de vie des conteneurs et leur densité accrue ont des implications importantes dans la surveillance des infrastructures qui doivent être surveillés individuellement ■La réponse réside dans les outils d’orchestration. Ceux-ci surveillent, gèrent le clustering et la planification des conteneurs L’orchestration, pourquoi faire ?
  32. 32. ■Il existe trois solutions majeures d'orchestration de conteneurs dans le cloud : Docker Swarm, Kubernetes (K8s pour les intimes) et Mesosphere, mais Kubernetes est de loin le programme d'orchestration le plus répandu ■Docker intègre Kubernetes dans sa plateforme Docker, tout comme Microsoft avec Azure ou encore Mesosphere avec DC/OS ■54% des entreprises Fortune 100 utilisent Kubernetes.... Faites-le (bon) choix ! La tendance du marché
  33. 33. ■Continuité - lorsqu'une application est composée de composants granulaires, il devient beaucoup plus facile de faire évoluer cette application en mettant à jour et en améliorant ces composants individuellement. ■Résilience - maintenir la disponibilité et la réactivité en cas d'échec d'un regroupement de conteneurs. Cela signifie qu'un Datacenter n'a pas besoin de répliquer l'application entièrement pour basculer vers l'application secondaire en cas de défaillance ! ■Évolutivité - capacité intégrée des charges de travail de se multiplier dans le système, afin de les redimensionner selon des règles définies Trois fonctions essentielles
  34. 34. IaC permet de fournir une infrastructure reproductible, standardisée et extensible et est l'une des premières étapes de l'intégration des pratiques DevOps au sein d'une entreprise On gère la gestion de la configuration dans le pipeline d'intégration de de livraison continue La promesse
  35. 35. ■Infrastructure as Code repose sur des outils offrant une abstraction haut niveau des ressources d'infrastructure, offrant une bien meilleure lecture qu'un fichier JSON ■La séparation de la configuration du code, et de sa variabilisation permettront de maximiser l'usage du template pour de multiples environnements (1 template servira à 4 environnements) ■Le code devient ainsi un build, qui est combiné avec une configuration pour créer une version Le principe de l’IaC
  36. 36. Distinguer la différence entre l'orchestration de la configuration et le management de la configuration: ■le premier inclut des outils comme Terraform ou DsC qui automatise le déploiement ■le second inclut d'autres outils comme Ansible qui aide à configurer les systèmes (création de compte de services, ...) et applications (installation de SQL Server, ...) sur des infrastructures préalablement déployées avec Terraform Terraform, Chef, Puppet, Ansible… même combat ?
  37. 37. ■Il ressort principalement 3 uses cases concernant le Serverless : des APIs "simple" et scalable, l'automation, et le Data Processing. Les avantages sont multiples: configuration minimale, support multi langages (python, NodeJS, Java, Powershell, ...), support de l'ALM et le streaming des logs ■Les applications sans serveur déployées sont fondamentalement sans administration et évoluent automatiquement avec la demande, ce qui évite de gérer des instances de serveur et centrées sur le CODE avec une tarification adaptée (paiement à l'exécution du code et non par instance) Serverless, FaaS, … Kézako ???
  38. 38. ■On entend beaucoup de choses sur le Serverless, que c'est le NoOps par excellence, que cela va induire un "DEPRECATED" sur les conteneurs, etc... ■La technologie Serverless se limite à un déclenchement d'une exécution de code (fonction) selon un besoin (événement), sans qu'un serveur doive fonctionner en continu ■Point bloquant important, le Serverless est locké par Cloud Providers qui utilisent leurs propres services, API, ... Une portabilité n'est donc pas possible et nécessite une réécriture du code de la fonction (OpenFaaS, Kubeless, IronFunctions, ?) Quelques informations
  39. 39. Analyse de données anormales toutes les 15 minutes Exemple d’une application Serverless
  40. 40. ■Les APM modernes (orientés Cloud et/ou DevOps) permettent d'améliorer la performance, réduire le temps de résolution d'incident(s), d'anticiper les problèmes, d'identifier les "roots causes", d'améliorer l'expérience utilisateur, les tests, ... ■Les APM peuvent fournir des analyses prédictives pour identifier les anomalies et alerter les équipes DevOps avant que le service soit impacté ■Plus la solution APM sera capable d'identifier un problème rapidement, plus vite les équipes DevOps pourront mitiger l'impact ! La promesse des APM
  41. 41. ■Outils d’analyse pour aider à diagnostiquer les problèmes ■Permettre d’améliorer continuellement les performances ■Large éventail de plates-formes, notamment .NET, Node.js et J2EE, … ■S’intègre au processus DevOps et offre des points de connexion à un large éventail d’outils de développement Azure Application Insights
  42. 42. ■Lorsque nous parlons de Self Healing ou Auto Remediation, on parle d'un système capable de percevoir qu'il ne fonctionne pas correctement et, sans intervention humaine, de faire les ajustements nécessaires pour rétablir son fonctionnement normal ■On pourrait presque parler ici de "Autonomic Computing", mais ce terme sous-entends en plus que l'application est auto-configurable, auto-optimisée et auto-protégée ■Mais pas que !!! Pour qu'une application puisse s'auto-réparer, elle doit: détecter les échecs, répondre aux échecs et enregistrer et surveiller les défaillances pour obtenir des informations opérationnelles Quid du NoOps ?
  43. 43. Une approche NoOps signifie l’ automatisation du déploiement, de la surveillance et de la gestion des applications On pourrait aussi avoir une approche uniquement NoOps sans DevOps ? Il faut garder à l'esprit d'avoir comme cible une transition totalement automatisée entre le développement et l'exploitation La promesse NoOps, c'est une infrastructure qui a atteint un tel niveau d'automatisation qu'aucune équipe OPS n'est nécessaire pour l'administrer… …pour le Cloud… NoOps… Un DevOps réussi ?
  44. 44. ■On parle ici de "Secure by design", DevSecOps consiste à prendre en compte dans la démarche globale DevOps dès le début, l'intégration des équipes sécurité dans ce dispositif, pour prévenir et corriger plus facilement et rapidement des problèmes de sécurité, d'intégrer les contraintes sécurité client, ... ■Un certain nombre d'aspects liés à la sécurité peuvent être intégrés et automatisés dans la chaîne CI/CD DevOps comme la signature de code, test unitaires, dans le but, à minima de couvrir les problèmes de sécurité OWASP TOP10 Tiens, j’ai entendu parler de DevSecOps ?!
  45. 45. ■Les opérations restent essentielles dans toute démarche DevOps mais le métier se transforme : les éléments serveurs, réseaux, etc doivent approcher une méthode Infra as Code, un administrateur ne provisionnera plus à la main une VM mais un docker ou une VM "Térraformée" et "Puppetisée" qui s'intègre dans une chaîne DevOps ■NoOps ne signifie pas forcément plus d'opérations, mais plutôt d'intégrer By Design toutes les méthodologies et technologies abordées ici pour pousser l'automatisation au maximum en vue de limiter, voir faire disparaître les interventions manuelles/humaines sans ou peu de valeur ajoutée Nous y voilà…
  46. 46. ■Pour conclure, les sujet abordés ici permettront à coup sûr de tendre vers le NoOps ! ■comme l'Infra as Code et apportera des apports indéniables et mesurables rapidement ■Mais quoiqu'il en soit, NoOps est encore très jeune dans son approche, et il y aura toujours besoin des OPS pour maintenir les architectures et les infrastructures, à minima pour les superviser Le mot de la fin
  47. 47. Merci!

Notes de l'éditeur

  • Quelques exemples
  • CD: une livraison continue ou un déploiement continu, et bien que ces deux pratiques aient beaucoup en commun, elles ont également une différence significative que nous allons détailler
  • Les architectures micro-services permettent des déploiements plus petits, plus fréquents et plus nombreux mais ils doivent être fortement découplés, distribués et élastiques
    Ce qui induit une multiplication des conteneurs (Cattle) car une application pensée micro-services est découpée en de multiples services/composants qui sont faciles à updater, débugger, etc...
  • Les containers sont isolés mais partagent l’OS et le cas échéant certaines librairies. Il en résulte un déploiement et un redémarrage plus rapide, moins d’overhead, ainsi qu’une grande facilité de migration
  • Je prends l'exemple de mon blog où j'ai plus que divisé par deux les coûts de son hébergement en passant d'une VM à une solution de conteneur, en l'occurrence Docker.
    Donc les coûts Azure sont moindres, tout comme les dépenses de maintenance et de licence.

    Efficacité: la consommation (cloud) a lieu sur le conteneur plutôt que sur l'application ou la machine virtuelle, génère un impact mesurable à tout point de vue grâce à une densité d’applications bien supérieure à celle des machines virtuelles, sans sacrifier les performances, tout en réduisant le temps nécessaire pour effectuer des tâches courantes, en accélérant le développement et le déploiement en s'intégrant parfaitement dans une chaîne de déploiement continu DevOps
    Flexibilité: avec une plate-forme de conteneurs véritablement agnostique, les entreprises bénéficient d'une réelle flexibilité en libérant les applications de leur environnement et de pouvoir les héberger en fonction des besoins. De plus, les conteneurs offrent une véritable portabilité car ils sont basés sur des normes ouvertes et s'exécutent sur toute infrastructure (Cloud, virtuelle, ...). Ainsi, les entreprises n'ont plus besoin de s'engager à long terme sur leur infrastructure
    Sécurité: les plates-formes de conteneur isolent les applications de l'infrastructure, ainsi que d'autres applications, ce qui réduit la surface exposée

  • Il existe trois solutions majeures d'orchestration de conteneurs dans le cloud : Docker Swarm, Kubernetes (K8s pour les intimes) et Mesosphere, mais Kubernetes est de loin le programme d'orchestration le plus répandu (anciennement BORG qui était utilisé par google pour ses propres besoins pour gérer ses charges de travail à l'échelle mondiale et sur des dizaines de milliers de nœuds).
    Il y a quelques temps, Mesosphere a intégré Kubernetes, en l'intégrant à DC/OS. Docker intègre Kubernetes dans sa plateforme Docker, tout comme Microsoft avec Azure... Les utilisateurs peuvent choisir d'utiliser Kubernetes et / ou Docker Swarm pour l'orchestration, mais il convient de noter que 54% des entreprises Fortune 100 utilisent Kubernetes.... Faites-le (bon) choix !
  • La tâche principale de l'orchestrateur consiste à maintenir l'état de fonctionnement des applications dans son giron, il gère un cluster de nœuds faisant référence à des serveurs physiques ou virtuels. La tâche principale de l'orchestrateur consiste à maintenir l'état de fonctionnement des applications dans son giron, il gère un cluster de nœuds faisant référence à des serveurs physiques ou virtuels. 
  • On pourrait presque parler de template dynamique s'inscrivant parfaitement dans une logique DevOps !
  • pourrait ton parler de la mort de la documentation ? à condition de bien commenter son code)
  • Bref, on pourrait presque parler de template dynamique s'inscrivant parfaitement dans une logique DevOps, car on va gérer la gestion de la configuration dans le pipeline d'intégration de de livraison continue.

    IMMUTABLE et FRYING !
  • On entend beaucoup de choses sur le Serverless, que c'est le NoOps par excellence, que cela va induire un "DEPRECATED" sur les conteneurs, etc... On va plutôt dire que c'est du "Cloud Native" par excellence et que la réalité est que tout composant a besoin d'OPS même ceux sur lesquels où il y a peu de contrôle.
    Il ne faut pas confondre Serverless et NoOps. Si on prend le mot Ops (Opérations) cela ne signifie pas uniquement des opérations d’administration des systèmes. Cela signifie également à minima le suivi, le déploiement, la sécurité, la gestion du réseau, ... Mais la jeunesse de la technologie induit d'autres contraintes opérationnelles comme le debug, par exemple.
  • NoOps peut s'inscrire essentiellement dans du PaaS mais pas seulement, on pourrait décorréler le NoOps de l'approche DevOps pour réduire les opérations d'exploitations telles que la remédiation basée sur de l'IA, par exemple. Certains diront que NoOps est un DevOps réussi...

    NoOps est très orienté Cloud par nature et non au Datacenter traditionnel, car dans ces derniers on aura toujours des tâches "bas niveau" comme le provisionning de serveur physique, switches réseaux, stockage, ... Il faut faire abstraction de ces éléments, les conteneurs abordés plus haut sont LA réponse pour du NoOps (mais DevOps aussi).
  • Un certain nombre d'aspects liés à la sécurité peuvent être intégrés et automatisés dans la chaîne CI/CD DevOps comme la signature de code, test unitaires, intégration dans des Runtime Application Self Protection (RASP), ou encore paramétrer le WAF (Web Application Firewall) en mode apprentissage, ... dans le but, à minima de couvrir les problèmes de sécurité OWASP TOP10.
  • A titre d'exemple, les Datacenters Azure, qui sont énormes ne sont maintenus que par une poignée de personnes, je pense que l'on peut parler ici de NoOps mais dans l'esprit "infrastructure management"...
  • Mais bien entendu, toutes les structures ne sont pas des des GAFAM mais certains éléments abordés ici peuvent se mettre facilement en œuvre comme l'Infra as Code et apportera des apports indéniables et mesurables rapidement.

×