Vous êtes sur la page 1sur 15

DevOps

doudou-sensei
DevOps

« DevOps est la combinaison de philosophies culturelles, de pratiques


et d'outils qui augmentent la capacité d'une organisation à fournir des
applications et des services à grande vitesse : faire évoluer et améliorer
les produits à un rythme plus rapide que les organisations qui utilisent
les processus traditionnels de développement de logiciels et de gestion
de l'infrastructure » -- AWS
Un bref historique : le modèle en cascade

• Une approche planifiée et linéaire

• Toutes les étapes doivent être planifiées et programmées à l'avance

• Chaque phase du cycle de vie du développement logiciel ne doit pas


commencer tant que la phase précédente n'a pas été achevée
Un bref historique : le développement agile

• Une approche cyclique axée sur le retour d'information

• Met l'accent sur le retour d'information continu de la part des


utilisateurs finaux

• Se concentre sur des cycles de développement courts qui fournissent


des mises à jour incrémentales

• Capitalise sur l'intégration et le déploiement continus


Modèle en cascade vs. développement agile
Un bref historique : les systèmes de gestion
d'entreprise

• Aider les équipes à gérer l'infrastructure et les applications


informatiques

• Se concentrer sur l'optimisation de la fourniture de services


informatiques

• Utile pour la gestion et la surveillance d'applications complexes à


l'échelle de l'entreprise
Qu'est-ce que le DevOps ?
• Intègre toutes les parties impliquées dans le développement et le
déploiement de logiciels dans un flux de travail unique

• Met l'accent sur la collaboration entre les développeurs et les


opérations informatiques

• Met l'accent sur la rapidité de livraison, la haute qualité et la fiabilité


• Met l'accent sur l'utilisation de l'automatisation

• Étend les principes Agile au-delà du code, à l'ensemble du processus


de développement logiciel
Caractéristiques principales du DevOps

• Collaboration
• Automatisation
• Intégration continue
• Tests continus
• Déploiement continu
• Correction rapide
Outils de l'industrie
Infrastructure as Code (IaC)
Énoncé du problème

• Les applications distribuées...


• sont sensibles à la manière dont elles sont configurées
• par exemple, les besoins d'un serveur de base de données seront différents de ceux d'un
serveur web
• sont mises à jour en permanence
• le nouveau code et les correctifs sont déployés quotidiennement, voire toutes les heures
• sont exploités par des équipes humaines
• i.e. Possibilité d'une "erreur d'opérateur"
• fonctionnent sur des dizaines/centaines/milliers de nœuds
Comment déployer notre infrastructure ?

• Tout configurer manuellement !


• Est-ce que ce système est évolutif ? Clairement non

• L'infrastructure en tant que code


• Déclarez votre configuration d'infrastructure dans un format spécifique
• Votre cadre IaC déploie/met à jour votre infrastructure cloud !
• Est-ce que ce système est évolutif ? Oui !
Idées d'infrastructure en tant que code

• Approches pour "écrire" la configuration :


• Déclarative : définir l'état cible de votre infrastructure
• À quoi devrait ressembler le déploiement éventuel de l’infrastructure ?

• Impérative : définir comment le système de configuration doit mettre en


place l’infrastructure
• Comment le système doit-il déployer votre application ?

• Intelligente : définir les relations et les contraintes entre les services, et le


système déterminera comment et quoi mettre à jour
Idées d'infrastructure en tant que code

• Approches pour la mise à jour de la configuration :


• Push : un serveur central indique aux serveurs enfants leur configuration

• Pull : les serveurs enfants demandent leur configuration à un serveur central


Solutions d’IaC

• Ansible : declarative/imperative ; Push


• Puppet : declarative ; Pull
• Chef : imperative ; Pull
• Salt : declarative
• Terraform : declarative/intelligente ; Push

Vous aimerez peut-être aussi