Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'expérience Xebia & Libon)

288 visualizaciones

Publicado el

A travers ce retour d’expérience du projet Libon d’Orange Vallée, nous parcourrons ensemble les étapes successives qui nous ont permises d’industrialiser notre usine logicielle avec Jenkins, Docker, Mesos, Marathon et GlusterFS. Fini le cauchemar du serveur d’intégration continue partagé entre plusieurs équipes avec des technologies hétéroclites... Accueillons dorénavant la nouvelle plate-forme de CI as-a-service entièrement conteneurisée, scalable et résiliente ! Nous montrerons en quoi ces nouveaux outils ont fluidifié nos processus de développement et comment cette intégration en douceur de Docker dans notre quotidien nous donne aujourd’hui la confiance nécessaire pour une utilisation future en Production.

Par Jean-Louis Rigau (Software Engineer, Continuous Delivery, DevOps and Docker @Xebia) & Fabien Thouny (Consultant Java/JEE @ Libon (Groupe Orange) )

Toutes les vidéos des conférences seront disponibles sur Xebia.tv

Publicado en: Tecnología
  • Sé el primero en comentar

Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'expérience Xebia & Libon)

  1. 1. @ContainerDay16 @jlrigau @fthouny Conteneurisation de l'usine logicielle Retour d’expérience du projet Libon d’Orange Vallée @ContainerDay16
  2. 2. @ContainerDay16 Jean-Louis RIGAU @jlrigau Continuous Delivery, DevOps and Docker @ Xebia IT Architects Fabien THOUNY @fthouny Craftsmanship, Agile, Tech Lead @ Libon
  3. 3. @ContainerDay16 @jlrigau @fthouny Appeler... ● Appels VoIP (app to app) gratuits ● Appels VoIP-Out à prix réduits vers plus de 140 destinations
  4. 4. @ContainerDay16 @jlrigau @fthouny Envoyer des messages... ● Chat utilisant le protocole XMPP ● Échange de fichiers
  5. 5. @ContainerDay16 @jlrigau @fthouny Simplement ! ● Multi-plateforme ○ Android ○ iPhone ○ Web HTML5 ● Synchronisées grâce à des API REST
  6. 6. @ContainerDay16 Il était une fois, il y a fort longtemps...
  7. 7. @ContainerDay16 @jlrigau @fthouny build1 Instance unique de Jenkins
  8. 8. @ContainerDay16 @jlrigau @fthouny ● Mises à jour OS ● Librairies systèmes ● Versions de SDK ○ JDK 1.7/1.8 ● Mutualisation des services ○ Cassandra, Oracle, MySQL ● Ressources de la machine ● Risque de défaillance Difficultés multiples
  9. 9. @ContainerDay16 @jlrigau @fthouny build1 Gestion des besoins spécifiques build2 slave
  10. 10. @ContainerDay16 @jlrigau @fthouny ● 2 machines ○ l’une surchargée ○ l’autre sous-utilisée ● Versions OS différentes ○ Écart entre les packages ○ Davantage de maintenance Toujours plus de complexité !
  11. 11. @ContainerDay16 Et vint le temps de la révolution...
  12. 12. @ContainerDay16 @jlrigau @fthouny Construire, transporter et exécuter tout type d’application sur tout type de plate- forme Opérer ses applications au sein de son Data Center comme s’il s’agissait d’une ressource unique Boîte à Outils 1/2 Déployer et orchestrer ses conteneurs au sein d’un cluster Mesos à l'échelle
  13. 13. @ContainerDay16 @jlrigau @fthouny Boîte à Outils 2/2 Configuration automatique de HAProxy et Découverte de Service pour Mesos Marathon Open-source TCP/HTTP load-balancing proxy server Bamboo
  14. 14. @ContainerDay16 @jlrigau @fthouny Architecture du Cluster
  15. 15. @ContainerDay16 @jlrigau @fthouny Framework Marathon
  16. 16. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 Mise en Cluster de la CI Bamboo Bamboo Bamboo
  17. 17. @ContainerDay16 @jlrigau @fthouny ● Gestion des images Docker ○ Stockage ○ Distribution ● Déploiement ○ Image officielle sur le Docker Hub ○ Utilisation de Marathon ● Sécurité ○ Authentification LDAP ○ TLS Docker Registry
  18. 18. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 Déploiement de la Registry Bamboo Bamboo Bamboo
  19. 19. @ContainerDay16 @jlrigau @fthouny Configuration d’un Service ● Configuration au format JSON ○ Image ○ Volume, Mapping de ports ○ Ressources ○ Contraintes ○ Health Check ● Déploiement avec l’API REST de Marathon ● Utilisation des images officielles ○ Disponible sur le Hub
  20. 20. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 Déploiement des Services Bamboo Bamboo Bamboo API Docs Slack Bot Zk UI Version Board
  21. 21. @ContainerDay16 @jlrigau @fthouny Framework Jenkins Scheduler
  22. 22. @ContainerDay16 @jlrigau @fthouny ● Création d’images de “Build” ○ Héritant de l’image “build-tools” ○ Une image Docker par runtime ● Utilisation du Jenkins Mesos plugin ○ 1 slave = 1 image Docker ○ Utilisation des labels dans les jobs ● Slave à la demande ○ Création de tâches Mesos ○ Nettoyage automatique Création des slaves
  23. 23. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 Jenkins Slaves conteneurisés Bamboo Bamboo Bamboo API Docs Slack Bot Zk UI Version Board
  24. 24. @ContainerDay16 @jlrigau @fthouny ● Binaire développé en Go ○ Inclut dans les images de build ○ Disponible sur le poste de DEV et sur l’environnement de CI ● Mêmes outils en CI et sur le poste de développement Binaire “build-machine”
  25. 25. @ContainerDay16 @jlrigau @fthouny DEMO Construction et déploiement d’une application
  26. 26. @ContainerDay16 Place à l’ industrialisation de la plateforme...
  27. 27. @ContainerDay16 @jlrigau @fthouny Spécialisation de l’infrastructure ● Séparation Master / Slave ○ Extraction du master vers une VM ○ Conservation des machines physiques pour les slaves ● Réorganisation des modules Puppet ○ 2 profils master et slave
  28. 28. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 buildfiler2 buildfiler3 buildfiler4 Bamboo Bamboo Bamboo Bamboo Bamboo Bamboo buildmaster1 Séparation Master / Slave API Docs Slack Bot Version Board Zk UI
  29. 29. @ContainerDay16 @jlrigau @fthouny ● 2 types de données ○ Cache (Docker, Maven, NPM, Gradle, etc.) ○ Données persistantes (Registry, Jenkins, Sonar, Nexus, Dashboard, etc.) ● Mise en place de GlusterFS ○ Mutualisation des capacités de stockage des noeuds du cluster ○ Volume répliqué et distribué (~ 1,6 To disponible au final) ● Création d’un point de montage “/shared” ○ Accessible sur chacun des noeuds du cluster Gestion des Données
  30. 30. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 buildfiler2 buildfiler3 Distributed Replicated GlusterFS Volume buildfiler4 Bamboo Bamboo Bamboo Bamboo Bamboo Bamboo buildmaster1 CI entièrement conteneurisée ! API Docs Slack Bot Zk UI Version Board
  31. 31. @ContainerDay16 @jlrigau @fthouny Performances de la Registry ● Registry : point faible de l’architecture ○ Ajout d’une deuxième instance en cluster ● Le Docker Hub peut être lent ○ Mise en place d’un cluster de miroirs ● Boucle sur Internet pour accéder à la registry ○ Ajout d’une entrée dans le /etc/hosts de chacun des noeuds
  32. 32. @ContainerDay16 @jlrigau @fthouny build1 build2 buildfiler1 buildfiler2 buildfiler3 Distributed Replicated GlusterFS Volume buildfiler4 Bamboo Bamboo Bamboo Bamboo Bamboo Bamboo buildmaster1 Registry en Haute Disponibilité API Docs Slack Bot Version Board Zk UI mirror mirror
  33. 33. @ContainerDay16 @jlrigau @fthouny ● Mise en place d’un système de gestion de droits sur la Registry ○ PoC de Portus en cours ● Utilisation des images officielles pour nos builds ○ Exploration de Jenkins 2.x et du Plugin Pipeline ● Élimination des dernières faiblesses de l’architecture ○ Master à mettre en cluster ● Emmener les conteneurs jusqu’en Production ! ○ En s’appuyant sur l’expérience acquise sur la CI Quelles évolutions ?
  34. 34. @ContainerDay16 @jlrigau @fthouny Q&A

×