You are on page 1of 18
Architecture et urbanisation des systémes d'information Quest-ce que le multi-tenant? Publ fe 19 janvier 2017 Quest-ce que le multi-tenant ? Définissons d’abord le terme tenant en frangais et, qui correspond au mot « Locataire », Done, on peut traduire le multi-tenant par le terme multi-locataire. Le multi-tenant est un modele darchitecture logicielle qui permet & partir d'une seule instance d’application de servir de multiples clients oi, chaque client est appelé locataire (tenant) Ce type d'architecture doit offrir la possibilité de personnaliser certaines parties de application, comme la personnalisation des interfaces et les regles de gestion sans pour autant modifier le code de application. Pourquoi cette tendance des applications multi-tenant ? architecture multi-tenant est la réponse conceptuelle pour les exigences des modéles Saas (software as a service ou logiciel en tant que service) ui apporte les avantages suivants par rapport & un modéle classique e383 & EEE] c=) eeas Single-tenant Multi-tenant Quelle est la différence entre une architecture single-tenant vs multi-tenant ? Le tableau suivant identifie les points de différence entre les deux types d'architecture au niveau applicatif et au niveau des données. Single-tenant Multi-tenant Application Séparé Partagé (Mais qui peut tourner sur des environnements d'exécution différents) Base de Séparé Séparé données Bases de données Meme base Meme base, séparées mais des méme schéma schémas. mais séparé par séparés une colonne ID_LOCATAIRE pour chaque table Différence single-tenant vs multi-tenant Comment développer une application multi-tenante? Pour qu'une application soit conforme a une architecture mult-tenante, elle devrait garantir ces trois caractéristiques: 1. Isolation des données 2, Personalisation des fonctionnalités 3. Isolation des environnements d'exécution Isolation des données Etant donné que le modéle se base sur un partage d'une seule instance applicative et une séparation des données, tout I'enjeu est de trouver la bonne démarche pour tisolation des données de chaque tenant. Pour ce faire, il y a 3 approches Bases de données distinctes Le stockage des données des locataires dans des bases de données distinctes constitue 'approche la plus simple pour isoler les données. Avantage inconvénient 1 Faciliter l'extension du modéle de données: 4. CoAts plus élevés pour le maintien de de application pour des besoins spécifique & un Téquipement et de la sauvegarde des données client. des locataires 2, Niveau de sécurité élevé : empéche tout locataire d'accéder accidentellement ou malicieusement aux données des autres locataires 3. Restauration plus facile des données d'un locataire en cas de panne Base de données partagée, schémas séparés Le principe est de héberger plusieurs locataires dans la méme base de données, chaque locataire ayant son propre ensemble de tables qui sont regroupées dans un schéma créé spécifiquement pour le locataire. Lorsqu'un client s'abonne au service, le sous-systéme de provisionnement crée un ensemble discret de tables pour le locataire et l'associe au schéma propre du locataire application peut ensuite créer et accéder aux tables dans le schéma du locataire en utilisant la convention Avantage 1. Facile a mettre en ceuvre. 2. Permet l'extension du modéle de données pour des besoins spécifiques & un client. Base de données partagée, Schéma partagé inconvénient 1, Niveau de sécurité : moyen, puisque le systéme n’est pas complétement isolé, puisque il se base sur une séparation logique des objets de la base de données. 2, Restauration de données compliqué a réaliser : pour restaurer les données d'un seul client, l'administrateur de la base de données doit restaurer la base de données sur un serveur temporaire, puis importer les tables du client dans le serveur de production, tache compliquée et potentiellement longue. Cette troisiéme approche consiste a utiliser la méme base de données et le méme schéma. L principe c'est qu'une table dans la base peut contenir des enregistrements de plusieurs locataires et, stockés dans n‘importe quel ordre. Une colonne ID par locataire est créée dans chaque table (Exemple ID_LOCATAIRE) qui permet d'associer chaque enregistrement a son locataire, Avantage 1. Trés facile mettre en ceuvre, 2. Permet extension du modéle de données pour des besoins spécifiques a un client. Personalisation fonctionnelle inconvénient 1. Le niveau de sécurité est moyen, puisque le systéme n’est pas complétement isolé, étant donné qu’on a juste une séparation logique des objets de la base de données 2. Demande un effort supplémentaire au niveau de développement pour assurer une étanchéité entre les enregistrements de chaque locataire. 3. Risque d'augmenter tes bugs (chevauchement des enregistrements) 4. Coit de tests plus élevé, 5. _ Lhébergement de tous les enregistrements dans une méme table entraine généralement une lenteur d'accés et donc une baisse de performance. 6, _ Restauration de la base trés délicate avec suppression et insertion des lignes. Avec les applications classiques non partagées on a un environnement d'exécution dédié pour chaque client, Toute personalisation requise pour un client peut étre effectuée dans le code client déployé sur cet environnement, Mais une application multi-tenante ne peut pas suivre le méme principe depuis un seul environnement d'exécution. Par conséquent, une application multi-locataire doit étre congue en prenant en compte la possibilité de personnalisation des fonctionnalités. Le mode de personalisation peut étre : Au niveau des processus métiers : Par exemple un client peut définir son processus d'achat différemment qu'un autre client (en introduisant d'autres phases de validation dans le parcours) Au niveau des fonctionnalités : Par exemple, une fonction de paiement peut varier selon les clients, certains peuvent demander un envoi de mail alors que d'autres exigent un envoi par sms Au niveau de l’offre des licences : Le produit posséde plusieurs licences qui définissent les fonctionnalités activées pour le client Implémentation technique du multi-tenant Tout lenjeu technique pour garantir un fonctionnement multi-tenant est d'assurer qu'une entité donnée, qui représente une classe de mapping a une table de base de donnée est bien partagée entre plusieurs locataires d'une application. Avec les environnements java on a deux solutions envisageables 1, Utilisation de l'API Java Persistence (JPA) pour EclipseLink avec la version 2.5 A Stratégie par table partagé c’est-a-dire allocation des lignes par locataire avec I'annotation @Multitenant (SINGLE_TABLE) Le type multi-tenant SINGLE_TABLE spécifie que la table peut inclure des lignes pour plusieurs locataires. Laceés aux lignes spécifiques aux locataires est réservé a l'aide de colonnes discriminantes. @Entity @Table(nam EMP") @Multitenant(SINGLE_TABLE) @TenantDiscriminatorColumn(name = "TENANT_ID”, contextProperty = « employee-tenant.id ») model.Employee »> »EMP »/> ... A, Stratégie au niveau c’est-a-dire allocation des tables par locataire avec l'annotation @Multitenant (TABLE_PER_TENANT) Spécifie que la table ou les tables d'une entité sont des tables spécifiques a un locataire. acces a ces tables est limité au locataire spécifié. B. Toutes les opérations de lecture, d'insertion, de mise a jour et de suppression du locataire s'appliquent uniquement aux tables du locataire. c, @Entity @Table(nam: EMP") @Table (nom = « EMP ») @Multitenant(TABLE_PER_TENANT) @Multitenant (TABLE_PER_TENANT) @TenantTableDiscriminator(SCHEMA) @TenantTableDiscriminator (SCHEMA) public class Employee { Public class Employe { yy
.. A, Stratégie au niveau de la base de donnée avec I'annotation @Multitenant(VPD) Pour utiliser la mubkidistribution EclipseLink VPD, vous devez d'abord configurer VPD dans la base de données, puis spécifier le multi-tenant sur lentité Le type multi-tenant VPD (Virtual Private Database) spécifie que la base de données gére le filtrage de locataire ‘sur toutes les requétes SELECT, UPDATE et DELETE. Pour utiliser ce type, la plate-forme utilisée avec I'unité de persistance doit prendre en charge VPD. @Entity@Muttitenant(VPD)@TenantDiscriminatorColumn(name = « USER_ID », contextProperty = «tenant.id »)@Cacheable(false) public class Task implements Serializable ( > _
1, Utilisation du framwork Hibernate a partir de sa version 4 en implémentant les deux interfaces : A. MultiTenantConnectionProvider. B, CurrentTenantidentifierResolver hibernate.tenant_identifier_resolver »>package.to.your.CurrentTenantidentifierResolverImpl package.to.your.MultiTenantConnectionProvider Publé dans Non class | Laiser un commentate Crest quoi un Oracle Service Bus (058)? Puke $l 2018 C'est Entreprise Service Bus (ESB) d’Oracle, un out! logiciel qui permet dinterconnecter des applications entre elles d'une maniére normalisée afin d'assurer une architecture orientée service (SOA). lla pour vocation de : = Réduire les couplages forts entre applications, c’est-a applications. = Augmenter la réutilisation des services exposés par les applications connectées au Bus = Centraliser la gestion des services au sein d'un seul out. dire supprimer les liaisons point a point entre NB : Un service peut étre un WebService, une file JMS, un dépét par FTP, un EJB déployé, un client ou un serveur Mail, un accés vers une base de données ou une interface vers d’autre applications (Sibel, CRM, peopleSoft...) Intégration avec une architecture point-a-point Migration vers une architecture SOA Actes eer ‘Appkcation1 Application 2 eeccec) err err) Ilerotion dune intégration point 3-pointaune architecture soa, Fonetionnellement : II permet d'assurer principalment = Le routage des messages inter-applicatifs avec plusieurs protocoles, ce qu'l lui permet de jouer le réle d'un proxy (Exemple : Http vers Http, Http vers JMS, Http vers Ftp, Http vers Smtp...ou inversement) = La transformation et renrichissement des messages échangés = Limplémentation de la sécurité des échanges Mais aussi il peut assurer : = La Validation de la structure et du contenu des flux échangés = La gestion des erreurs = la répanttion de charge (Load balancing) = La journalisation du trafic des flux sur le bus ‘Techniquement : Historiquement le serveur OSB était le produit BEA Aqualogic Service Bus (ALSB), aprés l'acquisition de BEA, Oracle I'a rebaptisé Oracle Service Bus. Il se base sur la pile composée de la JVM puis un serveur d’application java EE qui n'est autre que le serveur Weblogic. Led nn k= retrastuctie WEBLOGIC instaréeencornie Pile d'architecture de l'oracle service bus Pour simplifier, !'Oracle Service Bus est composé d'un (serveur Weblogic) + (un ensemble d’applications sous forme de jar, war, et ear... déployées dessus et qui assurent les fonctionnalités techniques du bus) Liste des applications déployées sur le serveur Weblogic pour '0SB Une fois le socle installé, il faut développer dessus ou plut6t le configurer pour implémenter les fonctionnalités des routages désirées. Le développement sur 'OSB peut étre réalisé par deux fagons soit: = Directement sur la console de 'OSB = Ou avec IDE OEPE installé dans le méme répertoire que le serveur de DEV. Les fonctionnalités de routages sont groupées dans des projets, représentés par des simples répertoires et qui contiennent les ressources utilisées ( comme des fichiers .wsdl ou xsd) et des fichiers .xml décrivant les configurations de routage implémentées. Lensemble des fichiers est encapsulée et exportée dans un fichier jar et peut, par la suite étre importé dans IDE OEPE ou déployé dans d'autres instances OSB. Publé dans Invaducton, Oral ie Bus |Tagué Architecture, bus, Oracle, Servce, SOR ansaton | Lalsser un commentaire Comment créer une file JMS sous weblogic ub le 290mai 201 Dans cet article nous montrerons les étapes pour la création d'une file JMS dans un serveur d'application weblogic 11g. Une file IMS sous weblogic est dépendante d'autres ressources serveurs, qu'll faut préalablement les créer, Ci-dessous les 5 étapes a suivre via la console weblogic Etape 1: Création d’un serveur JMS (JMS Server) = Naviguer dans : Services > Messaging > JMS Servers 1 Sélectionner le bouton New ton Console ORACLE WebLogic Server® Administr ‘Change Center @ Home 109 Out Preferen ‘iow changes and restarts one sSumary of rues Cenfauaton edsreis embed. Fubre ‘Summary of 18 Servers charger ill estore be atalino yu ‘rodfy, sddor dete teen he coma. “he page sans the 3 servecbus - eee Beerronment [PDesioents Customize this table eserves J Pee ©) ars servers (ritered 1 ii ew ainard Azens hen] oats 205 Weddes Path Services Fi] name || sercces Date Sources Ei [reserve Foregn NDIPraviers 2 a Le rona ey) ae = Saisir le nom du serveur (Exemple: JMSServerTest) = Choisir le Persistent Store: (Dans notre cas ce sera « none », pour indiquer que les messages qui débarquent sur le serveur JMS, ne seront pas sauvegardés en cas de rupture de service) = Cliquer sur « Next > |e |, a The flowing propertes wl be set deny your nen JMS Server “Indies renured eke ‘What wo tke to rane your new 5 Server? Gotame: INSSereifost ‘pest point str re ew HS Se Persistent Store: (wore) [Fete New Sa Se] [Ne |e | cae = Maintenant, il faut sélectionner le Target, c'est- dire 4 quel serveur weblogic (administré, managé ou cluster) sera rattaché le serveur JMS, Dans notre cas ce sera rattaché au Target proposé par défaut. este anew HS Sener fox | 68 | fis ||| ne seectase seecesmerictnces nigaibe mgt enone yout 3S ee, Target: | Bek | [SE | en || cones Le choix du Target et obligatoire pour avoir un serveur JMS en état « OK » = Un nouveau serveur JMS vient d’étre crée | 2308 Etape 2 : Création d’un module JMS (JMS Module) = Naviguer dans : Services > Messaging > JMS Modules = Sélectionner le bouton New ORACLE weblogic Server® Administration Console Change Center B Hore Log Gut Prefere Seay aor | oe cetera, Soe mien — nares servecbur +) rnepace summaries the TF Evronmest pase Fr serces i= | @ Customize this table he woos Da How dor [New] [Date = Saisir le nom du Module JMS (Exemple: ModuleTest) = Cliquer sur le bouton « Next » ‘create 28 System Module Bae] | noe | [FFB || cea | ‘The followng properties wil be wed to Wentfy our new module. 2s syste esoices ae cng ad ved s modes sna tana 1258 maces. Such sources ind prorat. You cn aduntatvey conto and arage 35 estan nec ae cabal sje ores. ndeatesseaited fe What woud aul torame your System Mode? Mame: ModuleTest \Whet woud yaulte tarame the dente nae F yd natant anane, a deat nd beige, Desenptor Fle tame: Where woul a to lace the ester fr the System Mec, ranve tthe me conteratensubarectry ofy Location In Domai: a] (a cee = Sélectionner ensuite le serveur qui sera rattaché au module JMS = Cliquer sur le bouton « Next » = Ilnous demande, aprés, d'ajouter des ressources au module, on va pas choisir Foption et on clique sur le bouton « Finish ». cesta system ede see [st || ||| ona ai rsonee tothe HS astem mole lic tiaras ech sent immed ares [Fl Would you tke to add resources to thie HS system module? = Le module est, maintenant, crée MS Modules 25 system escurces re confiured are stored as moses paranetes. Youcan adwrisvatvey confgue and anage ‘hs pace sunnarues the VS eyton medi hathavebe b custome this table IMS Hodules| i Daas Meme ysesouces detest Wessineadde Fee fr Dae Etape 3: Création d’un sous-deploiement (Subdeployment ) = Sélectionner : Services > Messaging > JMS Modules = Sélectionner le module : ModuleTest, qu‘on vient de créer = Sélectionner onglet « Subdeployments » ‘Desa soe geminata Szrenmase torent a sneered caer ee Tepe erie Mramrntthentn cnt 3am ig pant eran rn, Se tome ae oa f= — sete ‘rexel ay = Cliquer sur le bouton « New » dans « Subdeployments » ‘Setungs for Moduletest Confcuaton | Subdeployments | Tacets | Seavity | Nts “the poge dopa abdeloments casted for aS etn mode, Aaubepeymerte 3 mechanenbyWheh JS use, DB Customize this table ‘Subdeoloyments | i] name Resources (en) [ae] = Taper un nom d'un subdployments : = Cliquer sur le bouton « Next » ‘creates ew sebdenioyment 5] ne | | cme sutdepoyment opens ‘Treforest ia ou rv net rset ce * subdepoyment Name: “SubdepioymenisTaet = Choisir ensuite le Target du deployements, Dans notre cas ce sera « JMSServerTest » qu'on vient de créer Create a New Subdeployment acc [Ne || Fah || Conca | Targets Pease sect tgs fo the Subdeploynent |" netabiescesaragent acc (Nee | Frah_ || Cancel = Le subdeployement est crée Hessages “@ 8 ances have been acnvated. No restarts ae necesay. _¢ Sibsepoymert casted sucess. ‘Settings for Moduletest Confcuaton | Subdeployments | Tacets | searty | Note ‘he once delays abdcnloynents center 9 MS system edule, Abs custe) ( customize tn tae ‘Subdeployments Non | [Date i] names Ei |sbscpeymentest New | | Date Etape 4: Création d’une fabrique de connexion (Connection Factory) = Naviguer dans : Services > Messaging > JMS Modules = Sélectionner « ModuleTest » et cliquer sur le bouton « New » Create a lew JMS System Module Resource Bes (Next) | [Raa] | Corea ‘Choose the typeof resource you want to create. Use thee pages to create escurces 2 JMS system mde, ach 28 ates, tne Depending onthe tne ofresurce you set, you are promoted to enter basic nf (anal prcmed a targeting ages fr slectng apogee trgs. Youca = Choisir option Connection Factory et cliquer sur le bouton « Next » ‘Create a New 3s System Module Resource ‘The oloning proper tes wl use ta dent you nen commecon facta. The cuvent moce i ModdeTest st vad youtle to nae yeu new comneston facto? “Mame: SonnectanFactoryTesl “Wet NOT Nae would youike to set lck up yourren connection fctny? Jno ame: ims/CFTest “Te Comnacton Factory Subse pian Sharing PoleyS.becbers canbe ute to contalhich berber can acess Sinsation sherng Fob Beinwve =) The Giet Foley nents whether mae han ane 35 comecton cae the sane lent D. Crece econrens ‘sbecrtors. hat Cant 1 Plcy woud auth Use? (Ghent 1D Poli: Rostictod [=] -Acanmectn factory can the nurs oF messages that can cuesed fr an asynerena.s session, Seu his om Maximum Mescages per Session: 0 Steud ie canmecon factory cate sss that ae TA amare nd aeateXA qucuesandXA tps? 1XA Connection Factory Enabled = Saisir un nom logique et un nom JNDI de la Connexion Factory et cliquer sur le bouton « Next » Create a New JMS System Module Resource Ba [Wet ||frah SS Teg | can ‘The following properties wll be used to target your new IHS system module resource Use this page to vew and cept the deat get bere thi IMS rexurce nl be argete, The de smechanan fer ageing the resource “Te foloning MS module targets wil be used asthe def orget for your new JS system mode re Targets: Servers ServicetnSemples se | [st || rn, || aveene taser ||| cre = cliquer sur le bouton « Advanced Targeting » pour affecter la connexion Factory au sous-deploiement (Subdployements) qu'on vient de créer. Coonte alow IHS Sytem Module Resource eck [NSE] |[Fnah || Conc ‘The following properties wil be used to target your new JES system module resource seth page to let» sbesyent fo assign ht spstem mote resource 8 bsepoyret is mech ‘2tew Subdeploymentbutn. You can deo fecntaure susceso/menttfce tr by usr he parent “Select the ubdeployment you want tute yeu select rene) ro tegen wl ec set Senses) ot att eat trgets do you want to assgn to ths subdeloynent? Taracts: | wabantsserver | wsceamsserver acc [Nee | neh | Cancel = Choisir le subdeployements qu’on vient de créer, et sélectionner le serveur JMS « JMS Server Test » = Cliquer sur le bouton « Finish » Etape 3: Création d’une file JMS (Queue) = Naviguer dans : Services > Messaging > JMS Modules = Sélectionner « ModuleTest » et cliquer sur le bouton « New » Create a Mew JM System Module Resource eck | | Nise | || fost | || cance ‘Choose the type of resource you want to create. Use these pages test resurcesina MS eystam mode, sh as queues Depending onthe pe ofraoure you see, you ae pronptad tener bar (an ao proceed to ageing Dagar acing approeat aver et. © connection Factory = Choisir « Queue » et cliquer sur le bouton « Finish » ‘create a ew 3HS System Module Resource a | | Nae | || neh ||| cance IMS Destination Properties “he follwing properties wil be used to ident your nen Queue, The cent mode reat regres felis Name: (QueueTest wor name: (QueueTest “Template: None [=] sc [| | | cr = Saisir le nom et le nom JNDI de la file jms = Cliquer sur le bouton « Next » ‘Create a New JMS System Module Resource sex | 68) || re || const The ning properties ne edt target your new JS aystem mode easter Use this page to seca subdeoyment to ms th tem mace resource epoymetis emacs ‘anew Subdeployment auton, You can aso reconfigure subcepo ner argent by vena the parent. Sethe subdesloyment you want use, TFyou select (one, no targeting wil car, a

You might also like