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

Cloudifie ton monolithe

Cloudifie ton monolithe

Talk Devoxx france 2017
Avec Cyril Deverson, François Berthault rt Christophe Thepaut

BERTHAULT François

April 06, 2017
Tweet

More Decks by BERTHAULT François

Other Decks in Technology

Transcript

  1. #DevoxxFR #DevoxxFR Cloudifie ton monolithe ! Les microservices pour une

    architecture comme « les grands du web » Cyril Deverson François Berthault Christophe Thépaut
  2. #DevoxxFR #DevoxxFR Qui sommes nous ? François BERTHAULT Coding Architect

    Full-Stack Dev. @fanfansama www & blog.talanlabs.com Christophe THEPAUT Architecte Agiliste “Agitateur & servant leader” www.linkedin.com/in/cthepaut www.bnpparibas.com Cyril DEVERSON Technical Architect Scrum Master @CyrilDeverson www.softeam.fr
  3. #DevoxxFR Comment migrer: La genèse de nos microservices ★ 2012: Business

    Component Factory ★ 2013 : un jar exécutable en mode message (un simple Business Component pour notifier le status des ordres de paiement) Monolithe Style d’Architecture
  4. #DevoxxFR #DevoxxFR La bonne manière d’écrire un composant ( aka.

    microservice) Peur du Changement ★ Il sera petit (quelques mega) ★ Il sera déployé en dehors d’un serveur d’appli ★ Ce sera un processus autonome ★ Il aura : ☑ son propre code ☑ sa propre base de données ☑ sa propre implémentation ☑ son propre cycle de livraison ★ Il communiquera avec un protocole lâches (Pub/Sub) ★ Il aura la responsabilité la plus simple possible ★ Il sera scalable Règles D’architecture
  5. #DevoxxFR Expérimentation phase 1 ! 3 techniques de développement différentes

    3 modes d’installa<on et déploiement 3 méthodes de supervisions 3 raisons de faire râler les OPS Changement Plaisir de Coder !
  6. #DevoxxFR Nouvelle ère de l’industrialisation Le chassis Comment les installer?

    ★ self-exécutable Chaos Technique Adoption ★ custom-compose: automatisation de l’installation “Homemade” ★ self-installable ★ self-configurable
  7. #DevoxxFR Spring Cloud : API Gateway Feat ure B Feature

    B S’enregistrer Router Eureka (discovery) Client Exposer /feature-a/** /feature-b/** ZUUL (edge) Load balancer Circuit breaker Complexité induite Feature A A B Simplicité de déploiement Résilience
  8. #DevoxxFR Quoi migrer : Domain Driven Design Catalogue Commande Enregistrement

    Utilisateur Comptabilité Livraison Produit Client produit commande enregistrement utilisateur client livraison comptabilité catalogue Ambiguité Frontières
  9. #DevoxxFR Migration en faux microservices : expérimentation phase 2 Densité

    Isoler le microservice Exposer les dépendances Identifier Isoler les tables et les migrer Confiance
  10. #DevoxxFR Cloud privé Comment faire AVEC les Ops : ★ 

    Docker ◦ Docker registry ★  Rancher ◦ Rancher catalog ★ Services à la demande ★ Mise en commun des ressources ★ Elas<cité rapide ★ Services mesurés ★ SaaS ★ PaaS ★ IaaS Infra As Code
  11. #DevoxxFR #DevoxxFR Cloudifier son code (1/2) “packaging as code“ devoxx

    > mvn clean package 1 7 devoxx > mvn deploy (docker push)
  12. #DevoxxFR #DevoxxFR Cloudifier son code (2/2) “infra as code” devoxx

    > docker-compose -f docker-compose.yml up 1 8 devoxx > rancher-compose -f docker-compose.yml -r rancher-compose.yml up 1 host répartition sur n hosts Provisionenent Automatique
  13. #DevoxxFR OK mais comment je fais si j’ai besoin de

    deux contextes ? 䡦 Requêtes HTTP synchrones depuis un aggrégateur ? Cohérence des données Client Ordre Ordre DB Client DB ? ? ? 䡦 Vue matérialisée entre les 2 contextes ? 䡦 Fusionne les microservices et les bases ? 䡦 “Change Data Capture” entre les bases ? ?
  14. #DevoxxFR Command Query Responsibility Segregation / Event Sourcing Client Cohérence

    Cache Requête Synchrone Commande Code Erreur / Succès Ordre Ordre DB Client DB Bus d’évènements Ecrire Historique Ordre Client Event Store Stocke Lire données dénormalisées Ecrire elasAcsearch Perturbation
  15. #DevoxxFR Nos conseils en bref ! ★ Evitez d’attendre un crash

    de prod pour démarrer la Transformation ★ Utilisez les coûts due à l’obsolescence comme Levier pour initier le changement ★ Commencez par la Reproductibilité avec le CI si vous voulez créer le besoin de livrer par incrément ★ N’ayez pas peur de vous tromper jusqu’à ce que vous trouviez votre Style d’architecture et retrouviez le Plaisirs de coder ★ Utilisez vos réussites pour définir vos Règles d’architecture ★ Standardisez vos microservices pour en faciliter l’Adoption ★ Utilisez un Discovery Server (API Gateway) pour Simplifier les déploiements et augmenter la Résilience ★ Utilisez les sous domaines et les cartes de contexte du DDD pour identifier les Frontières de vos microservices ★ Utilisez les faux microservices pour donner de la Confiance dans votre stratégie de migration ★ Testez une feature dans une équipe cross-fonctionnelle pour avoir des Objectifs partagés avec les Ops ★ Bénéficiez rapidement d’une Infra as code avec Docker et du Provisionnement automatique avec Rancher ★ Utilisez le pattern CQRS/ES pour garantir la Cohérence des données cross-domaines
  16. #DevoxxFR #DevoxxFR Merci 23 Découvrez la série microservices sur le

    blog TalanLabs blog.talanlabs.com et suivez-nous sur Twitter @TalanLabs