Décryptage : retour sur le DevOps D-DAY 2018
26 février 2019
Nous nous sommes rendus au DevOps D-DAY 2018 à Marseille afin d’assister à plusieurs conférences sur différents sujets, tels que le Continuous Delivery, Docker en production / Kubernetes et les migrations d’applications Legacy.
Plusieurs éditeurs étaient également présents afin de nous faire découvrir leurs solutions “click & deploy”.
Nous vous partageons donc dans cet article nos impressions sur ces sujets.
La transformation DevOps
De plus en plus d’entreprises tendent à réunir les métiers du développeur et de l’administration système (ops), historiquement opposés dans les entreprises.
L’objectif d’une approche DevOps est d’accélérer le processus de livraison au bénéfice du client.
Cette transformation se met en place sur un temps relativement long (plusieurs mois), et sa réussite dépend de plusieurs critères :
- La motivation des équipes
- Intégration du DevOps dans la stratégie de l’entreprise
- Un accompagnement des personnes (volontaires) par des experts
Le ressenti que nous avons après avoir assisté à plusieurs conférences sur ce sujet, est que cette transformation est bien installée dans de nombreuses entreprises.
Les containers, fers de lance du DevOps
De plus en plus d’infrastructures sont déployées en production via des containers, notamment avec Docker, qui s’est imposé comme principale référence dans le domaine.
Le déploiement de containers en production, inenvisageable il y a quelques années par la communauté Ops, se démocratise de plus en plus grâce à des outils d’orchestration, tels que Kubernetes, qui permettent de garantir une haute disponibilité et une scalabilité horizontale des containers.
La démocratisation des containers a favorisé le développement d’applications basées sur des micro-services. Chaque service pouvant être isolé dans son propre container, ce qui facilite la maintenance des applications tout en facilitant les déploiements.
Le cycle de vie d’un projet DevOps
Plusieurs conférences auxquelles nous avons assisté traitaient de l’organisation d’un projet DevOps, soit lors de la mise en place d’un nouveau projet, soit lors de la migration d’un projet dit legacy vers une approche DevOps
D’ailleurs, beaucoup d’acteurs tels que Nutanix, Vmware, Treeptik ou Drops étaient présents pour présenter des solutions clé en main de gestion du cycle de vie d’un projet DevOps avec des outils “click-and-deploy”.
C’est une nouvelle tendance qui permet au travers d’une interface Web de configurer le provisioning et le déploiement de différents types de ressources, on-premise ou sur le cloud.
Certaines solutions permettent également de s’interfacer avec des outils IaC (Infrastructure as A Code), tels que Terraform par exemple, afin d’inclure ou de réutiliser ses propres scripts de déploiement.
Le développement
Une des caractéristiques du mouvement DevOps largement abordée lors des conférences est la mise en place d’un ensemble de bonnes pratiques dès le stade du développement, dans le but d’avoir des containers identiques du développement jusqu’à l’exploitation.
Parce qu’il est souvent difficile d’appliquer les contraintes de production dès le stade du développement, des outils tels que Skaffold sont apparus, permettant en combinaison avec Docker Desktop de déployer à la volée ses propres containers Kubernetes dès qu’une modification est effectuée sur un des fichiers de configuration directement sur les postes de développement. Très utile pour assouplir le processus de développement des images Docker et de la mise en place de la stack. Des tests peuvent également être lancés automatiquement sur la structure des images via container structure test.
Intégration & Tests
Le sentiment que nous avons suite à ces conférences est que le mouvement DevOps facilite grandement l’intégration continue sur les projets.
L’outil les plus représenté lors de cette journée reste Jenkins qui, couplé à Docker, Harbor et quelques plugins, permet de garantir la qualité des produits développés.
Le déploiement
L’orchestrateur est un outil indispensable pour le déploiement en production de containers puisqu’il offre la possibilité de faire de la haute disponibilité et permet ainsi d’éviter certains pièges et mauvaises pratiques, qui nous ont notamment été rappelés par Stéphane WOILLEZ lors de sa conférence “Déploiement des conteneurs en production : adoptez la bonne méthode” :
- Ne pas exécuter la commande docker run (utiliser un orchestrateur)
- Ne pas monter des volumes en mode mount point
- Ne pas pull les images depuis DockerHub (utiliser un registry privé)
- Ne pas se connecter au host pour lancer une commande docker exec
L’exploitation et la maintenance
Le déploiement des containers dans l’environnement de production est désormais systématiquement effectué dans un cluster Kubernetes.
Les images Docker doivent au préalable avoir été signées, pour garantir l’authenticité, et scannées à la recherche d’éventuels malwares (notary/Helm). Ces opérations doivent être réalisées tout au long du cycle de vie du projet (de la phase de développement jusqu’à la mise en production).
Afin de centraliser les logs sur l’ensemble des nodes K8s, il est recommandé d’utiliser un outil de centralisation des logs (les conteneurs étant éphémères). Classiquement on retrouve dans ce rôle le trio Elastic/LogStash/Kibana.
Il est également essentiel d’assurer un monitoring permanent de l’ensemble des containers du cluster, afin d’être alerté en cas d’incident. Grafana est par exemple souvent utilisé pour la surveillance d’un cluster de containers Docker.
Pour aller plus loin
Découvrez notre expertise DevOps
Cloud & DevOpsExpert technique/DevOps