- Première apparition du terme en 2008/2009 lors de la conférence de Andrew Shafer et Patrick Debois intitulée "[Agile Infrastructure](https://www.youtube.com/watch?v=Y_u84PNrX9g)"
- Contraction de "Development" et "Operations"
---
### Objectifs
- **Automatiser** (et donc fluidifier) les étapes du cycle de vie d'un logiciel, du développement à la production.
- **Superviser** l'ensemble de ces étapes afin d'obtenir des indicateurs concrets de la "santé" du projet.
---
### Un mouvement
- Intimement lié aux pratiques "[Agile](http://agilemanifesto.org/)"
- Un socle de valeurs et des pratiques en constante évolution
- Privilégier les cycles courts: _"release often, release early"_.
- S'appuyer sur les outils méthodologiques proposés par les méthodes agiles ([SCRUM](https://en.wikipedia.org/wiki/Scrum_%28software_development%29), [Kanban](https://en.wikipedia.org/wiki/Kanban), [Extreme Programming](https://fr.wikipedia.org/wiki/Extreme_programming)...).
- Définir les objectifs à court/moyen terme en gardant à l'idée les objectifs à long terme (découpage des tâches).
- S'appuyer sur un gestionnaire de version des sources solide ([Git](https://git-scm.com/), [Bazaar](http://bazaar.canonical.com/en/), [Mercurial](https://www.mercurial-scm.org/)...). **Il est central dans le processus DevOps.**.
- Sélectionner une **forge logicielle** pour gestionnaire de version des sources ([Gitlab](https://about.gitlab.com/), [Gitea](https://gitea.io/en-US/)...).
- Choisir une **méthodologie de travail commune** à l'ensemble de l'équipe et cultiver la rigueur quant à son usage.
- **Former régulièrement** les membres de l'équipe à l'usage de l'outil de gestion de version des sources.
- **Définir clairement les objectifs de qualité** attendus par l'équipe pour sa base de code source.
- Intégrer dans le processus de développement des outils permettant de vérifier l'état du projet de manière automatisée (qualité du code, tests de non régression...). Ces outils prennent aujourd'hui principalement la forme de **serveurs d'intégration continue** ([Jenkins](https://jenkins.io/), [Gitlab CI](https://about.gitlab.com/features/gitlab-ci-cd/)...).
---
### Mise en pratique
- Un point sur la qualification en général
- Les tests unitaires Javascript avec [Mocha](https://mochajs.org/#installation)
- Découverte des tests fonctionnels web avec [NightmareJS](https://github.com/segmentio/nightmare) et [Mocha](https://mochajs.org/#installation)
- Validation des règles de style Javascript avec [ESLint](https://eslint.org/)
- Mise en place d'un pipeline de validation avec [Gitlab CI](https://docs.gitlab.com/ee/ci/)
- Choisir un système d'empaquetage pour la diffusion du logiciel (Archive compressée ? Paquet GNU/Linux ? Images de conteneur, de machine virtuelle ?).