jeudi 2 octobre 2014

JUG Montpellier sur Cassandra


Après la très bonne présentation sur Java 8 en juin par José Paumard, c'était la rentrée pour le JUG Montpellier avec Cassandra.

Nous avions pour présenter ce JUG Sylvain Lebresne de DataStax (la société qui est derrière Cassandra) et Alain Rodriguez de Teads qui gère cette solution depuis 3 ans avec des retours d'expérience très intéressantes.
                                                                                           
Cassandra est un base de données distribuée.
C'est un projet Apache depuis 5 ans qui s'est inspiré de Dynamo ou encore de BigTable pour le modèle de données.

Les grands intérêts de cette solution sont :
- la possibilité de réaliser un scaling horizontal des données sur des machines à faible coût. Le principe est de préférer avoir de nombreux serveurs avec un bon 
rapport prix / puissance qu'un gros serveur très cher. Sachant qu'il y a des exemples d'anneau comprenant 1000 serveurs en parallèle,
- la possibilité de gérer de très gros volume de données,
- la disponibilité : on peut atteindre les 100% de disponibilité (upgrade sans arrêt du serveur, tolérance aux pannes, ...) sans avoir une architecture hors de prix,
- un des principes de Cassandra est qu'il n'y a pas de serveur maître ou de hiérarchie de serveurs entraînant souvent des SPOF,
- le déploiement est possible assez facilement sur différentes régions géographiques,
- une haute performance notamment avec des écritures à faible coût.

Cela vient répondre aux limitations des bases relationnelles dans lesquelles il est difficile et très coûteux de scaler notamment liés aux limitations suivantes :
- les jointures ne permettent pas de bien scaler
- les contraintes ACID (très utiles pour les développeurs) ne permettent pas de bien scaler
- le design des bases relationnelles a été réalisé pour être mono-instance (cluster possible mais très coûteux et au final limité, le sharding des données est possible mais la gestion des pannes est délicate).

Le principe de la solution HD de Cassandra est que la réplication est réalisée de manière asynchrone sans maître.
Les données sont répliquées sur plusieurs serveurs (configuration possible du nombre de réplicas par le Replication Factor) garantissant ainsi un accès aux données même si un serveur est down (de manière voulu ou non).

Chaque donnée stockée possède un ID (hachage). Cet ID permet de localiser les données sur les différentes serveurs, chaque serveur gérant plusieurs plages de données connues par tous le serveurs.

Un des principes de Cassandra est de réaliser le travail pour faciliter la récupération des données à l'écriture, optimisant ainsi le travail de lecture "pré-maché".

La soirée c'est poursuivie sur la présentation de CQL (Cassandra Query Language) et du Java driver.
CQL est un sous ensemble de SQL pour la dé-normalisation des données adapté pour la distribution des données et le cluster.

Le Java Driver permet de se connecter vers un base Cassandra avec une gestion automatique et transparente des noeuds (load balacing et fail-over automatique).


Et enfin quelques conseils utiles pour finir la soirée :
- monitorer les logs, l'état up/down des serveurs, la latence du cluster, le heap du GC, l’espace disque disponible, ...
- toujours avoir de la marge sur les serveurs et ne pas attendre qu'il n'y ait plus de ressources pour ajouter un nouveau serveur car cela serait contre productif à cause de la surcharge liée à l'ajout d'un nouveau serveur sur l'anneau (copie des données sur le nouveau serveur)
- réaliser les opérations de maintenance lorsque la charge est faible
- tester les upgrade avant et ne pas faire d'upgrade si l'anneau est instable
- regarder les anti-patterns : http://www.datastax.com/documentation/cassandra/1.2/cassandra/architecture/architecturePlanningAntiPatterns_c.html 


Donc voilà encore un soirée du JUG très instructive ...

lundi 24 février 2014

Dart Flight School

Après de très bonnes présentation lors des derniers JUG à Montpellier

  • AngularJS la plateforme Javascript de Google, 
  • Vert.X une nouvelle plateforme événementiel pour la JVM accès sur la performance et la montée en charge 
  • Neo4J qui nous a permis de comprendre tout l'intérêt des bases de données de graphe

Retour sur le dernier JUG Montpellier, où cette fois-ci c'est une mini-présentation de DART et surtout un codelab pour faire nos premières armes en DART.




A l'occasion de la sortie de Dart 1.0, Google organise dans le monde entier le "Dart Flight School" durant le mois de Février et permet ainsi sous forme d'atelier de découvrir ce langage.

Dart est un langage orienté objet, optionnellement typé et vise à concurrencer Javascript dans nos navigateurs.
Dart peut être compilé en Javascript ou s'exécuter nativement dans une version modifiée de Chomium. (Dartium) ayant une Machine Virtuelle Dart.
Dart peut aussi s'exécuter côté serveur.

Ce codelab par la réalisation d'une petite application de gestion de films nous a permis de comprendre les bases de Dart et de voir la syntaxe qui peut être assez puissante (et se rapprocher de Scala) et compacte (mais attention à la lisibilité alors).



En tout cas félicitation à l'équipe du JUG Montpellier pour ce superbe travail de préparation. La salle était pleine ce qui montre l'engouement suscité par ce langage.

La question que je me pose maintenant : faut-il se mettre à AngularJS ou à AngularDart ? De toute façon les concepts sont proches ...


jeudi 7 février 2013

Retour sur la soirée du JUG Montpellier : Performance JEE


Pour résumer la soirée, Claude Falguière est une architecte technique spécialisée sur les problématiques de performances des applications.

Elle a commencé à présenter les Duchess France.
J'ai bien aimé lorsque elle a parlé des interactions humaines au sein d'une équipe d'un projet informatique très souvent constitué que de mecs et notamment comment l'arrivée d'un élément féminin en changeant les rapports.

La présentation sur les performances a suivi avec les classiques sujets de l'expérience utilisateur, de capacité, de disponibilité, de fuites, de lock, ...

J'ai trouvé intéressant la présentation de l'utilisation des outils comme l'analyse statique de code, l'analyse de requêtes par les outils des navigateurs, le profiling du code java ou de la mémoire. Donc quelques pistes supplémentaires pour mes prochains tests de performances.

Un exemple de test de performance a suivi avec l'utilisation avancée du classique Jmeter.
Enfin pour conclure cette longue soirée, les derniers conseils et notamment la lecture du blog de Kirk Perrerdine spécialiste reconnu de la performance java.


La présentation est disponible sur slideshare Performances Montpellier.





Liferay ouvre un nouveau bureau en France


L'ouverture du bureau Liferay à Paris en ce début février 2013 vient répondre à la demande des entreprises qui investissent dans la technologie de portail open source Liferay.

Liferay France montre la volonté de l'engagement de la société Liferay à investir durablement sur la relation client du marché Français et Européen, et ainsi de soutenir les initiatives stratégiques de leurs clients.

Franck Verbeke est le nouveau manager de la nouvelle filiale Liferay France qui a pour objectif  de développer l'utilisation des solutions Liferay sur le marché français.
Il possède plusieurs années d'expériences sur les opérations de démarrage et d'expansion d'entreprises de logiciels et de haute technologie en France et d'autres parties de l'Europe.  

Plus d'informations sur l'ouverture : PRESS RELEASE: Liferay Announces New Office in France

mercredi 18 juillet 2012

Les missions de formations nécessitent parfois de long déplacements ...


Il faut parfois se déplacer à l'autre bout du monde pour répondre aux besoins de formations de ses clients. En effet, après 3 semaines de formations sur Java and co, c'est en direct de Nouméa en Nouvelle Calédonie  que je vous donne un petit aperçu du rude hiver local ...


mercredi 4 juillet 2012

Atelier RIA : “Développement d’applications RIA avec le Google Web Toolkit”


Ce mercredi 27 Juin, Oxiane Méditerranée a réalisé une présentation de GWT en partenariat avec la CCI de Montpellier et NOVAE LR
NOVAE LR est une association pour le développement des TIC en Languedoc Roussillon.

Le but de cet atelier était de présenter l'approche RIA proposée par Google avec son toolkit pour le web. La grande force de GWT est de développer en Java des composants Javascript permettant une ergonomie riche des applications web.

Cette approche apporte de nombreux avantages : utilisation des outils de la plateforme Java, une optimisation poussée du Javascript, la performance et la scalabilité, une facilité d'apprentissage du framework et une productivité importante des développements.

Différents sujets ont pu être abordés avec notamment un panorama des outils intéressants de GWT : UIBinder, GWT Designer, Speed Tracer ou les nombreuses bibliothèques ... et la présentation de quelques notions avancées de GWT comme le code splitting, les modes d'échanges vers la partie serveur ou encore la gestion native de Javascript par JSNI.

mercredi 13 juin 2012

Paris JUG consacré aux serveurs d'applications


La soirée du 12 juin 2012 du Paris JUG était consacrée aux serveurs d'applications, et plus particulièrement à WebSphere 8.5, Resin et TomEE.

Pour une fois la salle, bien remplie, n'était pas complète, est-ce que la problématique des serveurs d'applications intéresse moins le public du JUG essentiellement constituée de développeurs ?
C’est bien dommage de ne pas vouloir mieux connaitre un outil que l’on utilise tous les jours et qui est essentiel pour les performances des applications.

Une première présentation d'introduction par Antonio Goncalves :

  • Rappel sur ce qu'est un serveur d'application, il y a encore beaucoup de gens qui n'ont pas compris ce qu’est un serveur d’application et son intérêt. En résumé c'est un moteur d'exécution des applications java (conteneur servlet/JSP +  conteneur  EJB) et des SERVICES : Pool de connexions, sécurité, transactions, load-balancing, fail-over, ...),
  • Un petit topo sur le marché des serveurs d'applications : 3 milliards de $ en 2012, et de 5 milliards de $ en 2015 d'où une certaine concurrence, 
  • Les facteurs de différenciation (démarrage, administration, add ons et clustering) 
  • Et aussi un petit slide du Gartner qui positionne WebLogic comme étant le meilleur serveur d'application (pour ceux qui en douteraient mais bon on va ranger de côté les armes pour cette session).


Un petit retour sur le temps de démarrage des serveurs d'applications qui ont tous fait un vrai effort lorsque l'on voit l'exemple de JBoss 5 qui démarrait en 1 minute et Jboss 7 en 5s, il n'y a pas photo.
Il faut aussi reconnaitre qu'avec les notions de profils JEE (Web, Full), les serveurs d'applications ne démarrent pas forcément tout d'où les gains de temps et comme on a rarement besoin de tout c'est un gain intelligent.
Et d'ailleurs, ce critère de différenciation qu'est le démarrage n'en est plus un, vu qu'ils peuvent démarrer en quelques secondes. D'ailleurs je me pose la question maintenant de savoir ce que veut dire maintenant démarrer pour un serveur d'application à part l'affichage du mot clé "STARTED" ? Qu’est ce qui est vraiment chargé ? Est-ce qu'il y a du LAZY Loading des services ?  …
                     

                                                                                              
La présentation sur WAS était particulièrement intéressante et édifiante, et bravo quand même pour le consultant IBM pour sa franchise notamment sur le petit sondage live du début :

  • Combien de personnes utilisent WAS ?

50 personnes (sur environ 200 personnes dans la salle)

  • Qui aime ?

1 (tiens un gars d'IBM dans le public ?)

Et donc le constat est là, il n'y a pas vraiment de développeurs qui apprécient WebSpehre en développement et c'est bien ce qui a poussé IBM à "Essayer de regagner le cœur des développeurs".

WebSphere possède donc maintenant un Liberty profile, qui est une version de WebSphere allégé et dédié au développement mais différent du web profile (plus light encore)
Les avantages :

  • Léger : 40 mb à installer au lieu des 3 DVD habituels et de la journée d'installation du produit quand cela se passe bien,
  • Rapide : 5 s pour démarrer,
  • Simple : 1 fichier de configuration XML partageable et modulaire (fractionnement possible en plusieurs fichiers), Un-zip pour l'installation et de plus basé sur OSGI Equinoxe.


Quelques autres notions intéressantes :

  • Classloader privé pour résoudre les problèmes de jars communs entre WebSphere et l'application,
  • Shared Libraries pour partager des jars,

Des notions intéressantes mais qui ont été réalisées dans WebLogic 10 il y a déjà plus de 5 ans ...

Je ne suis pas fan de Websphere en développement (comme tout le monde sauf exception) mais j'ai trouvé qu’IBM a vraiment réalisé un vrai pas en avant vers les développeurs et l'on peut les saluer.
Après pourquoi seulement en 2012, l'inertie des grands navires informatiques ...
Pour finir la démo, ne marche pas ... comme quoi on ne veut quand même pas trop perturber les développeurs ;)



Après le JUG a continué sur une présentation de Resin par un utilisateur qui connait seulement depuis 1 mois mais qui a eu le courage de faire cette présentation
Petit sondage de début : qui a déjà utilisé Resin ? 5 personnes

Pourquoi alors Resin  est si peu connu alors que c'est un des plus vieux serveurs d'applications (1999,  la préhistoire du web) ?
Le constat :

  • Peu de documentations,
  • Licence obscur pendant longtemps,
  • Communication faible,
  • Et peu d'utilisateurs à part SalesForce.


Pourtant, c'est un des premiers serveurs d'applications Web Profile et il a une licence professionnelle pas trop cher (700$/ CPU) et quelques avantages intéressants :

  • Watchdog pour surveiller le serveur,
  • Implemtation CDI,
  • Cluster dynamique cloud ready,
  • Multi-tenancy.




Et enfin pour finir on a le droit à une présentation de TomEE
TomEE (sous projet d'Open EJB) est une surcouche à Tomcat pour atteindre le Web profile JEE6.

On peut citer notamment les modules présents dans cette implémentation :
Tomcat, OpenEJB, OpenJPA, OpenWebBean, MyFaces, Geronimo Transaction, ...
et pour une version un peu plus avancée (au delà du web profile) : ApacheMQ, et Apache CXF.

Quelques autres avantages sont présents dans TomEE:

  • Integration facile avec Eclipse, Maven, ...
  • Tourné vers cloud



Enfin pour conclure :
Les serveurs d'applications ont donc changés en prenant en compte maintenant les besoins de développeurs : le temps de démarrage, l'intégration des tests, ...
Et l'on voit aussi l'évolution majeure des serveurs d'applications qui se préparent à tourner sur le cloud.

Quel est l'avantage alors des serveurs d'applications payant ?
WLS, Jboss et WAS ont des tas de trucs en plus : administration plus poussée avec une vraie console, gestion avancée des multiples serveurs, premières briques SOA, messaging, ...

Quand je vois par exemple la configuration poussée que l'on peut avoir sur WebLogic seulement sur la problématique des Pools de connexions et les implémentations libres, il n'y a pas photo mais encore faut-il comprendre cette configuration, son intérêt et s'avoir s'en servir, l'expertise n'est pas morte ... et aussi bien sur ils sont Full profil JEE : EJB remote, Timer, Web Services, REST, ...