28
Architecture d'une application full API orientée micro service

Architecture d'une application Full API orienté micro service

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Architecture d'une application Full API orienté micro service

Architecture d'une application full API

orientée micro service

Page 2: Architecture d'une application Full API orienté micro service

Présentation

• Yves HeitzDevOps Klubup

• Xavier Gorse / @xgorse CTO & Co-fondateur KlubupFondateur Elao

Page 3: Architecture d'une application Full API orienté micro service

Qu’est ce qu’un micro service ?

http://martinfowler.com/articles/microservices.html

Page 4: Architecture d'une application Full API orienté micro service

Qu’est ce qu’un micro service ?

http://martinfowler.com/articles/microservices.html

Page 5: Architecture d'une application Full API orienté micro service

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

Page 6: Architecture d'une application Full API orienté micro service

Klubup

• Liste des services

Page 7: Architecture d'une application Full API orienté micro service

ServicesKlub SF2 Mysql

Search Silex SOLR

Pics Silex -

Register NodeJS Redis

Provider NodeJS -

Metrics GO Logentries

Notification PHP Iron.io Firebase

Page 8: Architecture d'une application Full API orienté micro service

ApplicationsFront Backbone

iOS ObjectiveC

Android Java

Mirador SF2

Twitter streaming MeteorJS

GraphManager MeteorJS

Page 9: Architecture d'une application Full API orienté micro service

Pourquoi ?

• Appli monolithique de 60 Bundles

• Mobile

• Application full Javascript

• Optimisation des dev Back/Front

Page 10: Architecture d'une application Full API orienté micro service

Bon candidat à un service

• Scope fonctionnel délimité

• Datastore spécifique

• Bootstrap d’un nouveau fonctionnel

• Nouvelle techno

Page 11: Architecture d'une application Full API orienté micro service

Mauvais candidat à un service

• Data existante

• Transactionnel

• Nano service

• Nouvelle techno

Page 12: Architecture d'une application Full API orienté micro service

Quelle techno pour mon service ?

• Compétences

• Productivité

• Performance

• Evolution de techno

Page 13: Architecture d'une application Full API orienté micro service

Communication

• HTTP : Universel

• API REST JSON : Universel, Simple

• Consommation directe

• Consommation encapsulée via un service

Page 14: Architecture d'une application Full API orienté micro service

Gestion d’erreurs

• Accepter

• Criticité

• Front

• Back

Page 15: Architecture d'une application Full API orienté micro service

Sécurité

• OAuth2 pour les applications

• OAuth2, Hawk et réseau privé pour les services

• OAuth2 pas adapté entre les services

• HTTPS

Page 16: Architecture d'une application Full API orienté micro service

Transactionnel

• Pas de gestion de transaction cross services

• Seulement au sein d'un service

• Accepter l’erreur pour éviter les transactions

Page 17: Architecture d'une application Full API orienté micro service

Monitoring / Reporting

• Basé sur les log avec Logentries

• RequestId pour regrouper les logs

• UserAgent des applications et des services

Page 18: Architecture d'une application Full API orienté micro service

Monitoring / Reporting

• Basé sur les log avec Logentries

• RequestId pour regroupé les logs

• UserAgent des applications et des services

Page 19: Architecture d'une application Full API orienté micro service

Scalabilité

• Isolation

• Horizontalement / Verticalement

• Séparation API Lecture / Ecriture

• Concurrency des workers

• Humaine : 1 team / 1 service

Page 20: Architecture d'une application Full API orienté micro service

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

Page 21: Architecture d'une application Full API orienté micro service

Asynchrone

• Iron.io SAAS : IronMQ & IronWorker

• Callback HTTP

• Messaging avec workers

• Généralisation des messages sur toutes les API

Page 22: Architecture d'une application Full API orienté micro service

Iron.io

Page 23: Architecture d'une application Full API orienté micro service

Cache

• Pas de cache au niveau applicatif

• Séparation /public/* et /private/*

• Public : Cache HTTP via Varnish

• Private : pas de cache pour l’instant

Page 24: Architecture d'une application Full API orienté micro service

Infra

• Provisionning avec Chef OpsCode

• VM via OpenVz

• Autonomie des deploy Applications/Services

• Impact nouveau service / nouvelle techno

Page 25: Architecture d'une application Full API orienté micro service

Conclusion

• Composant

• Orienté métier

• Approche produit

• Décentralisation

• Infrastructure automatisée

• Gestion des erreurs

Page 26: Architecture d'une application Full API orienté micro service

Conclusion

• Couplage : Applications, Services, Infra

• Bootstrap rapide

• Industrialisation et refactoring douloureux

• Ouverture du code

• Setup et debug compliqués

Page 27: Architecture d'une application Full API orienté micro service

Next Step ?

• Baptême du feu à la charge

• Rationalisation

• Industrialisation

• Docker

Page 28: Architecture d'une application Full API orienté micro service

Merci

Recrute sur ParisRecrute sur Lyon