DevOps
Mise en place, maintenance et accompagnement à l’utilisation des techniques et des outils de devops (Git, Docker, Ansible, Jenkins, SonarQube, Gitlab….).
Fort de son expérience dans la mise en œuvre de solutions de déploiement continue avec de nombreux projets, Ethersys peut aider vos équipes de développement à déployer les processus propres aux principes du devops.
Concept
Le principe du DevOps est de rapprocher le code produit par vos développeurs de son utilisation finale en automatisant une grande partie des étapes intermédiaires. Ainsi, dans l’idéal, à chaque modification du code d’un projet, ce dernier est analysé, compilé, déployé et testé automatiquement dans des conditions les plus proches possible de son environnement final pour garantir sa qualité et sa compatibilité. Cela permet de détecter le plus rapidement et efficacement possible les éventuelles régressions et problèmes qui peuvent être introduits par les modifications et de s’assurer que le code sera exploitable le jour de sa mise en production. Les opérations étant automatisées, cela réduit également la charge de travail et les délais pour les équipes chargées des tests et du déploiement du projet.
Outils
Dans la pratique, différents outils sont nécessaires pour appliquer l’approche DevOps. Certains sont incontournables alors que d’autres sont à insérer dans la chaîne des processus en fonction des possibilités et des exigences des utilisateurs.
Versionnage du code
L’outil plébiscité pour cet usage est actuellement Git. Souvent exploité via des services tels que GitHub ou Bitbucket, il peut aussi être hébergé sur des instances dédiées grâce à des solutions comme Gitlab ou Gogs. Ethersys peut vous conseiller sur le choix du produit à mettre en oeuvre et vous assister pour sa mise en place et sa maintenance.
Test et qualité du code
C’est un domaine très vaste dans lequel les approches sont nombreuses (tests unitaires, fonctionnels…), souvent complémentaires et dont les outils peuvent parfois être très liés aux langages utilisés par votre projet ainsi qu’aux technologies choisies. Sur un projet Java, vous pourriez par exemple faire appel à des outils tel que Cobertura ou Jacoco pour les test proprement dit mais pour synthétiser et archiver leur résultats, un logiciel tel que SonarQube vous sera probablement indispensable et pourra également être utile pour des projets utilisant d’autres langages et d’autres plugins de test. Au-delà du workflow de développement, certaines pratiques peuvent également être exploitées en production et assurer la qualité de votre projet tout au long de son exploitation. Des tests fonctionnels comme ceux possibles avec Selenium ou Cypress sont ainsi pertinents quel que soit l’environement d’utilisation.
Intégration continue
Nous confions généralement cette tâche à un serveur Jenkins que nous déployons pour vos besoins. Le principal avantage de Jenkins est sa très grande modularité et son écosystème important de modules qui lui permet de s’adapter à vos choix de technologies et de services.
De nombreux autres outils existent ( CircleCI, Travis, GitlabCI… ), mais il est important de sélectionner celui qui s’intégrera le mieux à votre projet (utiliser GitlabCI sans Gitlab est par exemple peu pertinent, de même que le choix de Travis a plus de sens si l’on utilise Github).
Infrastructure as code
Autant que possible, nous faisons confiance à Ansible pour l’automatisation de nos déploiements et la configuration de nos serveurs. Puppet et Terraform font également partie des solutions que nous pouvons proposer.
Monitoring et benchmarking
Une fois votre code testé et déployé sur votre infrastructure, il est important de disposer d’outils pour suivre son évolution.
Pour un site web classique, cela peux aller des services les plus simples pour s’assurer de sa disponibilité, comme UptimeRobot, ou la réutilisation de vos tests Cypress mis en place lors de votre développement.
Les métriques de vos infrastructures étant également importantes vous pourrez aussi avoir besoin d’un Munin, Zabbix voire de Prometheus
Et pour suivre au plus près les problèmes de votre applicatif et pouvoir gérer proactivement ses bugs, une solution comme Sentry.io peut s’avérer très utile.
Beaucoup de possibilités sur lesquelles nous pouvons vous conseiller et effectuer leur déploiement.