Sponsoring
La qualité des applications à travers la qualité du code
C’était un point commun à l’ensemble des conférences : la qualité du code est désormais un enjeu primordial pour garantir la maintenabilité d’un projet. En attestent les différents sujets de lightning talks, la présence d’acteurs comme Blackfire.io, mais surtout les conférences sur les design patterns (Samuel Roze), sur les principes SOLID (Vladyslav Riabchenko), et sur le développement orienté objet (« Beyond design patterns and principles – writing good OO code », Matthias Noback).
Au sein de Twister, la DSI de Davidson consulting qui développe les outils, nous sommes inscrits dans cette démarche de qualité de code sur tous nos projets. Nous nous appuyons sur une utilisation précise des design patterns disponibles, et nous faisons évoluer notre legacy en incluant progressivement différents patterns.
En terme d’architecture logicielle également, nous avons fait évoluer notre SI vers une solution de micro-services sur-mesure. Prenez notre CRM, par exemple ; il centralise le cœur de nos données, donc la valeur de notre activité. Autour de ce noyau, chaque grande fonctionnalité a fait l’objet d’une API, pour un modularité maximum.
Davidson, enfin, accompagne ses développeurs dans leur démarche de certification Symfony chez Sensio. Un processus en cours, qui nous pousse constamment à progresser sur le sujet.
La sécurité comme enjeu des développements
Impossible d’engager un développement logiciel sans se préoccuper de sécurité informatique. Dans ce domaine, nous répondons aux normes les plus strictes. Davidson consulting est certifié ISO 27001. En developpement, nos applications répondent aux mêmes exigences. Nos APIs, par exemple, utilisent les bundles de référence pour l’authentification : LexikJwtAuthenticationBundle, FOSUserBundle, etc.
Une recherche permanente d’évolution
Une nouvelle fois, Sensio était présent pour présenter Symfony 4. Même si elle est encore jeune, cette version est déjà utilisée chez nous pour l’ensemble des nouveaux projets Symfony. Nous sommes également mobilisés pour migrer nos applications legacy, de Symfony 2 et 3 vers Symfony 4.
Au fil de nos échanges, nous avons pu constater à quel point nos préoccupations sont partagées avec celles des différents acteurs du développement PHP. Cela nous conforte dans notre démarche, et nous motive dans notre volonté de progresser encore. Nous éprouvons nos méthodes au quotidien, notre prochaine étape sera peut-être de communiquer plus largement sur ce sujet. Un autre thême récurrent que nous avons observé au ForumPHP est celui de l’application de l’approche DevOps. Nous avons pu assister à la conférence « Docker en prod ? Oui, avec Kubernetes ! », de Pascal Martin (M6 web).
Étant confrontés à des problématiques semblables, nous nous sommes aussi intéressés, chez Davidson, à la philosophie DevOps et aux principes sur laquelle elle repose. Dans l’optique d’améliorer la qualité de nos applications, nous avons entrepris une rationalisation de nos processus de développement. L’émergence de nouveaux workflows portés DevOps, s’est concrétisée par la mise en place d’outils adaptés.
La philosophie DevOps chez Davidson consulting
Davidson est une entreprise en forte croissance. Pour les outils que nous développons, chez Twister (la DSI de Davidson consulting) ça se traduit par une forte augmentation des traitements de données et des tâches d’administration. Il est devenu nécessaire d’apporter de l’automatisation dans notre travail, notamment dans la gestion de nos applications.
Mais cette volonté devait prendre en compte des exigences diverses : fiabilité et sécurité d’un côté, et évolutions régulières de l’autre, … Nous avons donc décidé d’aller plus loin, et d’intégrer la philosophie DevOps à notre méthode.
Plutôt que sur les outils, c’est autour des workflows que nous nous sommes concentrés, et sur chaque étape du cycle de vie de nos applications.
- Chez Davidson nous utilisons des git flows adaptés au contexte de chaque projet : pour permettre des itérations et des mises en production très fréquentes, nous pouvons mettre en place le « toggle off / toggle on » qui nous permet de déployer en maîtrisant les risques.
- Nous avons aussi mis en place une méthodologie stricte de tests : humains (code review systématique), et automatisés (tests unitaires, tests d’intégration, tests fonctionnels). Pour finir, des tests de code « à froid » sont exécutés avec Sonarqube pour lever les alertes restantes potentielles.
Le succès de tous ces tests conditionne le passage aux étapes suivantes, le tout orchestré par Jenkins. - À propos de Jenkins justement, nous avons configuré une pipeline pour chacun de nos projets. Nous suivons leur état en temps réel.
La virtualisation au service du développement
Nous avons franchi une étape importante en virtualisant l’ensemble de nos projets avec Docker. Pour la vitesse de prise en main d’un projet, pour sa facilité et sa rapidité de déploiement, nous « Dockerisons » tous nos projets, et cette tâche revient aux développeurs. Ainsi ils maîtrisent la couche infra de leur application et garantissent un environnement homogène.
Avec la mise en place d’un Registry Docker sur lequel nous stockons nos images, c’est la fermeture de la boucle CI de notre chaîne.
Continuous Delivery, notre chantier en cours
L’étape suivante est naturellement la partie CD de la boucle. Nous avons géré cette tâche de manière itérative : c’est d’abord Capistrano qui a été choisi, pour le déploiement des projets Symfony. Grâce à sa facilité de prise en main, il permet de déployer une application avec un minimum d’effort, si on ne se concentre que sur la couche applicative.
Nous avons ensuite utilisé Ansible pour d’autres projets. C’était alors le potentiel de virtualiser la prod, et de déployer des containers avec un maximum de flexibilité. Nous refermons alors la partie CD de notre boucle, et nous complétons notre chaîne.
Chez Davidson, nous aimons les défis, nous voulons maintenant industrialiser encore plus notre chaîne CD en déployant une plateforme OpenShift. Actuellement à l’état de projet, nous concentrons nos effort à la réalisation d’un POC qui nous permettra, on l’espère, d’avoir ensuite un outil au top !
Rémy – équipe TWISTER