Retour d’expérience sur le développement, déploiement et hébergement de containers Docker
Docker est une technologie jeune qui fait parler d’elle. Son adoption dans le but de virtualiser les environnements et applications dans un container est très rapide. Nos équipes de développement ont testé Docker jusqu’à sa mise en production, dans une démarche DevOps.
Docker pour les développeurs et les hébergeurs
L’expérience que nous avons menée à la Digital Factory de la DSI d’Orange France a porté sur le développement en mode as-a-Service, l’hébergement, les tests et la mise en production d’un composant de notre moteur de recommandation, le moteur de règles en C++, déployé via des containers Docker. Avec ses API, sa chaîne de production que nous avons construite, jusqu’à son hébergement ; et tout cela en mode agile et DevOps.
L’ancrage de Docker dans les infrastructures n’a pas été simple, de la même façon l’intégration des containers dans le développement n’a pas été plus évidente. Elle requiert un environnement complet de développement (tests d’intégration continue) utilisable via une box virtuelle dans un environnement bureautique globalisé, complété d’une solution d’automatisation des modes de déploiement et des tests.
Une expérience de Docker avec Sosh comme client
Avec ce projet, débuté il ya deux ans et en production depuis 6 mois, nous avons vu en Docker une solution d’avenir, qui répond au besoin d’optimiser nos ressources et de dépasser l’usage de nos serveurs au-delà des consommations habituelles. La technologie des containers permet une virtualisation simple, légère et rapide. L’immutabilité des dockers nous permet de revoir nos modes de déploiement. On déploie en parallèle les nouvelles versions, en cas de problèmes les rollback sont plus simples et plus rapides.
Nos équipes de développement disposent de chaque composant dans un monde Docker, déployé sur un poste de travail dans une machine virtuelle Linux, pour travailler sur le composant en développement tout en ayant accès à tous les composants, même ceux qu’elles ne maîtrisent pas. Ce qui simplifie et accélère les tests, et rend plus facile le débogage dans un environnement plus autonome.
Le choix de Docker s’est accompagné d’une prise de risque, compensée par co-localisation de nos équipes opérationnelles et de l’hébergeur. Le projet était ambitieux par la présence d’une architecture avec ses API, la disposition de statistiques en temps réel, et la nécessité de déployer beaucoup de composants très rapidement. Ainsi que de revoir une partie des cycles de développement, de la supervision et du déploiement. Nous avons travaillé en mode Scrum en y associant les équipes en charge de la sécurité.
DevOps et intégration continue
Nous avons appliqué la philosophie DevOps au système d’information d’Orange. Les solutions que nous mettons en place sont réparties, avec beaucoup d’aspects réseaux et systèmes. Le développement éprouve le besoin de prendre en compte les contraintes des réseaux et de l’hébergement. Mais tous les développeurs n’ont pas des compétences dans ces domaines. D’où la nécessité de travailler ensemble à l’intégration dans le code des aspects réseaux et système. La proximité des équipes compétentes dans ces domaines est l’un des avantages que nous a apporté l’adoption de DevOps.
Pour obliger Dev et Ops à se rapprocher et travailler ensemble, DevOps nécessite une forte motivation et une formation des équipes.
La plateforme d’intégration continue est fournie par Jenkins. Elle offre la sécurité d’un Docker construit sur des images validées par l’hébergeur, avec ses règles de sécurité. Le développeur peut publier dans les registres taggés et déployés sur des plateformes de non régression. Nous construisons et validons le Docker du développeur. Il peut ensuite publier, déployer, tester et valider sa solution par composant, ou de bout en bout.
Le ROI de l’association Docker - DevOps
Une fois les outils et procédures mis en place, les gains de temps sont réels. Ils proviennent de :
- l’automatisation de l’ensemble des tests,
- du redéploiement rapide des plateformes isoprod,
- de la capacité de re-livrer très rapidement les corrections.
Les Developpements prennent place dans une chaîne de production, avec des tests de bout en bout, et adaptée aux contraintes de sécurité.
En fin de compte, ce que nous retirons de cette expérience, c'est que le ROI n'est pas que technique, il est également humain. Avec un environnement complet fourni via les containers docker, les équipes de développements sont plus volontaires pour les tests, plus efficaces, voire plus imaginatives. Elles intègrent la capacité d’imaginer des architectures plus complexes.
Pour aller plus loin
Télécharger le document « Les containers sont-ils le futur du cloud ? »
[Vidéo] Docker, une révolution pour le développement applicatif ?
DevOps dans le cloud
Après avoir été Directeur du Développement Technique de la société américano-belge Reef, puis avoir créé ma propre Société Balistis, j’ai intégré le groupe Orange en 2010. Aujourd’hui, j’opère comme Architecte Logiciel pour la Digital Factory de la DSI d’Orange France et comme Orange Software Expert pour le groupe.