mardi 10 mai 2016

Liferay 7

Liferay 7 est sorti le mois dernier après de longs mois d'attente liés à des refontes majeures du produit, et de nombreuses évolutions fonctionnelles. Le travail réalisé est impressionnant et les perspectives liées à cette nouvelle version le sont toutes autant.



1. Refonte de son architecture technique
Liferay devient hautement modulaire en se basant sur une architecture OSGI.

Cette modularité devient le coeur de la stratégie de la plateforme Liferay permettant
- un core du produit Liferay beaucoup plus léger et plus stable dans le temps,
- les portlets de l'ancien core deviennent des modules indépendants permettant la désactivation du module, l'extension ou sa surcharge à chaud,
- des tests unitaires plus faciles,
- moins de configuration statique (xml)

Il est toujours possible d'exécuter les portlets sous forme de war comme avant pour garantir la compatibilité des anciens développements.

Liferay devient une plateforme de micro services indépendants, qui peuvent être réutilisés pour agréger et composer de nouveaux services.

Cette gestion modulaire se retrouve aussi côté front end avec une gestion dynamique du chargement des modules javascript.


2. Refonte ergonomique
Liferay7 apporte de nombreux changements de l’interface utilisateur avec une expérience utilisateur repensée en profondeur.

Liferay 7 utilise maintenant Bootstrap 3 et plusieurs frameworks Javascript/CSS (MetalJS, SennaJS, ...) pour fournir un nouveau design moderne épuré avec une approche Mobile first.

L'équipe UX de Liferay a défini une collection de pattern visuels et d’ergonomies basés sur Bootstrap nommé « Lexicon » pour faciliter l'extensibilité et la fluidité du design.


3. Edition de contenu
L’édition de contenu est réalisée maintenant avec Alloy Editor (projet www.alloyeditor.com) pour avoir une saisie intuitive plus proche du rendu final.
Les images peuvent être ajoutées par un simple glisser-déposer ou par le nouveau sélecteur d’image.
Les workflow peuvent être appliqués différement pour chaque dossier de contenu permettant ainsi une gestion de différents workflows pour les contenus web.
Les contenus et les documents peuvent être géolocalisés.
La possiblité de comparer visuellement les différentes versions d'un contenu.

4. Recherche
Elsatic search engine devient l’implémentation de référence avec la possibilité d'intégrer d'autres moteurs de recherche comme Solr ou SolrCloud.
De nouvelles fonctionnalités de recherche sont disponibles (de nouveaux filtres : Terms, prefix, exists, missing, QueryFilter, Geolocation, Query time et de nouvelles agrégations à des fins de statistiques).

5. Liferay IDE 3
Cette nouvelle version de l'IDE (qui est en fait plugin Eclipse) pour le développement Liferay apporte de nombreuses fonctionnalités supplémentaires :
La possibilité de créer des projets de modules OSGI 
Le support des serveurs Liferay de type Tomcat et Wildfly
L'utilisation de Gradle ou de Maven
Un outil de migration
A noter qu'il est nécessaire passer à java 8 pour que les fonctionnalités Liferay de l'IDE fonctionnent.

6. Autres améliorations
La gestion de formulaire dynamique a été améliorée (positionnement, multipage, ...).
Plus de template de sites par défaut (corporate site, product page, creative site, digital media site, ...)
L'héritage entre site va encore plus loin
De nouveaux applications display templates pour customiser les portlets naitves
L’intégration de Google Documents dans la gestion de documents
Liferay Screens qui permet d'incorporer des composants visuels appelés screenlets dans les applications natives Android ou IOs et qui appellent des services ou des contenus d'un portail Liferay
Liferay 7 permet de convertir les portlets en une Single Page Application améliorant ainsi les temps de réponses



Liferay 7 est devenu avec cette version une plateforme d'applications et de services dépassant le simple cadre du portail, ce qui va ouvrir Liferay a de nouveaux types de projets étendant encore plus les cas d'utilisations possibles.

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.