Optimisation d’un site web mobile

Publié le 3/09/2012, par Jean-Baptiste Cazaux dans Architecture, Mobile, Valtech | 6 Commentaires

J’ai récemment eu l’occasion de développer un site web mobile. Les devices visés (mobiles, tablettes) étant uniquement ceux de dernière génération, ça a laissé la place a pas mal d’astuces pour fluidifier la navigation même lorsque le débit du réseau n’était pas très élevé. Il est temps de faire un retour d’expérience, voici donc les quelques recettes que j’ai pu mettre en place mais aussi les problèmes rencontrés.

L’architecture

J’ai commencé par mettre en place une architecture qui me garantisse un premier affichage le plus rapidement possible une fois la requête lancée. Il faut comprendre cette architecture pour appréhender les points suivants.

Les templates

Le site permet de consulter des informations relatives à des agences bancaires. Le site est donc composé de plusieurs pages dont le contenu dépend évidement de l’URL: par exemple pour avoir les informations de l’agence de trifouilly-les-oies nous allons accéder à la page /agence/trifouilly-les-oies.html.
Lire la suite »


Séminaire NoSQL le 28 juin à Toulouse

Publié le 26/06/2012, par Olivier Rodrigues dans Architecture, Événements, Nosql, Valtech | Ajouter un commentaire

NoSQL, solution alternative ou complémentaire aux bases de données relationnelles traditionnelles ?

Ces nouvelles bases de données spécialisées comme MongoDB et Cassandra sont de très bonnes solutions. L’une est spécialisée pour la gestion des documents en base de données, l’autre pour la mise en place de gros référentiel de données (Big Data) en mode haute disponibilité. Les leaders du Web 2.0 comme Facebook, Twitter, Google se sont emparés de ces solutions très performantes de types NoSQL pour bâtir leur empire de données.

Au programme (13h30 – 17H00) :
  • Présentation générale des bases NoSQL
  • Présentation d’une base de données orientée document MongoDB
  • Présentation d’une base de données orientée colonne Cassandra
Inscription & Accès :
  • Lieu : FORUM, Chez AraPL MP, 13 avenue Jean Gonord-Parc d’activité de la Plaine, 31500 TOULOUSE (plan)
  • Date : 28 juin 2012
  • Horaire : 09:00 – 12:30
  • Inscription : via le site web

L’équipe de Valtech Toulouse sera heureuse de vous accueillir pour cette après-midi d’échanges.


Fréquence Valtech n°7 : Microsoft Azure

Publié le 15/06/2012, par Grégory Paul dans Architecture, Cloud Computing, Fréquence Valtech, Valtech | Ajouter un commentaire

Dans ce 7ème épisode du podcast Fréquence Valtech, Grégory interview Christophe Bonnevault au sujet d’Azure, le cloud de Microsoft.

Vous pouvez télécharger ce podcast au format ogg ou mp3 ou encore vous abonner via le flux rss dédié.

Voici les ressources évoquées pendant le podcast :

N’hésitez pas à nous faire part de vos retours par email à l’adresse <podcast-at-valtech.fr> ou alors via les commentaires ci-dessous.

Le thème musical provient de podcastthemes.


Nancy, un serveur web léger pour .Net

Publié le 14/06/2012, par Christophe Bonnevault dans Architecture, Valtech | Ajouter un commentaire

En tant que développeur .Net dans l’immense majorité des cas, lorsque nous avons un site web à développer, nous ne nous posons pas la question du choix du serveur applicatif : c’est tout naturellement vers IIS que nous allons nous tourner… restera juste à trancher entre le framework ASP.NET classique et le framework ASP.NET MVC.

Depuis maintenant plus de 10 ans que ASP.NET existe, avouons le, nous développeurs .Net, nous nous sommes largement laissés bercer par les améliorations continues apportées par Microsoft que ce soit au niveau du langage C# (4 version depuis 2002 où l’on a vu apparaître les types génériques, LINQ, les expressions lambda, le typage dynamique des variables, …) ou au niveau du framework ASP.NET (Master Pages, ASP.NET AJAX, ASP.NET MVC, …).

<troll>Pendant ces 10 années où nous, développeurs .Net étions satisfaits à 120% de nos outils et hyper productifs, d’autres développeurs étaient beaucoup moins satisfaits de leurs outils et en ont donc créés de nouveaux</troll>. C’est ainsi que l’on a vu apparaître de nombreux serveurs web légers comme lighttpd ou nginx qui permettent d’héberger des sites développés avec le framework Ruby On Rails par exemple. Des développeurs sont allés encore plus loin et ont créé Sinatra qui est un framework ruby minimaliste.

Un serveur web léger, oui mais pour quoi faire ?

Les disciples d’Aristote, me diront “qui peut le plus peut le moins” et tout ce qui peut être fait avec un serveur léger peut être fait avec IIS. C’est pas faux (comme le dirait Perceval), mais est-ce que dans certains cas on ne se sert pas d’un marteau pour écraser une mouche.

Imaginons par exemple que l’on veuille afficher les {x} derniers tweets de l’utilisateur {twittos} en utilisant l’url suivante : http://www.monsupersite.com/tweet/{twittos}/{x}

Si vous voulez faire ceci avec de l’ASP.NET “classique”, il va falloir créer une WebForm (page aspx pour laquelle vous n’aurez pas une maîtrise complète du html généré) qui prendra les paramètres {twittos} et {x} en GET ou en POST et ensuite créer un module http qui se chargera de faire le lien entre l’url demandée (à la mode REST) et votre WebForm. Au final, vous allez devoir travailler sur 4 fichiers (la vue et le Code-Behind de votre WebForm, le module http et le fichier de configuration de votre site web pour y déclarer le module).

Si vous voulez faire ceci avec de l’ASP.NET MVC, cela sera un peu plus simple (et surtout beaucoup plus propre), mais il vous faudra quand même créer un contrôleur, éventuellement un modèle (si vous voulez être très propre), une vue et ajouter une nouvelle route dans le fichier Global.asax.cs (la route qui existe par défaut étant /{controller}/{action}/{id}) soit entre 3 et 4 fichiers à manipuler.

Esssayons de voir si l’on ne peut pas faire la même chose mais d’une manière un peu plus legère. Nous allons pour cela utiliser Nancy qui est un framework léger très fortement inspiré de Sinatra. Dans notre démo nous allons auto-héberger Nancy dans une application console, mais sachez qu’il est tout à fait possible d’héberger ce que nous allons écrire dans IIS (pour les disciples d’Aristote très têtus).

#region Namespaces
using System;
using Nancy;
using Nancy.Hosting.Self;
#endregion
 
namespace NancyFirstDemo
{
    internal class Program
    {
        private static void Main()
        {
            var nancyHost = new NancyHost(new Uri("http://localhost:1234"));
            nancyHost.Start();
            Console.ReadLine();
            nancyHost.Stop();
        }
    }
 
    public class TweetModule : NancyModule
    {
        public TweetModule()
        {
            Get["/tweet/{twittos}/{x}"] = parameters => string.Format(
                "Ici on doit afficher les {0} derniers tweets de l'utilisateur {1}",
                parameters["x"],
                parameters["twittos"]);
        }
    }
}

Est-il nécessaire de devoir commenter ce code ? On voit qu’avec quelques lignes de code, il est possible d’instancier un serveur web et faire en sorte qu’il réponde correctement à une certaine catégorie d’urls. Pour ce qui veulent aller plus loin, il n’est pas bien compliqué d’enrichir le module pour qu’il fonctionne avec autre chose que du GET, et de renvoyer autre chose que du html (un fichier ou du json par exemple).

Le domaine des serveurs légers est actuellement en pleine ébullition dans le monde .Net tant au niveau des Hosts (Kayak, Gate,…) que des Frameworks (Nancy, SignalR). Ces outils ont l’avantage par rapport à d’autres d’être compatibles avec OWIN (Open Web Interface for .Net) qui est une spécification qui a pour but de définir des interfaces entre les différentes briques qui composent un serveur web. Je vous conseille de lire un billet publié par Louis DeJardin pour en savoir plus sur le sujet.


Devoxx France 2012, Valtech y sera et vous ?

Publié le 16/04/2012, par Amira Lakhal dans Agile, Architecture, Événements, Cloud Computing, Java, Mobile, Valtech | Ajouter un commentaire

Valtech

 

Dans quelques jours aura lieu la première édition de Devoxx France, la déclinaison francophone d’une des plus grande conférence pour les développeurs en Europe.

Elle est organisée par des développeurs indépendants et se déroulera à Paris du 18 au 20 Avril.

 

 

Plusieurs thèmes y seront évoqués

  • Web, Mobile et le Cloud,
  • Langages alternatifs sur la JVM
  • Entreprise et pratiques
  • Java, Java EE et Architecture

Le groupe Valtech, partenaire de cet événement, sera présent lors des 3 jours. Les consultants Valtech seront eux aussi présents et certains animeront même des présentations. Vous aurez l’occasion de connaître Incanter, une librairie de statistiques écrite en Clojure qui sera présenté par Claude Falguière ou de replonger dans le monde de la recherche d’information avec Majirus Fansi qui vous fera découvrir l’univers d’Apache Lucene et bien d’autres nouveautés.

Pourquoi l’équipe Valtech sera présente ?

  • Découvrir des nouveautés techniques“, Grégory, Développeur, Valtech
  • Participer à des ateliers et tester directement sur ma machine“, Frédéric, Développeur, Valtech
  • Échanger avec d’autres développeurs et partager mes connaissances“, Claude, Consultante senior, Valtech
  • Assister à Devoxx sans avoir à voyager dans un autre pays, c’est à ne pas rater“, Etienne, Scrum Master, Valtech.

Vous souhaitez partager, échanger et vous amuser…

Venez rencontrer l’équipe sur le stand Valtech !


Petit déjeuner sur le “Cloud Computing” le 22 mars à Toulouse

Publié le 9/03/2012, par Olivier Rodrigues dans Architecture, Événements, Cloud Computing, Valtech | Ajouter un commentaire


Après le mainframe, le réseau, l’ordinateur personnel ou Internet, le cloud computing s’impose depuis plusieurs années comme la nouvelle avancée technologique dans le domaine de l’informatique d’entreprise. Comme toute évolution majeure, cela entraine une mutation des habitudes, autant pour l’exploitant que pour le développeur.

A l’occasion d’un petit déjeuner à Toulouse le 22 mars, Valtech vous propose d’assister au déploiement d’une application réelle dans le cloud, public ou hybride, ou d’avoir un aperçu des possibilités offertes par le cloud dans le cadre d’un projet informatique.

Au programme (9h00 – 11h30) :

Inscription & Accès :

  • Lieu : Valtech Training, Immeuble Tersud – Bâtiment A, 5, avenue Marcel Dassault, 31500 Toulouse (Plan)
  • Date : 22 mars 2012
  • Horaire : 09:00 – 11:30
  • Inscription : via le site web

 

L’équipe technique de Valtech sera heureuse de vous accueillir pour cette matinée d’échanges.


3ème épisode du podcast Fréquence Valtech : Cloud Computing

Publié le 15/02/2012, par Grégory Paul dans Architecture, Cloud Computing, Fréquence Valtech, Valtech | Ajouter un commentaire

Dans ce 3ème épisode, Grégory Paul interviewe Pierre Chaussalet sur le sujet du Cloud Computing.

Dans cet échange, Pierre présente les 3 approches du Cloud Computing (IaaS, PaaS et SaaS) et explique leurs différences ainsi que leurs avantages et inconvénients.

Vous pouvez télécharger ce podcast au format ogg ou mp3 ou encore vous abonner via le flux rss dédié.

Voici quelques resources évoquées pendant le podcast :

J’en profite également pour rappeler le petit déjeuner sur le “Cloud Computing” animé par Pierre Chaussalet et Herve Desaunois ce 16 février à Valtech Paris et rebondir sur la dernière édition de la Gazette du Cloud.

N’hésitez pas à nous faire part de vos retours par email à l’adresse <podcast-at-valtech.fr> ou alors via les commentaires ci-dessous.

Le thème musical provient de podcastthemes.


Rencontre Alt.Net – Présentation Git

Publié le 9/12/2011, par Olivier Rodrigues dans Architecture, Événements, Valtech | Ajouter un commentaire

La prochaine rencontre ALT.Net aura lieu le mercredi 14 décembre à partir de 18h30 dans les locaux de Valtech. Après une session forte intéressante sur Roslyn présentée par Jean Baptiste Evain, la prochaine présentation portera sur Git avec Sébastien Douche.

 

Git, c’est quoi ?

Git est un système de contrôle de sources distribué. Le contrôleur de source étant un des outils que le développeur utilise le plus dans son quotidien, son choix semble primordiale, car, sur des tâches répétitives (commit, merge, branche…), le gain en productivité peut être énorme. Git est un outil très puissant permettant de faciliter le travail des équipes décentralisés, l’utilisation des branches…

Alors si DVCS ne vous dis rien, si vous voulez découvrir Git, ou encore améliorer votre compréhension et utilisation de cet outil, nous vous donnons rendez-vous à Alt.net pour assister à la présentation d’un spécialiste du sujet en décembre et d’un workshop en janvier.

Venez améliorer vos connaissances !

Inscription & Accès :

  • Lieu : 103 rue de Grenelle, 75007 Paris (Plan)
  • Date : 14 décembre
  • Horaire : 18:30 – 21:30
  • Inscription : via eventbrite
  • Plus d’informations : Alt.Net

 


Rencontre Devops le 15 Juin

Publié le 14/06/2011, par Claude Falguiere dans Agile, Architecture, Événements, Valtech | 1 Commentaire
Parisdevops

Mercredi 15 Juin, Valtech accueillera le User Group DevOps dans l’auditorium du 103 rue de Grenelle à Paris.

Cette 5ème soirée du User Group sera animée par Cyrille Le Clerc qui nous parlera de JMX et de Feature Toggle Pattern.

DevOps

Mais qu’est ce que DevOps ?  C’est un mouvement émergeant qui vise à rapprocher les équipes de développement et les opérations (la production en français) pour mieux résoudre les problèmes de déploiement et de suivi de production.

La démarche part de quelques constats : la siloïsation de l’informatique qui empêche toute synergie, les problèmes de déploiement, le phénomène « It works on my computer !« , la peur du changement qui bloque toute démarche de part et d’autre.

La solution passe par une collaboration, les échanges de point de vue autour d’une pizza, l’intégration des ops dans les projets, la montée en compétence des Ops sur le Dev et des Devs sur les Ops et au final une meilleure compréhension des contraintes des uns et des autres.

D’une certaine manière, c’est la continuité de la démarche Agile. Une application développée, mais qu’on arrive pas à déployer, n’apporte aucun service aux utilisateurs. Il faut donc travailler ensemble, Dev et Ops pour régler les problèmes.

Ces rencontres autour de sujets frontières sont une manière de rapprocher les équipes.

Pen

JMX

La première partie de la soirée sera consacrée à JMX.

JMX (Java Management Extension) est une API Java qui permet de gérer le serveur d’applications ou les applications Java à distance. Elle est fonctionnellement équivalente à LDAP.

Les MBeans JMX embarqués dans le serveur permettent de relever des valeurs via des sondes, de modifier des paramétrage ou d’invoquer à distance des opérations telles que le démarrage ou l’arrêt de services. Il possède également des fonctions de notification d’alertes.

JMX n’est ni vraiment dans la culture des Ops (c’est du Java et donc pas si simple à intégrer dans leurs outils préférés) ni des Devs qui pensent rarement à y faire appel pour faire des capteurs et interfaces de configuration du système qu’ils fabriquent. Et pourtant, c’est un outil puissant pour communiquer avec les outils de surveillance et d’alerte de manière standard.

Cyrille présentera JMX puis nous montrera comment manipuler JMX via du scripting en Groovy et l’intégrer JMX dans des outils de surveillance ou des grapheurs (Hypéric HQ, Graphite).

Pen

Feature Toggle Pattern

La seconde partie de la soirée sera consacrée au Feature Toggle Pattern.

Le Feature Toggle est une technique qui permet d’activer/désactiver des fonctionnalités présentes dans une application. L’application peut contenir plusieurs versions d’une fonctionnalité, soit parce qu’elle a évoluée, soit parce qu’on veut mettre en place des implémentations différentes.

Les motivations sont souvent liées au test, soit pour faire des tests comparatifs (A/B testing par exemple), soit pour tester sur un échantillon avant un déploiement plus large (dans un cadre de déploiement continu par exemple).
Les fonctionnalités alternatives seront activées sélectivement en fonction des instances du serveur.

Cyrille nous montrera comment l’implémenter dans l’application et comment le contrôler à distance via JMX.

Pen

S’inscrire

Nous vous attendons nombreux pour cette soirée.

Pour vous inscrire : paris-devops-meetup-5

Retrouver également les activités et actualités du User Group DevOps sur son site parisdevops.frTwitter et Google Group.

Crédit des images

http://www.flickr.com/photos/emaringolo/1404829642/

http://www.flickr.com/photos/roadsideguitars/3210448415/

http://www.flickr.com/photos/vignetfishnet/5716635630/


What’s Next Paris, Jour 2

Publié le 6/06/2011, par Jean-Baptiste Cazaux dans Architecture, Événements, Valtech | Comments Off

JAVA

La seconde journée a commencé par une keynote de Neal Gafter qui travaille désormais chez Microsoft sur les langages de la plateforme .NET, après être passé chez SUN où il a participé au design et l’implémentation de Java puis chez Google. Sa session était en partie consacrée à retracer l’historique du langage. Il commence par rappeler que Java a été créé pour pouvoir gérer le multihreading, qui selon lui va devenir de plus en plus important dans les années à venir.

L’historique

  • Ainsi on remonte jusqu’en 1996 et la parution du JDK 1.0. Dès l’année suivante, c’est le JDK 1.1 qui apparait. Ce sera la version de java la plus déployée, grâce notamment aux navigateurs web qui l’embarquent. C’est l’apparition des inner class, de l’interface de marquage Serializable, de JDBC, de RMI, et de la reflection. La base de java est là !
  • En 1998, c’est le JDK 1.2 qui sort, avec Swing, les collections, le JIT (runtime compiler), et la version ‘professionelle’ de java, l’ancêtre de JEE.  La conférence JavaOne réunit 14 000 personnes pour sa 3ème édition puis 20 000 un an après.
  • En 1999 c’est aussi les JSR qui apparaissent avec notamment celle sur les Generics. J2ME sort ainsi que Java Professionnal Edition 1.2.
  • En 2000, on voit apparaître J2SE 1.3, la fameuse API de debugging JPDA, les Dynamic Proxy et JNDI. 25 000 personnes se retrouveront pour la JavaOne.
  • En 2001 c’est la sortie de J2EE 1.3 et la fin du procès entre Sun et Microsoft.
  • En 2002, c’est J2SE 1.4 avec les assertions, le chainage d’exceptions , les I/O non bloquants et puis les API pour le XML, la sécurité et cryptographie, les logs et les regexp. C’est aussi la naissance de C# avec sa version 1. 14 000 personnes participent à JavaOne.
  • 2003 est l’année de J2EE 1.4. La baisse de fréquentation de JavaOne continue mais avec tout de même 12 000 participants.
  • 2004: C’est J2SE 5 avec les Generics, les annotations, les enums, foreach, le boxing/autoboxing, les varargs. 14 000 personnes à JavaOne.
  • 2005 restera une année plus creuse pour java,  15 000 participants se retrouvent tout de même à JavaOne. De son coté, C# 2 inclus les generics et les closures.
  • 2006: J2SE 6 avec les nombres à virgule flottante hexa décimaux (ah ?), l’API de scripting, les annotation processing, les stackmaps et aussi une amélioration des performances. C’est aussi JEE 5 et le lancement de l’openJDK. 13 personnes à JavaOne. En 2007 JavaFxScript est rendu open source, C# 3 sort mais pas de changement de Java.
  • 2008 : 15 000 personnes à la JavaOne, JavaFX 1.0 sort mais toujours pas de changements du langage.
  • 2009: Toujours autant de participants à JavaOne, JEE 6 sort mais toujours rien pour Java.
  • En 2010 Oracle rachète SUN, JavaOne est fait en même temps que OracleOW, JavaFXScript est arrété et Java n’évolue plus. IBM adopte l’OpenJDK plutot qu’Apache Harmony et Oracle parle enfin de J2SE 7 et 8. Oracle poursuit Google en justice pour violation de copyrights et vol de brevets sur android (basé sur Apache/Harmony).
  • En 2011 nous verrons J2SE 7 avec les switch sur les String, le type inference, le multicatch (sans violence), try-with-resource, encore un nouveau système d’I/O, et fork-join concurrency. JavaOne et OracleOW sont de nouveau séparés.

try-with-resources

try (FileReader fr = new FileReader("App.java");
  BufferedReader br = new BufferedReader(fr)){
 
  String line = null;
  while (line = br.readLine() != null){
    System.out.println("&gt;&gt;" + line);
  }
} catch (IOException ioEx){
  ioEx.printStackTrace();
}

Multicatch

try {
  Class c = Example.class;
  Field f = c.getDeclaredField("field");
  f.set(null, "12");
} catch (NoSuchFieldException|IllegallAccessException x){
  x.printStackTrace();
}

Type Inference

Map<string, list<integer="">&gt; map = new Hashmap&lt;&gt;();
</string,>
  • En 2012 nous aurons le droit à J2SE 8 avec les expressions lambda, les “virtual interface extension methods”, “bulk data operation”, et peut-être les annotations sur les types, la modularisation…

En conclusion

Neal conclue par les priorités d’Oracle qui seraient la facilité d’écriture de code, sa lisibilité, et puis les performances notamment avec le support des processeurs multi-core. Enfin pour Neal, c’est une bonne chose qu’Oracle soit “aux commandes” de java qui avait besoin de çà pour avancer, et surtout avancer dans la bonne direction. Il regrette tout de même le procès à Google qui a pour effet de diviser la communauté Java.

Bonus

Au milieu de sa présentation Neal Gafter avait proposé 2 puzzles. Le second avait déja été exposé par Joshua Bloch (co-auteur du livre java puzzles)  aux Devoxx 2010 mais pour ceux qui le découvriraient cela vaut le détour:
No Pain, No Gain:

public class Rhymes{
  private static Random rnd = new Random();
  public static void main(String[] args){
    StringBuffer word = null;
    switch(rnd.nextInt(2)){
      case 1: &nbsp;word = new StringBuffer('P');
      case 2: &nbsp;word = new StringBuffer('G');
      default:&nbsp;word = new StringBuffer('M');
    }
    word.append('a');
    word.append('i');
    word.append('n');
    System.out.println(word);
  }
}
  1. Pain, Gain ou Main (de façon aléatoire)
  2. Pain ou Main (de façon aléatoire)
  3. Main (toujours)
  4. Autre chose

J’éditerai la réponse dans quelques jours :) (allez quand même 1 indice: il y a 3 erreurs différentes dans ce code)

It’s elementary (le plus dur):

public class Elementary {
  public static void main(String[] args) {
    System.out.println(12345 + 5432l);
  }
}

Quel est le résultat ?

  1. 66666
  2. 17777
  3. Autre chose

Indice: Mais que fait la police ?

Microsoft Azure For Java


Une fois sa présentation terminée, Neal a fait intervenir un de ses collègues de chez Microsoft France pour promouvoir le cloud de Microsoft qui supporte le langage Java. La session était articulée autour d’une démonstration du produit et d’un discours qui cherchait à séduire l’assistance manifestement adepte de Java.
Clairement positionné en concurrent d’Amazon et GoogleApp Engine, la plate-forme propose une interface pour déployer sur le cloud avec Eclipse, Visual Studio et en ligne de commande grâce à un starter kit.

Microsoft Azure For Java permet de gérer le front-end et le back-end en proposant entre autre une base SQL, NOSQL, du file storage, …
Les drivers JDBC sont implémentés et Hibernate fonctionne. On peut également choisir la JRE de son choix et son serveur d’application. Il y a un starter kit avec Tomcat.

RabbitMQ

RabbitMQ est un système de messaging open source entre applications. Ses principaux atouts sont l’implémentation AMQP, un standard open source pour le messaging, le support de nombreux langages et sa “scalabilité”.
Rob Harrop, développeur senior sur le projet, insiste tout d’abord sur la profonde différence entre AMQP et JMS: “Forget what you know !”.

Après avoir lancer RabbitMQ sur son poste, il commence par présenter l’interface de gestion web. On y retrouve également différentes statistiques sur les messages qui transitent.
Rob expose ensuite les 2 concepts de base de RabbitMQ: les “queues” et “exchanges”.
Les messages sur les queues peuvent transiter sous forme de String, XML, JSON, …

Puis nous avons le droit à une longe démonstration de la plate-forme de messagerie avec des l’envoie et la réception de message depuis plusieurs applicatifs écrits dans des langages différents et avec différents protocoles. Rien de moins que Java, Python, Erlang et JavaScript (avec NodeJS) pour les langages et AMQP et STOMP pour les protocoles.

Architectures découplées

Theo Schlossnagl est le fondateur de plusieurs sociétés de conseil, il est également auteur du livre Scalable Internet Architectures et participe à un nombre impressionnant de projets open source, dont nodejs sur lequel il développe l’implémentation AMQP.
S’il ne fallait retenir qu’une seule session de ces deux jours, ce serait sans aucun doute celle là. Le charisme du personnage et son discours bien trempé ont permis de remettre quelques idées à plat.

Loin d’être sceptique sur les architectures décentralisées dans le cloud, il souligne quelques points. En effet le cloud ne résous pas tous les problèmes. Ainsi toutes les entreprises ne souhaitent pas forcément faire sortir toues leurs données de leurs serveurs. Il nous met également en garde sur le fait que ce n’est pas parce qu’une application est déployée sur 100 serveurs que celle ci va savoir s’en servir pour améliorer ses performances.

Pour Theo, avant de penser à scaler en rajoutant une instance pour son application, il faut faire un travail de recensement des flux de l’application. D’après son expérience, rien n’est jamais comme on pense que c’est fait: une transaction en trop lors des écritures en base, des allers retours client/serveurs inutiles, … Bref il préconise la ‘data flow map’ basée sur la réalité et non sur le supposé.

Dans un deuxième temps il montre que l’expérience utilisateur sur une application influe directement sur l’architecture technique à mettre en place. Il rappelle que les systèmes finissent toujours par être en erreur à un moment ou à un autre et qu’il faut prévoir ces cas. Le cas le pire étant les systèmes qui ne répondent que de façon occasionnelle (un serveur complètement tombé peut être redémarré).
Dans une démonstration d’une application sociale qui récompenserait l’utilisateur pour une action sur le site, par exemple se logger, il montre l’importance de choisir son architecture de telle sorte que la main soit rendue à l’utilisateur dès lors qu’il est connecté. Cette stratégie est bien meilleure que d’attendre que le calcul de la récompense soit terminé, surtout si une panne ou une surcharge intervient sur le système responsable de ce calcul.
Pour la démonstration, il utilise NodeJS. Selon lui, JavaScript n’est pas aussi performant que Java, mais bien suffisamment pour faire tourner un serveur web. Et surtout “JS does scale”.

Si vous êtes intéressés par les problématique de ces architectures, je vous conseille de, comme moi, vous jeter sur son livre !

Flex 4.5

Michaël Chaize, ingénieur et avant-vente chez Adobe, nous a présenter Flex 4.5. La présentation était forcément un peu commerciale mais elle a eu le mérite de donner la parole à des pro-flex quand aujourd’hui on n’entend plus parler que de HTML 5.

Après quelques rappels sur l’offre, Michaël a insisté sur la popularité de la plateforme. Adobe se targue d’avoir signer un accord avec 19 des 20 acteurs majeurs de l’IT. Il souligne tout de même qu’après un premier refus, Apple autorise aujourd’hui d’installer sur ses terminaux mobiles des applications dont le code a été généré. C’est grâce à cette technologie qu’il est donc possible de lancer ses application Flex sur IPhone/IPad.
Adobe propose donc avec son nouveau SDK de développer une seule fois une application mobile qui pourra être déployée sur les plateformes tournant sur Android, iOS et sur le Blackberry PlayBook.

Des composants spécifiques aux terminaux mobiles ont été ajoutés ajoutés ainsi que les comportements classiques comme le retour arrière. La gestion de la mémoire a été optimisée avec comme la destruction automatique d’une vue dès que l’on passe à la vue suivante (configurable). La gestion des résolutions d’écran différentes entre les terminaux fait également partie du lot.
Michaël nous assure que les performances sont les mêmes que pour une application native.

La démonstration a continué avec l’implémentation en quelques minutes d’un client (lecture) twitter. Il y a aussi eu l’intervention sur scène d’un développeur qui faisait partie du public, pour montrer son application flex tourner sur 3 différentes machines.

La fin de la démo montrait une application utiliser le LiveCycle, l’offre payante de Flex qui permet ici d’incorporer très facilement la vidéo et le son (visioconférence).

Enfin il a rappelé que grâce à la communauté open source, tous les outils disponibles sur Java existent sur Flex: Tests unitaires, Sonar, intégration continue avec Maven ou Ant, … (pour ma part je fais aussi des tests IHM automatisés). L’IDE FlexBuilder est payant mais on peut aussi utiliser IntelliJ IDEAL (payant aussi).

ElasticSearch

Shay Banon est le créateur d’elasticsearch qu’il voit comme le successeur de Compass. C’est un projet open source de recherche basé sur Lucene.

Aucun slide pour cette présentation mais une démo assez complète des fonctionnalités de l’outil. Tout d’abord il insiste sur sa “scalabilité” en déployant et supprimant à chaud des nouvelles instances du moteur.
Pour la recherche, l’indexation et l’ajout de contenu tout se fait facilement en REST avec du JSON. Il existe également une API Java et Groovy mais qui ne seront pas montrées.

Mis à part les recherches classiques, Shay a fait une démonstration d’un Percolator. C’est une requête pré-enregistrée qui renvoie ses résultats à la fin d’une indexation. Il a aussi parlé des Facets. Une facet est un élément fournit dans chacun des résultats. Elle permet d’enrichir la réponse dans sa globalité (pour un usage statistique par exemple).