+ All Categories
Home > Technology > Session GWT Devoxx France 2012 Cobra

Session GWT Devoxx France 2012 Cobra

Date post: 30-Apr-2015
Category:
Upload: samijaber
View: 4,797 times
Download: 2 times
Share this document with a friend
Description:
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)
18
1 GWT à l'épreuve du feu by Sami Jaber (DNG Consulting) twitter @samijaber http://www.dng-consulting.com
Transcript
Page 1: Session GWT Devoxx France 2012 Cobra

1

GWT à l'épreuve du feuby Sami Jaber (DNG Consulting)

twitter @samijaberhttp://www.dng-consulting.com

Page 2: Session GWT Devoxx France 2012 Cobra

2

Abstract

• Qu'est-ce que le projet Cobra ?

• Une démo, une démo, une démo !

• Les défis techniques d'un tel projet

Page 3: Session GWT Devoxx France 2012 Cobra

3

Speaker• Consultant, formateur et fondateur de la société DNG

Consulting, spécialisée dans le développement d'applications 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)

Page 4: Session GWT Devoxx France 2012 Cobra

Arkadin & Cobra

Spécialiste des services de collaboration à distance (160M€ CA, 1000 Collaborateurs)

Présence Globale (29 Pays, 25K Clients) avec Forte Culture cliente locale (70% de nos ressources humaines, 15 langues)

11M Conférences, 40M de Participants, 2.5B de Minutes

Offrir le meilleur support possible à nos clients avec notamment, un temps d’attente ou de résolution de problème le plus court possible

Une application de gestion de conférences audio & web, utilisée par les opérateurs de notre Service Client répartis sur un plan mondial (US, UK, Asie, …)

4

Page 5: Session GWT Devoxx France 2012 Cobra

Cobra en image

5

Support Level

Participants en conférence

Liste des participants

Page 6: Session GWT Devoxx France 2012 Cobra

LA DEMO, LA DEMO !

6

Page 7: Session GWT Devoxx France 2012 Cobra

L'architecture technique Cobra

7

Cobra Backend

Cobra Server UKC

OM

(C

om

ponent

Ob

ject

Model)

CO

M (

Com

ponent

Ob

ject

Model)

CO

M (

Com

ponent

Ob

ject

Model)

CO

M (

Com

ponent

Ob

ject

Model)

Inter-Cobra communicationREST + RestEasy

Inter-Cobra communicationREST + RestEasy

Ponts

Ponts

télé

phoniq

ues

télé

phoniq

ues

Pla

tefo

rme A

ud

ioPla

tefo

rme A

ud

io

Ponts

Ponts

télé

phoniq

ues

télé

phoniq

ues

Pla

tefo

rme A

ud

ioPla

tefo

rme A

ud

io

clients

Cobra Backend

Cobra Server US

Console GWT

Console GWT

Page 8: Session GWT Devoxx France 2012 Cobra

Pourquoi le choix GWT• La culture et l'architecture 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

• Aujourd'hui, après 2 ans de développement (équipe de 6 à 8 personnes), ce choix s'avère plus que jamais pertinent

• On estime à +100% la productivité générée par ce choix technique

• Dans l'équipe, aucun développeur n'est un gourou de JavaScript et ne souhaite le devenir, on aime Java !

8

Page 9: Session GWT Devoxx France 2012 Cobra

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

Page 10: Session GWT Devoxx France 2012 Cobra

Gestion de projet en mode agile

• Des itérations relativement courtes de 3 semaines

• Un outillage SCRUM complet :

JIRA, FishEye, SVN

Jenkins (intégration continue)

Confluence & Google docs (documentation & tests)

QA Director (tests fonctionnels)

10

JIRA

FishEye

Transparence => Confiance

Page 11: Session GWT Devoxx France 2012 Cobra

Défi technique principal : le push

• L'application nécessitait de pouvoir recevoir une centaine d'évènements par seconde

• Notre choix s'est 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 l'Open 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 aujourd'hui 25 appels par seconde et des centaines d'évènements par seconde (possible de faire mieux!)

11

Page 12: Session GWT Devoxx France 2012 Cobra

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 d'appeler des services .NET : nous avons opté pour COM (Component Object Model)

• L'outil Java/COM retenu initialement, Comfyj de Teamdev, s'est 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

12

Outils clés : DebugDiag, WinDebug, ProcExp

Page 13: Session GWT Devoxx France 2012 Cobra

Fragmentation du code JS• L'application 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 l'utilisateur sollicite la fonctionnalité en question (à la manière d'un ClassLoader Java)

• Le FrontEnd et le BackEnd ont été "codesplittés", ce qui a réduit considérablement le temps de chargement de l'application

Un opérateur (non admin) ne charge ainsi à aucun moment le JavaScript de l'application de BackEnd

13

Page 14: Session GWT Devoxx France 2012 Cobra

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 (lorsqu'un 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

Page 15: Session GWT Devoxx France 2012 Cobra

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 d'application où l'interaction avec l'utilisateur est primordiale

• Nous avons donc bâti un environnement de tests fonctionnels basé sur l'outil Selenium simulant des opérateurs de type "robots"

• Un robot "client" entre en conférence puis est intercepté par un robot "opérateur" qui l'assiste, un robot agit à une vitesse qu'aucun humain n'est capable d'assurer manuellement avec un navigateur

• Nous avons également utilisé ces robots pour nos benchs

• Un humain peut se tromper en testant, pas un robot

15

Page 16: Session GWT Devoxx France 2012 Cobra

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" l'application 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 d'un 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

Page 17: Session GWT Devoxx France 2012 Cobra

Monitoring & DevOps• Assuré par l'outil OpenSource JavaMelody

(http://code.google.com/p/javamelody/)

• Simple et peu intrusif mais surtout gère des indicateurs GWT (temps d'appels des services RPC)

• Nous avons dû là encore le patcher pour le rendre compatible Jboss 7 (encore merci à l'Open Source!)

17

Page 18: Session GWT Devoxx France 2012 Cobra

Et voilà, des questions ?

18


Recommended