Framework Play 2.0 Démonstration du proof of concept

Slides:



Advertisements
Présentations similaires
Master SIR (M2) Année Développement en environnement J2EE de Web services pour l'interopérabilité du projet CASTORE ce stage de fin d’étude a.
Advertisements

Intégration de logiciels Open-Source dans un ordinateur simplifié basé sur Linux Stage du 6 avril au 30 juin 2006.
Exposés logiciels, systèmes et réseaux
ACubeOLAP Client Olap en ACube.
Nouvelle version du canal Esup MonDossierWeb
A NETWORK-AWARE DISTRIBUTED STORAGE CACHE FOR DATA INTENSIVE ENVIRONMENTS Brian L. TIERNEY, Jason LEE, Brian CROWLEY, Mason HOLDING Computing Sciences.
Serveurs web pour JSP et Servlets
TER 2005 Sujet encadré par Philippe Collet Nicolas Yohann Barbier Thomas Castillejos Nicolas Sauvan Bastien Salageanu Emil.
L’intégration continue
Guillaume KRUMULA présente Exposés Système et Réseaux IR3 Mardi 5 Février 2008.
HTML Les types de balises
simulateur de réseau de machines UML connectées par WiFi mode ad-hoc
NFE 107 : Urbanisation et architecture des systèmes d'information
STEP, valoriser la thèse avant la soutenance
La configuration Apache 2.2 Lhébergement virtuel.
Injection de dépendances
Introduction aux Session Beans
Présentation application GRBL France Telecom
Le 8 mars Notre vision du web-to-print. le 8 mars Information pour le système Prisme Technologies Prisme Technologies se spécialise dans.
Projet Drone/Android M2
Les outils d’intégration continue
Le Téléphone Russe Le Téléphone Russe. Le Téléphone Russe Le Téléphone Russe.
Module 11 : Configuration de Windows 2000 pour les utilisateurs mobiles.
Forum JEE: framework STRUTS 1 et iBATIS
Etude des Technologies du Web services
Présenté par : Kalleli Dhouha
Module 1 : Préparation de l'administration d'un serveur
Architectures Web - N-Tiers
Principes de persistance dans les applications orienté objet
Développement Rapide dApplications Web avec.NET « Mon premier site »
Laboratoire d'Informatique de l’Université de Franche-Comté
ASP.NET Par: Hugo St-Louis. C ARACTÉRISTIQUES A SP. NET Évolution, successeur plus flexible quASP (Active Server Pages). Pages web dynamiques permettant.
Introduction RADIUS (Remote Authentication Dial-In User Service)
Développement dapplications web Authentification, session.
Développement d’application web
Les outils de déploiement
Scénarios Architecture Drupal V 1.0. Scénario 1 : La base de données est également installée sur celui-ci. Le client ici fait office dinjecteur. Drupal.
Création d'un projet Web avec Netbeans
Clients riches RIA (Rich Internet Application) / RDA
J2EE vs .NET Réaliser par : SEIF ENNACER BADRA && CHETOUI RIM.
SOMMAIRE  Introduction  BCO / Toolbox aujourd’hui  Recommandations pour BCO  CRP aujourd’hui  Recommandations pour CRP  La base de données  Recommandations.
PHP & My SQL.
JavaScript Nécessaire Web.
CEDCOM architecture haute performance pour des applications “big data” Tanguy Raynaud Projet CEDAR.
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
08 Avril 2010 Versionnement de CODE (Subversion SVN et USVN) CATI Ecoinformatique le 08/04/2010.
09/11/2006 CMS Content Management System Système de Gestion de Contenu.
« Le plaisir du chercheur : retrousser les jupes de la nature » Jean Rostand Proposer une « Interface Homme Machine » en utilisant une technologie Client.
Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
Mise en place d’un Intranet
Arbre GénéalogiqueDiagramme de Classes Comment la visualisation d’une hiérarchie de classes facilitera le travail de notre client ?
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Présence et communication peer-to-peer Diplômant : Yves Bresson Professeur responsable : Yves Dennebouy EIVD Septembre - Décembre 2003.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Présentation ESTRABOX
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Subversion.
MP2P PROTOCOLE & SYSTÈME DE STOCKAGE REDONDANT COACHING 3 – 21/05/2015 Julien DUBIEL – Mathieu CORRE – Francis VISOIU MISTRIH.
Soutenance.  Présentation générale  Architecture & Modélisation  Environnement de travail  Démonstration  Conclusion.
ETM IBN ROCHD Présenté par : Mlle KHETTAR Lamia & Mlle AIT SAADA Kahina Novembre 2012.
PROJET DE SESSION PRÉSENTÉ PAR : Rosemarie McHugh DANS LE CADRE DU COURS : SCG Réalisation d’applications en SIG 16 avril 2007.
DWR Jean-Jacques LE COZ. Introduction Projet DWR Framework AJAX Projet Open Source commencé en 2004 Licence GPL (Apache Software License v2) Sponsorisé.
Architecture J2EE Web Jean-Jacques LE COZ. J2EE Web Container JSP Page Servlet J ava 2 Standard Edition APIs EJB Container EJB JDBCJMS JNDI JTA JavaMail.
Développement d’applications Web
Transcription de la présentation:

Framework Play 2.0 Démonstration du proof of concept 30.05.2012 OSF – Open source Framework Framework Play 2.0 30.05.2012 Yverdon A. Nicolet et V. Clément Démonstration du proof of concept

Programme Cache distribué Compilation à la volée Accès EJB depuis Play Session de base avec Play Cache distribué avec EHCache Préparations niveau OS et logiciel Cache distribué comme session Compilation à la volée Accès EJB depuis Play Préparation REST RMI Conclusion

Cache distribué Session de base avec Play Play est stateless... Session stockée dans un cookie Max 4Ko String only Signé avec une clé secrète (lié à la clé de l'application) // set in the session session(key, value); // get in the session String value = session(key);

Cache distribué Session de base avec Play La session de Play est bien stateless! Limitations: limitations des cookies (4Ko, String only,...) Valeur signées, mais en clair chez le client Pour parer aux limitations: Le cache distribué

Cache distribué Cache distribué avec EHCache EHCache est utilisé de base dans Play! // set in the cache Cache.set(key, value); // get in the cache String cachedValue = (String) Cache.get(key); Configuration de base écrasable (conf/ehcache.xml) <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd" updateCheck="false"> <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=automatic, multicastGroupAddress=230.0.0.1, multicastGroupPort=4446, timeToLive=32"/> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost, port=40001, socketTimeoutMillis=2000"/> <!-- the port needs to be different on every node! Otherwise, all the configuration can be identical on every node --> <defaultCache name="distribCache" maxEntriesLocalHeap="10" eternal="false" timeToIdleSeconds="100" timeToLiveSeconds="100" overflowToDisk="false"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true, replicateUpdatesViaCopy=true, replicateRemovals=true "/> </defaultCache> </ehcache>

Cache distribué Architecture de tests http://localhost:9999 http://playtest.lo virtual host avec load balancer http://localhost:9998

Cache distribué Préparation au niveau de l'OS Nom de domaine "playtest.lo" dans le fichier hosts Activation du multicast sur l'interface lo0 Virtual host apache avec load balancing Checkout du projet depuis le SVN: poc1 Checkout du projet depuis le SVN: poc2 Deux changement à faire dans poc2: Numéro de port du cacheManagerPeerListenerFactory Titre des pages pour différenciation Démarrage des deux noeuds avec play http://localhost:9999 http://localhost:9998

Cache distribué Cache distribué avec EHCache - Conclusion Play reste stateless, même avec un cache distribué Limitation: le cache est commun à tous les utilisateurs Possibilité d'écrire des POJO dans le cache Avec un simple frontend Apache, facile de: Monter en charge en “copiant” les applications Faire de la maintenance sur l’application en maintenant le noeud 1 et laissant les requêtes durant un moment sur le noeud 2 Problèmes de ports bloqués pour le multicast... Cache Inactif si l'application n'a pas été activée (en dév) Cache warming ne fonctionne pas toujours... Pour parer aux limitations: Combiner la session de base (cookie) de Play avec le cache distribué Stockage d'un UUID dans la session et utilisation pour chacque accès au cache Utiliser la découverte manuelle

Cache distribué Play est stateless, même avec une session distribuée Cache distribué comme session - Conclusion Play est stateless, même avec une session distribuée Petit "hack" nécessaire pour y parvenir // the uuid use to differenciate elements in the global cache String uuid = form.get().uuid; // set in the cache Cache.set(uuid + key, value); Manipulation du cache limité par les interfaces de Play

Compilation à la volée Principe Une application toute simple, avec 3 états Index StateA next step next step (finish) next step StateC StateB next step

Compilation à la volée Changements rapide avec le mode développement Conclusion Changements rapide avec le mode développement Seul les éléments modifiés sont recompilés Fichiers de configurations interprétés en direct Scénario de mise à jour pour garantir la disponibilité

Accès EJB depuis Play REST vs RMI Play est très complet et permet d'utiliser tout les repository Maven, Ivy ou git dans ses dépendances. Le fichier de dépendances Build.scala

Accès EJB depuis Play REST Utilisation de Jersey pour exposé le Session Bean via une API REST Accès simple via le browser

Accès EJB depuis Play REST Utilisation du client Jersey pour un appel depuis Play

Accès EJB depuis Play REST

Accès EJB depuis Play RMI (Spring Remote) - Bean Side Exportation du Spring Bean en service RMI

Accès EJB depuis Play RMI (Spring Remote) - Play Side Fichier de configuration dans "/conf" Dépendances dans project/Build.scala

Accès EJB depuis Play RMI (Spring Remote) - Play Side Ajout de l'interface du Bean dans les sources du projet Play Import des éléments nécessaire depuis le framework Spring Appel sur le Spring Bean via RMI

Accès EJB depuis Play RMI (Spring Remote) - Play Side Accès depuis notre application Play

Accès EJB depuis Play Conclusion: Résultat JMeter Conclusion: Exposition d'un Session Bean en REST avec accès depuis Play est plus simple à mettre en place et possède des performances similaires à un appel RMI.

Conclusion On peut tout faire avec Play ! Il suffit de mettre la main à la pâte et d'y passer du temps ! Le code est les documentations sont disponibles ici: http://code.google.com/p/stateless-and-live-updates-for-play/