Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MicroServices IRL

MicroServices IRL

Microservices IRL: ça marche chez un client, on vous dit comment!
Par Stéphane Lagraulet et Olivier Revial, Ippon Bordeaux

Avatar for Stephan L

Stephan L

April 22, 2016

More Decks by Stephan L

Other Decks in Technology

Transcript

  1. #DevoxxFR Vous allez voir... • Notre contexte client • Pourquoi

    les micro services pour notre client ? • Les challenges à relever • Nos premiers choix techniques • Notre architecture actuelle • Notre roadmap 2
  2. #DevoxxFR Qui sommes nous? 3 Stéphane Lagraulet • Architecte SI

    • Chez Ippon depuis 2013 • Code en Java depuis 2000 • @stephlag Olivier Revial • Développeur • Chez Ippon depuis 2013 • Code en Java depuis le berceau • @pommedouze
  3. #DevoxxFR Ippon Technologies 4 • 220 ingénieurs en France, aux

    USA et bientôt en Australie ◦ Paris, Nantes, Bordeaux ◦ Richmond (Virginie), Washington (DC) • Expertise ◦ Digital, Big Data, Cloud ◦ Java, Agilité, DevOps • Projets open source ◦ Tatami ◦ JHipster (3!) • @ippontech, @ipponusa
  4. #DevoxxFR Le projet 5 • Component Team en charge du

    moteur de recherche d’un site de e-commerce • Architecture de microservices pour alimenter, interroger et superviser les composants du moteur • Projet multi-plateformes et multilingue (multi-tenants) • Démarrage début 2015, déploiement s’étendant maintenant à d’autres équipes
  5. #DevoxxFR Convergence de mouvements 9 • Agilité • DevOps •

    Complexité du SI • Architecture Web • Cloud • Conteneurs • Provisionning
  6. #DevoxxFR Une définition “Les microservices sont définis comme une architecture

    de services faiblement couplés avec des contextes fonctionnels définis.” Adrian Cockroft 10
  7. #DevoxxFR Challenges à relever 11 • Organisation • Découverte de

    services • Surveillance • Programmation distribuée • Gestion des pannes • Stratégie de test • Versionning, compatibilité • Déploiement en continu
  8. #DevoxxFR Des anti-patterns • Nécessité ? • Monolithe distribué •

    Transactions distribuées • Tables partagées - CQRS • Découverte globale • DRY 12
  9. #DevoxxFR Loi de conway “ Toute organisation qui construit un

    système... produira inévitablement une architecture dont la structure est une copie de la structure de communication de cette organisation.“ Melvin Conway - 1968 13
  10. #DevoxxFR Notre première boite à outils 16 • Découverte de

    services • Surveillance • Programmation distribuée
  11. #DevoxxFR Discovery avec Zookeeper • Réserver des ressources dédiées •

    Isoler les instances pour les microservices • Bien utiliser le mécanisme de Curator (ServiceInstance) • Marquer les instances “Down” • Système CP • Doit être surveillé • Bien nettoyer les logs (zkCleanup) 18
  12. #DevoxxFR Problème : Multi tenancy (1) Tenant-specific : /discovery/tenants/ /be-fr/

    /kpi-service/... /loader-service/... /be-nl/ /kpi-service/... /loader-service/… Multi-tenant : /discovery/notenant/monitoring-agent/... 19
  13. #DevoxxFR Tolérance aux pannes avec le circuit breaker 22 Fermé

    Ouvert Semi ouvert Échecs rapides Tentative de fermeture Déclenchement ouverture Échec ré-ouverture Fermeture
  14. #DevoxxFR Enrichir notre boite à outils 26 • Découverte et

    exposition de services • Surveillance dynamique des services • Routage des requêtes
  15. #DevoxxFR Multi tenancy avec spring cloud 29 Tenant-specific (specified in

    zk connect-string): /fr/services/discovery/ /services-gateway/... /kpi-service/... /loader-service/... /be/services/discovery/ /services-gateway/... /kpi-service/... /loader-service/…