Guide‐devops: Inroduction - capabdou/guide-devops GitHub Wiki

Conceptualisé en Belgique en 2009 par l'informaticien Patrick Débois Le DevOps vise à unifier le développement de logiciel (Dev) avec l'administration des infrastructures informatiques (Ops) Le principale enjeu du DevOps est de prendre en compte les contraintes de déploiement et d'exécution des applications dès leur programmations.

L'objectif est de réduire les problèmes de performance et le volume de bug et de faille.

Le DevOps passe par la mise en œuvre de diverses outils:

  • D'abords les outils de GESTION DE CODE qui reposent en général sur la technologie open source GIT

  • Ensuite des outils pour gérer la configuration des serveurs comme Ansible, Puppet ou SaltStack

  • Puis des outils pour automatiser le déploiement de ces serveurs comme par exemple Terraform ou Cloudformation

  • Enfin les outils d'intégrations et de déploiement continue comme Jenkins ou CircleCI qui Automatisent le test du code, sa compilation, puis son transfert sur l'environnement de production.

En aval des outils de monitoring et d'observabilité donnent une vue globale des performances, des éventuelles problèmes , des bugs, pour sécuriser le tous des outils de gestion des secrets comme vault par exemple qui stock MDP, clé privé ou identifiant pour contrôler l'accès aux applications. De plus en plus les éditeurs tentent à regrouper l'ensemble de ses fonctionnalité au sein de plateforme intégré, c'est le cas de Gitup ou de Gitlab.

Les rôles dans DevOps Ingénieur DevOps : Ce rôle est central pour faciliter la collaboration entre les équipes de développement et d'opérations. L'ingénieur DevOps doit avoir une expertise étendue en développement, gestion de l'infrastructure, administration des systèmes, et être familier avec les chaînes d'outils DevOps. Des compétences interpersonnelles sont également essentielles pour travailler au-delà des silos organisationnels.

Processus DevOps Le processus DevOps se décompose en plusieurs étapes clés :

  • Planifier : Définir les objectifs et le travail attendu.

  • Coder : Créer et soumettre des modifications au code.

  • Build : Compiler, tester et empaqueter le code.

  • Tester : Soumettre les builds réussis à une série de tests.

  • Livrer : Conserver la dernière version réussie pour le déploiement.

  • Déployer : Déploiement dans des environnements de test ou de production.

  • Opérer/configurer l’infrastructure : Construire ou maintenir une infrastructure évolutive.

  • Monitoring : Contrôler l'application après sa mise en production.

Principes du DevOps Les principes essentiels du DevOps sont regroupés sous l'acronyme CAMS :

  • Culture : Favoriser la collaboration entre les équipes.
  • Automatisation : Automatiser le développement, le déploiement, et la configuration.
  • Mesure : Utiliser des métriques pour évaluer les performances.
  • Partage : Partager les connaissances et les bonnes pratiques.

Infrastructure en tant que Code (IaC) L'IaC permet de gérer et de provisionner l'infrastructure via du code plutôt que par des processus manuels. Cela facilite la modification, la distribution, et garantit la cohérence des environnements. Des outils comme Terraform, Ansible, Chef, et Puppet sont couramment utilisés pour l'IaC.

Conclusion Implémenter une culture DevOps nécessite une transformation organisationnelle profonde, centrée sur la collaboration, l'automatisation, et l'apprentissage continu. En adoptant les principes et les processus DevOps, les organisations peuvent accélérer leur cycle de développement logiciel, améliorer la qualité de leurs produits, et renforcer la satisfaction des clients.

Ce guide offre une vue d'ensemble de ce qu'il faut savoir pour démarrer avec DevOps. Il est important de noter que chaque organisation est unique, et il peut être nécessaire d'adapter ces principes et processus à vos besoins spécifiques.