Application statique Tolérance aux Fautes des Grappes d Applications J2EE Sara Bouchenak Sacha Krakowiak, Noël de Palma, Stéphane Fontaine Projet SARDES INRIA IMAG CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 2 Application dynamique Applications dynamiques Architecture multi-tier (extension du modèle client-serveur) Serveur multi-tier construit des documents à la volée et les retourne au client composants logiciels requêtes SQL CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 3 web requête HTTP réponse HTTP Serveur web Serveur d application req. SQL rep. SQL Serveur de base de données CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 4 tables BD
J2EE : Modèle d architecture multi-tier Grappes d applications J2EE Architecture multi-tier de plus en plus populaire [Cattel 2001] e-commerce, content delivery, etc. Architecture multi-tier Multiplication des couches logicielles Java 2 Enterprise Edition (J2EE) Spécification de Sun Microsystems Modèle pour développer des applications réparties Java dans une architecture multi-tier Serveur d applications J2EE Serveur middle-tier Plate-forme d exécution de composants logiciels ex. Servlets, EJB exécution de la logique de l application génération dynamique de documents web Charge plus importante des serveurs Solution : scalabilité Supporter la montée en charge Grappes de serveurs dupliqués L4 Serveurs Web (Apache) mod_jk Serveurs de Servlets (Tomcat) cmi Serveurs d EJB (Jona) c-jdbc Serveurs de base de données (MySQL) CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 5 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 6 Problématique : Tolérance aux fautes Plan Architecture multi-tier Multiplication des couches logicielles Applications encore plus sujettes aux défaillances Besoin de tolérance aux fautes JSR (Java Server Recovery) : Tolérance aux fautes des grappes de serveurs J2EE Rappel sur la tolérance aux fautes JSR Tolérance aux fautes des grappes J2EE Evaluation et perspectives CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 7 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 8
Rappel sur la tolérance aux fautes Origine des défaillances dans les services Types de fautes Fautes matérielles (ex. pannes franches de serveurs) Fautes logicielles (ex. fautes transitoires dues/charge du serveur) Fautes de l opérateur (ex. erreurs de configuration du serveur) Online e-commerce unknown 12% operator 33% network 20% hardware software 10% 25% Content delivery unknown 22% operator 36% network 15% hardware 2% software 25% Mise en œuvre de la tolérance aux fautes Détection de fautes Traitement de fautes Une grande partie des défaillances dans les services est due aux fautes logicielles et aux fautes de l opérateur [Oppenheimer 2003] Fautes logicielles/opérateur peu étudiées CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 9 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 10 JSR Tolérance aux fautes de grappes de serveurs J2EE Principes de conception Hypothèses Fautes logicielles et fautes de l opérateur, transitoires (liées à un contexte particulier du serveur) Grappe de serveurs J2EE dupliqués Principe replay replay Scalabilité Solution centralisée pour la grappe : problème de goulot d étranglement Violation de la scalabilité des grappes de serveurs J2EE Mise en œuvre décentralisée de la tolérance aux fautes Ex. chaque Servlet a la responsabilité de détecter/traiter les fautes survenant dans cette Servlet 1 st peer app. server processing 2 nd peer app. server Généricité Solution générique pour les applications et intergiciels J2EE applicable à toute application J2EE et à tout intergiciel J2EE sans modification manuelle du code de l application sans aide du programmeur de l application sans modification de l intergiciel Error DB tables Utilisation de techniques de programmation par aspects (AOP) CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 11 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 12
Solution décentralisée - Scalabilité AOP - Généricité/Automatisme // Java Servlets public void doget(httprequest, HttpResponse response) throws IOException, ServletException { try { // Fault détection // Normal execution of the software component... catch (Exception e) { // Fault recovery 1 st attempt on 1 st peer server if second fault, 2 nd attempt on 2 nd peer server J2EE application (aspect 1) Weaving rules Aspect weaving Fault-tolerant J2EE application Fault-tolerance system (aspect 2) CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 13 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 14 Fautes dans J2EE: Exemple 1 Fautes dans J2EE: Exemple 2 Faute de l opérateur Mauvais déploiement de l application TPC-W, librairie en ligne [TPC-W 2004] mauvaise version de librairie utilisée par TPC-W lors du déploiement de l application traitement de requêtes interrompu sur serveur J2EE Faute perçue par le client Faute temporelle RUBiS, site de ventes aux enchères [Amza 2002] spécification d un délai max de traitement des requêtes trop court traitement de requêtes interrompu sur serveur J2EE Faute perçue par le client CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 15 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 16
Conclusion Perspectives JSR Tolérance aux fautes des grappes J2EE Principes de la solution applicable à toute application J2EE et à tout intergiciel J2EE pas de modification manuelle du code de l application pas d aide du programmeur de l application pas de modification de l intergiciel compatible avec la scalabilité de grappes de serveurs Mesure de la performabilité des applications J2EE avec JSR Injection de fautes fictives, ariation de la fréquence d occurrence de fautes Observation des fautes perçues par le client Applications benchmarks TPC-W, RUBiS Généralisation de l approche à d autres tiers de l architecture multi-tier Ex. au niveau des serveurs de BD Détection/traitement de fautes plus tôt CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 17 CFSE'4, 6-8 avril 2005 Tolérance aux Fautes dans J2EE 18