Apache Thrift, SOA légère. Retour d'expérience



Documents pareils
Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Architecture Orientée Service, JSON et API REST

Benjamin Cornu Florian Joyeux. Les choses à connaître pour (essayer) de concurrencer Facebook.

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Architectures Web Services RESTful

Programmation Web. Madalina Croitoru IUT Montpellier

Hassene BELGACEM. Expériences Professionnelles. JEE architect / Technical leader. Ingénieur Informatique. Cycle Préparatoire

Formation en Logiciels Libres. Fiche d inscription

Alfstore workflow framework Spécification technique

les techniques d'extraction, les formulaires et intégration dans un site WEB

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Développement des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Laurent JOLIN. Compétences. Expériences professionnelles. Architecte technique. 15, rue Jean Favier Toulouse

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Les architectures 3-tiers Partie I : les applications WEB

Formation : WEbMaster

SITE WEB E-COMMERCE ET VENTE A DISTANCE

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

CATALOGUE DES FORMATIONS LANGUES

Avantic Software Présentation de solutions GED pour mobiles (Gestion Electronique de Documents)

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Application de lecture de carte SESAM-Vitale Jeebop

Hébergement de site web Damien Nouvel

Compte Rendu d intégration d application

PRIMAVERA P6 ENTERPRISE PROJECT PORTFOLIO MANAGEMENT WEB SERVICES

Hébergement de sites Web

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Apache Camel. Entreprise Integration Patterns. Raphaël Delaporte BreizhJUG

4. SERVICES WEB REST 46

Architecture SOA Un Système d'information agile au service des entreprises et administrations

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Youssef LYHYAOUI Ingénieur Java/J2EE, SOA, ESB, Web services 31 ans Statut : Indépendant SITUATION ACTUELLE

Curriculum Vitae de Michel Casabianca

Introduction aux «Services Web»

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

INGÉNIEUR - DÉVELOPPEUR EXPÉRIMENT É JAVA - J2EE. 27 ans - 5 ans d'expérience

Programmation en Java IUT GEII (MC-II1) 1

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

LICENCE PROFESSIONNELLE

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Expert technique J2EE

Catalogue des formations

Introduction aux. services web 2 / 2

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Application web de gestion de comptes en banques

30 ans d ingénierie, 23 ans de conseil en architecture de SI

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Rafraichissement conditionné d'une page en.net

Intergiciels pour la répartition CORBA : Common Object Request Broker. Patrice Torguet torguet@irit.fr Université Paul Sabatier

Catalogue des Formations Techniques

Composants Logiciels. Le modèle de composant de CORBA. Plan

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Visual Paradigm Contraintes inter-associations

Informatique & Systèmes de Communication. Stages de 12 à 16 semaines aux Etats-Unis

Assurances & Mutuelles, Industrie, Santé, Énergie, Transport, Médias / Multimédias, Télécoms, Services

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Panorama des solutions analytiques existantes

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

2008 : Diplômé Master 2 ASR (Architecture Système et Réseaux) Université d Evry (Evry - 91)

Architectures en couches pour applications web Rappel : Architecture en couches

Application Web et J2EE

Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1

Les tableaux de bord de pilotage de nouvelle génération. Copyright PRELYTIS

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Moderniser. le système d information et le portefeuille applicatif.

ArcGIS 10.1 for Server

Connaissance des secteurs e-commerce, bourse et assurance.

.ARCHITECTURE ET FONCTIONNEMENT

OBM : Découvrez LA solution de messagerie collaborative libre!

Modernisation et développement d applications IBM i Stratégies, technologies et outils

Vulnérabilités et sécurisation des applications Web

L'automatisation open source pour SI complexes

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

L3 informatique TP n o 2 : Les applications réseau

Ingénieur Développement Nouvelles Technologies

Plan du cours. Historique du langage Nouveautés de Java 7

Davi Trénou. Analyste/Développeur. Concepteur web. Consultant SAP Logan, H2K2B4 Montréal, QC, CA.

Mise en œuvre des serveurs d application

SOAP Concepts Application à Glassfish

Point sur les solutions de développement d apps pour les périphériques mobiles

Notre Catalogue des Formations IT / 2015

«Clustering» et «Load balancing» avec Zope et ZEO

Plateforme PAYZEN. Définition de Web-services

Olivier Deheurles Ingénieur conception et développement.net

Documentation de conception

Evolution des SI à l heure du Cloud

Éléments de programmation et introduction à Java

Plan de notre intervention 1. Pourquoi le test de charge? 2. Les différents types de tests de charge 1.1. Le test de performance 1.2.

Projet de Veille Technologique

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Transcription:

Apache Thrift, SOA légère Retour d'expérience

Qui sommes-nous? 2

Speaker : Horacio Gonzalez Spaniard lost in Brittany, Java developer, dreamer and all-around geek Architecte technique au Crédit Mutuel Arkea JUG Leader du FinistJUG http://lostinbrittany.org/ @LostInBrittany 3

Speaker : Frédéric Gillouard Artisan développeur et fière de l'être Architecte applicatif au Crédit Mutuel Arkea Responsable de l'architecture logicielle de Fortuneo http://www.gillouard.fr 4

Crédit Mutuel Arkea Groupe de banque-assurance Deuxième pôle régional du Crédit Mutuel 3 millions de clients 9000 salariés Des fédérations bancaires et des filiales CMB, CMMC, CMO Fortuneo, Suravenir, Monext, BPE, Financo Informatique interne 450 salariés 5

C'est quoi Apache Thrift? 6

C'est quoi thrift? «Solution scalable et performant pour l'interopérabilité entre systèmes hétérogènes» Langage de description de données Génération de code multi-langage Sérialisation/désérialisation Framework RPC Des exigences de performance Sur la couche transport Sur la manipulation de données 7

Historique A l'origine : développement interne Facebook Mis sous licence libre en 2007 Passage dans l'incubateur Apache en 2008 Gradué comme top-level Apache depuis fin 2010 8

Network stack 9

Network stack - Transport Fournit une abstraction simple pour lecture/écriture réseau Différentes options : Transports réseau classiques Socket TCP, HTTP Transport via filesystem Mémoire, fichier Transports sécurisés SSL, SASL 10

Network stack - Protocol Mécanisme pour faire correspondre les structures de données en mémoire à un format de transport Regit le système de codage Responsable de la sérialisation/déserialisation Protocoles actuellement utilisés JSON Binaire Compressé 11

Network stack - Processeur Lit les données de flux d'entrée et écrit dans les flux de sortie Génération de code multi-langage AS3 C/C++ C# Cocoa Delphi Erlang Go Haskell HTML (documentation des IDL) Java JavaScript OCaml Perl PHP Python Ruby Smalltalk XSD 12

Network stack - Serveur Rassemble les fonctionnalités : Création du transport Création des entrées/sorties pour le transport Création du processeur Attente des connexions pour les aiguiller vers le processeur Différentes types de serveur : Socket Avec ou sans pool de socket Intégration dans des serveur d'application Servlet pour le monde Java Implémentations serveur dédiées Simple server, Non-blocking server, HSHA... 13

Interface Description Langage (IDL) Types de base binary : sequence of unencoded bytes bool : boolean value (true or false) byte : 8-bit signed integer i16 : 16-bit signed integer i32 : 32-bit signed integer i64 : 64-bit signed integer double : 64-bit floating point number string : text string encoded using UTF-8 encoding Types composés map set list 14

Interface Description Langage (IDL) Définitions const : constante enum : énumération struct : structure complexe comme une classe, mais sans héritage exception : structure pour la gestion d'erreurs service : interface pour exposer ou appeler le fonctionnel Entêtes include : permet de structures les fichiers IDL namespaces : permet de structurer les fichiers générés dans certains langages namespaces/package/module dans Java, C++, Python, Cocoa... 15

Exemple - ChatRoom Création d'une application ChatRoom simple : Enregistrement d'utilisateur Visualiser des derniers messages Envoyer un message 16

Exemple - ChatRoom - utilisateur.thrift namespace java com.arkea.thrift.data.utilisateur /** * Structure utilisateur **/ struct Utilisateur { /** pseudo Utilisateur */ 1:string pseudo, } /** mot de passe */ 2:string motdepasse, 17

Exemple - ChatRoom - message.thrift namespace java com.arkea.thrift.data.message include "utilisateur.thrift" /** * Structure Message **/ struct Message { /** contenu Message */ 1:string contenu, } /** utilisateur ayant ecrit le Message */ 2:utilisateur.Utilisateur utilisateur, 18

Exemple - ChatRoom - exception.thrift namespace java com.arkea.thrift.data.exception /** * Exception pour le service ChatRoom **/ exception ServiceException { /** identifiant erreur */ 1:string id, } /** message erreur */ 2:string message, 19

Exemple - ChatRoom - chatroomservice.thrift namespace java com.arkea.thrift.service.chatroom include "message.thrift" include "utilisateur.thrift" include "exception.thrift" /** Service ChatRoomService */ service ChatRoomService { /** Recupérer la liste des Messages */ list<message.message> getlistemessage() throws (1:exception.ServiceException se) /** Envoyer un message */ void envoyermessage(1:message.message message) throws (1:exception.ServiceException se) } /** Enregistrer un utilisateur */ void enregistrerutilisateur (1: utilisateur.utilisateur utilisateur) throws (1:exception.ServiceException se) 20

Rappel des avantages de thrift Sérialisation multi-langage multi-format Format binaire compressé très efficient (Taille des messages réduite) Format JSON Sérialisation et déserialisation très rapide Compatibilité ascendante/descendante Décorrélation des évolutions entre le serveur et les clients Gestion des erreurs et propagation 21

Rappel des avantages de thrift IDL simple Pas besoin d'outil pour les écrire ou lire Description simple mais formelle du modèle de données Structuration à la guise de l'utilisateur Simple à mettre en œuvre Pas de nouveau framework à apprendre Pas de fichiers de configuration XML 22

Génération de code - Java thrift v r gen java:beans,hashcode chatroomservice.thrift 23

Génération de code - JavaScript thrift v r gen js:jquery chatroomservice.thrift 24

Exemple d'intégration - ChatRoomServer Serveur en Java Client JavaScript Client iphone 25

Retour d'expérience - Fortuneo 26

Fortuneo Quelques chiffres 2,3 millions d ordres de Bourse exécutés en 2010 6 milliards d euros d encours d'épargne 500 000 visiteurs uniques par mois sur fortuneo.fr 180 000 clients 180 salariés 27

Fortuneo Migration vers thrift 2007 Création d'une banque en ligne Fortuneo Besoin d'interopérabilité multi-système Oracle, Cobol, Java... Besoin de performance Sur les web-services (à l'époque SOAP avec AXIS/XFIRE) Difficulté de gestion de cycle de vie des services Autant d'implémentation clientes que de partenaires Couche RPC non induatrialisée Difficulté d'intégration des services dans des environnements non-java 28

Fortuneo Migration vers thrift 2007 Réalisation d'une POC Thrift Sur une brique d'identification Brique la plus sollicité, bon test pour tenue de charge Périmètre fonctionnel restreint 2007-2010 Généralisation de thrift à tous nos services Premier temps SI banque Deuxième temps SI bourse Troisième temps l'ensemble du modèle 29

Modèle Métier Fortuneo en 2012 Modèle métier banque et bourse entièrement déclaré en IDL Thrift 1300 structures, 300 services 10 briques applicatives métiers, 5 frontaux Web (Struts, Gwt), Applet java, Android, iphone, ipad 30

Infrastructure Fortuneo 31

Brique applicative Fortuneo Protocole HTTP pour la communication interapplication Apache Tomcat comme web serveur Performance : 35 requêtes/seconde en moyenne Pic à 50 requêtes/seconde 32

Industrialisation Fortuneo Industrialisation Compilation des thrifts à la génération des webapps Pool client générique Thrift Java Thrift publié, versionné, distribué via Ivy Sécurité Mise en place de token pour les échanges interapplications sensibles HTTPS 33

Questions/Réponses Merci 34