Architecture d'une 
application full API 
orientée micro service
Présentation 
• Yves Heitz 
DevOps Klubup 
• Xavier Gorse / @xgorse 
CTO & Co-fondateur Klubup 
Fondateur Elao
Qu’est ce qu’un micro service ? 
http://martinfowler.com/articles/microservices.html
Qu’est ce qu’un micro service ? 
http://martinfowler.com/articles/microservices.html
Klubup 
• Connecter les @personnes et les #passions 
autour de la notion du Klub 
• On est membre d’un Klub 
• On partage ...
Klubup 
• Liste des services
Services 
Klub SF2 Mysql 
Search Silex SOLR 
Pics Silex - 
Register NodeJS Redis 
Provider NodeJS - 
Metrics GO Logentries...
Applications 
Front Backbone 
iOS ObjectiveC 
Android Java 
Mirador SF2 
Twitter streaming MeteorJS 
GraphManager MeteorJS
Pourquoi ? 
• Appli monolithique de 60 Bundles 
• Mobile 
• Application full Javascript 
• Optimisation des dev Back/Front
Bon candidat à un service 
• Scope fonctionnel délimité 
• Datastore spécifique 
• Bootstrap d’un nouveau fonctionnel 
• N...
Mauvais candidat à un service 
• Data existante 
• Transactionnel 
• Nano service 
• Nouvelle techno
Quelle techno pour mon service ? 
• Compétences 
• Productivité 
• Performance 
• Evolution de techno
Communication 
• HTTP : Universel 
• API REST JSON : Universel, Simple 
• Consommation directe 
• Consommation encapsulée ...
Gestion d’erreurs 
• Accepter 
• Criticité 
• Front 
• Back
Sécurité 
• OAuth2 pour les applications 
• OAuth2, Hawk et réseau privé pour les services 
• OAuth2 pas adapté entre les ...
Transactionnel 
• Pas de gestion de transaction cross services 
• Seulement au sein d'un service 
• Accepter l’erreur pour...
Monitoring / Reporting 
• Basé sur les log avec Logentries 
• RequestId pour regrouper les logs 
• UserAgent des applicati...
Monitoring / Reporting 
• Basé sur les log avec Logentries 
• RequestId pour regroupé les logs 
• UserAgent des applicatio...
Scalabilité 
• Isolation 
• Horizontalement / Verticalement 
• Séparation API Lecture / Ecriture 
• Concurrency des worker...
Performance 
• Rendre la main le plus vite possible au front 
• Difficulté de la parallélisation en PHP 
• Limiter les reb...
Asynchrone 
• Iron.io SAAS : IronMQ & IronWorker 
• Callback HTTP 
• Messaging avec workers 
• Généralisation des messages...
Iron.io
Cache 
• Pas de cache au niveau applicatif 
• Séparation /public/* et /private/* 
• Public : Cache HTTP via Varnish 
• Pri...
Infra 
• Provisionning avec Chef OpsCode 
• VM via OpenVz 
• Autonomie des deploy Applications/Services 
• Impact nouveau ...
Conclusion 
• Composant 
• Orienté métier 
• Approche produit 
• Décentralisation 
• Infrastructure automatisée 
• Gestion...
Conclusion 
• Couplage : Applications, Services, Infra 
• Bootstrap rapide 
• Industrialisation et refactoring douloureux ...
Next Step ? 
• Baptême du feu à la charge 
• Rationalisation 
• Industrialisation 
• Docker
Merci 
Recrute sur Lyon Recrute sur Paris
Prochain SlideShare
Chargement dans…5
×

Architecture d'une application Full API orienté micro service

13 503 vues

Publié le

A travers un retour d'expérience sur le projet Klubup.com, nous explorerons une architecture applicative est basée sur les Micro Service, avec des API REST exploitées par les applications web principales (Symfony/BackboneJS), par les applications mobiles ( iOS et Android), mais aussi des petites applications métier basé sur d'autres techno comme Silex, Meteor ou NodeJS.

Nous aussi aborderons la problématique d'authentification (Oauth), la gestion asynchrone via la solution Iron.io, mais aussi la partie infra avec la virtualisation, le provisionning avec Chef et la gestion des logs avec Logentries.

Publié dans : Ingénierie
0 commentaire
12 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
13 503
Sur SlideShare
0
Issues des intégrations
0
Intégrations
842
Actions
Partages
0
Téléchargements
124
Commentaires
0
J’aime
12
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Architecture d'une application Full API orienté micro service

  1. 1. Architecture d'une application full API orientée micro service
  2. 2. Présentation • Yves Heitz DevOps Klubup • Xavier Gorse / @xgorse CTO & Co-fondateur Klubup Fondateur Elao
  3. 3. Qu’est ce qu’un micro service ? http://martinfowler.com/articles/microservices.html
  4. 4. Qu’est ce qu’un micro service ? http://martinfowler.com/articles/microservices.html
  5. 5. Klubup • Connecter les @personnes et les #passions autour de la notion du Klub • On est membre d’un Klub • On partage dans un Klub • On sponsorise un Klub
  6. 6. Klubup • Liste des services
  7. 7. Services Klub SF2 Mysql Search Silex SOLR Pics Silex - Register NodeJS Redis Provider NodeJS - Metrics GO Logentries Notification PHP Iron.io Firebase
  8. 8. Applications Front Backbone iOS ObjectiveC Android Java Mirador SF2 Twitter streaming MeteorJS GraphManager MeteorJS
  9. 9. Pourquoi ? • Appli monolithique de 60 Bundles • Mobile • Application full Javascript • Optimisation des dev Back/Front
  10. 10. Bon candidat à un service • Scope fonctionnel délimité • Datastore spécifique • Bootstrap d’un nouveau fonctionnel • Nouvelle techno
  11. 11. Mauvais candidat à un service • Data existante • Transactionnel • Nano service • Nouvelle techno
  12. 12. Quelle techno pour mon service ? • Compétences • Productivité • Performance • Evolution de techno
  13. 13. Communication • HTTP : Universel • API REST JSON : Universel, Simple • Consommation directe • Consommation encapsulée via un service
  14. 14. Gestion d’erreurs • Accepter • Criticité • Front • Back
  15. 15. Sécurité • OAuth2 pour les applications • OAuth2, Hawk et réseau privé pour les services • OAuth2 pas adapté entre les services • HTTPS
  16. 16. Transactionnel • Pas de gestion de transaction cross services • Seulement au sein d'un service • Accepter l’erreur pour éviter les transactions
  17. 17. Monitoring / Reporting • Basé sur les log avec Logentries • RequestId pour regrouper les logs • UserAgent des applications et des services
  18. 18. Monitoring / Reporting • Basé sur les log avec Logentries • RequestId pour regroupé les logs • UserAgent des applications et des services
  19. 19. Scalabilité • Isolation • Horizontalement / Verticalement • Séparation API Lecture / Ecriture • Concurrency des workers • Humaine : 1 team / 1 service
  20. 20. Performance • Rendre la main le plus vite possible au front • Difficulté de la parallélisation en PHP • Limiter les rebonds entre les services • Latence HTTP • Traitement asynchrone
  21. 21. Asynchrone • Iron.io SAAS : IronMQ & IronWorker • Callback HTTP • Messaging avec workers • Généralisation des messages sur toutes les API
  22. 22. Iron.io
  23. 23. Cache • Pas de cache au niveau applicatif • Séparation /public/* et /private/* • Public : Cache HTTP via Varnish • Private : pas de cache pour l’instant
  24. 24. Infra • Provisionning avec Chef OpsCode • VM via OpenVz • Autonomie des deploy Applications/Services • Impact nouveau service / nouvelle techno
  25. 25. Conclusion • Composant • Orienté métier • Approche produit • Décentralisation • Infrastructure automatisée • Gestion des erreurs
  26. 26. Conclusion • Couplage : Applications, Services, Infra • Bootstrap rapide • Industrialisation et refactoring douloureux • Ouverture du code • Setup et debug compliqués
  27. 27. Next Step ? • Baptême du feu à la charge • Rationalisation • Industrialisation • Docker
  28. 28. Merci Recrute sur Lyon Recrute sur Paris

×