Session GWT Devoxx France 2012 Cobra
Upcoming SlideShare
Loading in...5
×
 

Session GWT Devoxx France 2012 Cobra

on

  • 4,033 views

Conférence sur un retour d'expérience de projet GWT en mode agile pour le compte de la société Arkadin (DNG Consulting & Palo IT)

Conférence sur un retour d'expérience de projet GWT en mode agile pour le compte de la société Arkadin (DNG Consulting & Palo IT)

Statistics

Views

Total Views
4,033
Views on SlideShare
1,624
Embed Views
2,409

Actions

Likes
1
Downloads
27
Comments
0

8 Embeds 2,409

http://www.dng-consulting.com 2376
http://dng-consulting.com 9
http://dashboard.bloglines.com 8
http://theoldreader.com 5
http://paper.li 4
http://demos.dng-consulting.com 3
http://www.netvibes.com 2
http://127.0.0.1 2
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Session GWT Devoxx France 2012 Cobra Session GWT Devoxx France 2012 Cobra Presentation Transcript

  • GWT à lépreuve du feu by Sami Jaber (DNG Consulting) twitter @samijaber http://www.dng-consulting.com 1
  • Abstract• Quest-ce que le projet Cobra ?• Une démo, une démo, une démo !• Les défis techniques dun tel projet 2
  • Speaker• Consultant, formateur et fondateur de la société DNG Consulting, spécialisée dans le développement dapplications JEE et .NET• Auteur livre "Programmation GWT 2" paru chez Eyrolles• http://www.dng-consulting.com : expertise technologies Google• Blog : http://www.samijaber.com & Twitter : @samijaber• Projet réalisé en commun avec Palo-IT (http://www.palo-it.com) 3
  • Arkadin & Cobra Spécialiste des services de collaboration à  Offrir le meilleur support possible à nos clients distance (160M€ CA, 1000 Collaborateurs) avec notamment, un temps d’attente ou de Présence Globale (29 Pays, 25K Clients) avec résolution de problème le plus court possible Forte Culture cliente locale (70% de nos ressources humaines, 15 langues)  Une application de gestion de conférences audio & web, utilisée par les opérateurs de notre 11M Conférences, 40M de Participants, 2.5B de Service Client répartis sur un plan mondial (US, Minutes UK, Asie, …) 4
  • Cobra en image Support Level Participants enListe des participants conférence 5
  • LA DEMO, LA DEMO ! 6
  • Larchitecture technique Cobra clients Ponts téléphoniques Ponts téléphoniques Plateforme Audio Plateforme Audio COM (Component Object Model) COM (Component Object Model) Cobra Cobra Backend Backend Cobra Server US Cobra Server UK ConsoleConsole Inter-Cobra communication REST + RestEasy Inter-Cobra communication REST + RestEasy GWT GWT 7
  • Pourquoi le choix GWT• La culture et larchitecture en place dans la société aurait penché pour un choix .NET en Silverlight ou Flash (des compétences que nous avons par ailleurs)• … Mais les contraintes de délais, la nécessité de supporter du quasi temps réel et une ergonomie AJAX ont joué en faveur de GWT• Aujourdhui, après 2 ans de développement (équipe de 6 à 8 personnes), ce choix savère plus que jamais pertinent• On estime à +100% la productivité générée par ce choix technique• Dans léquipe, aucun développeur nest un gourou de JavaScript et ne souhaite le devenir, on aime Java ! 8
  • Les défis techniques• Un projet en mode agile• Gestion du push sur HTTP (GWT EventService – Atmosphere)• Ponts Java/COM, performances, fuites mémoire• Code Splitting• Tests fonctionnels avec Selenium• Le monitoring (DevOps)• Jboss 7.1, EJB 3/JPA 2 9
  • Gestion de projet en mode agile• Des itérations relativement courtes de 3 semaines JIRA• Un outillage SCRUM complet : JIRA, FishEye, SVN Jenkins (intégration continue) Confluence & Google docs (documentation & tests) FishEye QA Director (tests fonctionnels)Transparence => Confiance 10
  • Défi technique principal : le push• Lapplication nécessitait de pouvoir recevoir une centaine dévènements par seconde• Notre choix sest porté sur GWT EventService, un framework OpenSource qui gère du short/long polling & streaming• Nécessité de patcher pour gérer plus finement certaines déconnexions réseau intempestives (merci lOpen Source!)• Nous avons également étudié le projet Atmosphere, un excellent produit même si peu mature au moment de notre évaluation• Cobra sait gérer aujourdhui 25 appels par seconde et des centaines dévènements par seconde (possible de faire mieux!) 11
  • Communication avec .NET• Toute la plateforme destinée à gérer les conférences téléphoniques est développée en .NET (par les équipes Arkadin)• Il fallait un moyen performant en mode In-Process dappeler des services .NET : nous avons opté pour COM (Component Object Model)• Loutil Java/COM retenu initialement, Comfyj de Teamdev, sest avéré buggué (fuites mémoires, problèmes de perfs, …)• Nous avons dû le remplacer par un pont Open Source : Jacob, moins riche, moins documenté mais … OpenSource !• Après quelques patchs et optimisations, Jacob a tenu la charge Outils clés : DebugDiag, WinDebug, ProcExp 12
  • Fragmentation du code JS• Lapplication est très importante, plusieurs dizaines de milliers de lignes de code• GWT propose une fonctionnalité très puissante, celle de générer plusieurs fichiers JavaScript  des fragments de code chargés uniquement si lutilisateur sollicite la fonctionnalité en question (à la manière dun ClassLoader Java)• Le FrontEnd et le BackEnd ont été "codesplittés", ce qui a réduit considérablement le temps de chargement de lapplication  Un opérateur (non admin) ne charge ainsi à aucun moment le JavaScript de lapplication de BackEnd 13
  • Plateforme JEE serveur• Jboss 7.1 : compatible OSGI, empreinte mémoire réduite, support EJB 3.1 et JPA 2 (Java Persistence API 2)• Stack Metro (implémentation JAX-WS) pour la communication avec les WebServices .NET (Basic Profile)• Ehcache comme cache applicatif• Utilisation de REST Easy pour la communication entre les différents serveurs Cobra (lorsquun groupe de support est fermé, il communique avec un autre groupe actif dans le monde pour prendre le relai)• Grâce à ce mécanisme, un support 24/7 est possible ! 14
  • Tests fonctionnels (1/2)• Comme le montre la démo, cette application est très riche et très complexe• Les tests unitaires ne suffisent pas à garantir la qualité dans ce type dapplication où linteraction avec lutilisateur est primordiale• Nous avons donc bâti un environnement de tests fonctionnels basé sur loutil Selenium simulant des opérateurs de type "robots"• Un robot "client" entre en conférence puis est intercepté par un robot "opérateur" qui lassiste, un robot agit à une vitesse quaucun humain nest capable dassurer manuellement avec un navigateur• Nous avons également utilisé ces robots pour nos benchs• Un humain peut se tromper en testant, pas un robot 15
  • Tests fonctionnels (2/2)• Piloter une IHM Web avec un robot nécessite de générer des identifiants de composants graphiques <div id="MoveToConf">…</div>• Plutôt que de "polluer" lapplication de production avec des attributs ID dans les pages HTML, nous avons utilisé une autre fonctionnalité clé de GWT : Le Defferred Binding  Permet de générer des fichiers JavaScript différents en fonction dun paramètre personnalisé  Le testeur charge http://server/cobra.html?debug=true et la production http://server/cobra.html (on fait ainsi léconomie de balises inutiles en production) 16
  • Monitoring & DevOps• Assuré par loutil OpenSource JavaMelody ( http://code.google.com/p/javamelody/)• Simple et peu intrusif mais surtout gère des indicateurs GWT (temps dappels des services RPC)• Nous avons dû là encore le patcher pour le rendre compatible Jboss 7 (encore merci à lOpen Source!) 17
  • Et voilà, des questions ? 18