Le 12 Juin Oracle a officiellement lancé sa nouvelle version JEE qui, comme à l'accoutumée est accompagnée de son implémentation de référence à travers le serveur d’application GlassFish 4. La plate-forme de Cloud pour application Java Cloudbees propose d’ores et déjà de pouvoir déployer ses applications JEE 7 via un ClickStart GlassFish 4. La société est la première à offrir une solution JEE avec la dernière version du serveur dans l’écosystème Cloud. InfoQ a rencontré Cyrille Le Clerc, "Solution Architect" chez CloudBees pour en discuter.
InfoQ : Même si la logique et l'architecture globale des serveurs d'applications est commune, les montées de version majeures peuvent souvent poser problème. Est-ce que l'intégration de cette nouvelle mouture a été complexe ?
Notre plus gros effort a porté sur la facilité d’utilisation de GlassFish sur notre plate-forme. Une caractéristique du Cloud Platform as a Service (PaaS) est la dimension self-service, et la simplicité d’utilisation. Cela nécessite de gérer “en coulisses” la complexité du middleware et d’exposer des fonctionnalités simplifiées et très intuitives aux utilisateurs. Le travail sur les messages d’erreur a aussi été important et nous améliorons cet aspect régulièrement en fonction des retours utilisateurs.
Pour les connaisseurs de GlassFish, nous avons été confrontés à un dilemme sur la méthode de configuration de GlassFish pour déclarer les Data Sources et la “JaaS Authentication”. Devions-nous utiliser l’API d’administration “asadmin” ou entrer à un niveau plus bas ? “asadmin” nécessite que le runtime GlassFish soit démarré et écoute sur son port d’administration. Comme nous ne voulions pas démarrer ce port d’administration, nous avons décidé d’écarter “asadmin” et de générer nous-même le fichier de configuration domain.xml quite à investir du temps pour bien maîtriser ce fichier.
Enfin, un dernier effort, important, a porté sur le monitoring. La nouvelle version du monitoring des stacks Java de CloudBees repose sur JMX et la librairie Open Source “jmxtrans agent”. L’intégration de GlassFish et de son Appserver Management EXtensions (AMX) a nécessité d’entrer dans le code source du serveur et nous échangeons encore avec l’équipe de développement GlassFish sur le sujet.
InfoQ : JEE 7 propose un ensemble de nouvelles fonctionnalités et notamment les WebSockets. Toutes les nouvelles fonctionnalités JEE sont-elles accessibles ?
Toutes les fonctionnalités de Java EE 7 Web Profile sont disponibles, y compris les Web Sockets ; nous utilisons un serveur GlassFish 4 Web Profile standard et nos load balancers NGinx supportent depuis longtemps Web Socket. J'ai en tête deux limites actuelles de notre stack :
- La JaaS Authentication est seulement activable avec un "Jdbc Realm", nous ne supportons pas encore d'autre backend comme LDAP ou un fichier.
- Les timers EJB ne sont pas encore configurés en singleton de cluster et ne sont pas transactionnels XA. Je ne suis même pas sûr que ces exigences s'appliquent à JavaEE 7 Web Profile ou si seul Java EE 7 Full Platform est concerné.
Au delà du support des fonctionnalités de Java EE Web Profile, la version Full Platform est un cas très différent car le serveur assure alors l'intégrité de données (JMS embarqué et moniteur de transactions distribuées JTA/JTS).
Nous en discutons beaucoup avec nos utilisateurs. L'ajout dans le Web Profile EE 7 des EJB timers non persistants et de JAX-RS répond aux besoins de beaucoup de personnes qui nous demandaient jusqu’alors EE6 Full Platform.
InfoQ : Ces limitations sont-elles vraiment un frein ou bien existe-t-il des solutions de contournement ?
Concernant JMS, l’approche Cloud est de privilégier des brokers de messages centraux plutôt que des versions embarquées dans les serveurs d’application. Nos clients sont très ouverts à l’utilisation du service de notre partenaire CloudAMQP (RabbitMQ sur le Cloud) ou aux services Simple Queue Service et Simple Notification Service d’Amazon AWS.
Ensuite, pour le moniteur de transactions distribuées JTS/JTA, les architectures récentes ont tendance à s’en passer et à fonctionner différemment, nous avons peu de demandes.
Et enfin, pour RMI et les Remote EJBs, ces protocoles de RPC sont en perte de vitesse au profit des architecture REST et à des protocoles sur HTTP avec des formats comme Google Protocol Buffers.
Nous avons tout de même des utilisateurs qui demandent Java Full Platform, principalement dans le monde de l’éducation, et nous prévoyons de proposer GlassFish 4 Full Platform sur le mode "community stack". Un mode sur lequel nous ne prenons pas d'engagement production.
InfoQ : La mise en place d’un nouveau serveur d’application est une opération complexe. Comment avez-vous procédé pour assurer la qualité de l’intégration ?
Nous avons la chance d'être beaucoup entourés sur les sujets Java EE. D'une part, nos utilisateurs sont toujours disponibles et motivés pour participer à nos réflexions sur les fonctionnalités Java EE exposées. Nous procédons souvent avec un “Minimum Viable Product” que nous enrichissons par itération en fonction des retours utilisateurs. C’est comme cela que nous avons implémenté la JaaS Authentication de GlassFish.
D'autre part, nous travaillons des “Rockstars JavaEE” comme Antonio Goncalves et Arun Gupta pour vérifier le bon fonctionnement du plus grand nombre d'applications démo Java EE 7 sur notre plateforme. Cela nous permet "d’essuyer les plâtres" avant que nos utilisateurs commencent à adopter EE 7.
InfoQ : la dernière version de JEE propose les implémentations des JSR des WebSockets, la nouvelle version de JAX-RS, le traitement du JSON. Cet outillage qui est mis à disposition par les conteneurs est plutôt orienté Web. Penses-tu que ces intégrations dans le standard JEE vont permettre une plus large adoption des solutions Cloud ?
Je pense que ces innovations vont pour certaines favoriser l'adoption du Cloud et pour d'autres favoriser l'adoption de Java EE.
Les premiers moteurs d'adoption du Cloud sont la réactivité et l'innovation. Les WebSockets et GlassFish 4 chez CloudBees sont une bonne illustration : nous supportons les WebSockets depuis longtemps et nous proposons GlassFish 4 en "beta" dès le jour de sa sortie alors que dans les data centers "traditionnels", les équipes infrastructures ont souvent d'autres priorités et ces innovations mettront du temps à arriver. Cette capacité à innover du Cloud séduit les équipes projets qui sont chaque jour plus nombreuses à vouloir en profiter.
Et l'ajout des WebSockets et de la nouvelle version de JAX-RS à la version JEE va donner un coup d'accélérateur à l’adoption de cette stack.
InfoQ : la version 7 de JEE ne propose pas d'API particulière pour l'intégration avec les solutions Cloud. Travaillez-vous avec le JCP pour proposer des améliorations qui faciliteront les développements et les intégrations dans le futur ?
CloudBees est impliqué dans le JCP. Steve Harris, notre "SVP Products", est membre de l’Executive Committee et Spike Washburn, notre "VP Engineering", était membre de l'Expert Group de la JSR 342 - Java EE 7. Il est vrai que Java EE 7 n’a pas apporté toutes les avancées Cloud qui était initialement prévues. Nous espérons que Java EE 8 en apportera plus. On peut se demander si les Clouds Java étaient assez matures en 2012 pour être standardisés dans Java EE 7.
Finalement, Cyrille Le Clerc a confié à InfoQ que sans avoir des statistiques précises, ils observaient déjà qu’un grand nombre d’utilisateurs testaient la version 4 du serveur d’application.