Jeudi dernier avait lieu une nouvelle session du Lava JUG : Bigdata et intégration en entreprise avec Jean-Baptiste Onofré.

Jean-Baptiste est membre de l’Apache Software Foundation et participe, ou a participé, à de nombreux projets de l’association et cette soirée était donc l’occasion de découvrir un peu plus ce monde là.

Avec une présentation fleuve de plus de trois heures, Jean-Baptiste nous a présenté, en véritable passionné, les arcanes de la fondation Apache. A commencer par le rôle que tout un chacun peut jouer en récupérant les sources et en proposant des “pull requests” (developer) jusqu’à devenir membre de l’association (ASF member) en passant par le rôle de _committer _et en participant aux PMCs (Project Management Committees).

Jean-Baptiste est aussi très impliqué dans les technologies tournant autour de l’OSGi, framework très connu pour son approche orientée services permettant un découplage faible et encourageant la réutilisabilité de composants.

C’est dans cet esprit qu’il nous a présenté un projet dont il est à l’origine et qu’il dirige en qualité de PMC Chair : Karaf et ses compagnons Cellar, Cave, … Véritable couteau suisse embarquant tout une flopée de fonctionnalités, Karaf permet de déployer des applications très variées et dans des environnements très différents.

Parmis ces fonctionnalités, on peut notamment citer : le redéploiement à chaud, une mise à jour à la volée de la configuration, un système de logging avec niveau de log modifiables dynamiquement, un shell Unix-like puissant entièrement développé from scratch et donc disponnible sur tous les OS ainsi qu’un système de provisioning (i.e. déploiement des artefacts ET des fichiers de configuration).

Complétée par une démo et ponctuée de devinettes sur l’origine des noms de divers projets Apache, ce fut une soirée enrichissante qui résonna parfaitement avec la présentation de Wisdom par Clément Escoffier et qui donne envie de mettre le pied dans un projet open source.

La session est à retrouver ici.

Encore merci à lui et au Lava JUG !

Commenter et partager


J’étais jeudi soir au Lava JUG, pour une soirée MongoDB, animée par Tugdual Grall (alias “Tug”) qui a notamment travaillé neuf ans chez Oracle et qui est maintenant Technical Evangelist chez MongoDB. Le but de la soirée était de présenter les principes fondateurs de MongoDB qui est un SGBD de type NoSQL avec une approche orientée document.

La première partie de la présentation était consacrée à la théorie et aux opérations de base : présentation du modèle orienté document, différence par rapport aux SGBD traditionnels de type relationnel ainsi que par rapport aux autres SGBD de type NoSQL, les programmes mongod (le serveur) et mongo (le client) écrit majoritairement en C/C++, opérations CRUD, indexes, etc.

Le second temps était focalisé sur ce qu’apporte MongoDB dans le domaine des bases de données et notamment du “big data” : une scalabilité facilitée et une haute disponibilité grâce à des données qui peuvent être distribuées sur plusieurs instances de MongoDB, donc potentiellement sur plusieurs serveurs. Pour mettre en valeur ces qualités, la société MongoDB a développé un outil intéressant permettant de monter un cluster d’instances dans le cloud (ou sur un réseau d’entreprise) : MMS.
Une autre fonctionnalité très intéressante de MongoDB, même sans avoir des milliards de lignes de données, est l’hétérogénéité des données: un document peut-être enrichi dans le temps avec de nouvelles informations sans avoir à mettre à jour tous les documents existants du même type.

Pour la première fois, la soirée du jeudi était suivie d’un workshop le vendredi matin. Animé par Tug et organisé avec bienveillance par les gars du Lava JUG (café et croissants servis !). Mise en pratique des notions abordées la veille, cette séance était le parfait complément de la présentation.

Ne connaissant MongoDB que de nom avant jeudi dernier, j’ai bien aimé ce format présentation+workshop qui apporte un vrai plus dans la découverte de nouvelles technologies. Ajouté à ça l’énergie que met Tug dans le partage de ses connaissances et tout était réuni pour passer de bons moments.

La présentation, comme toutes les épisodes précédents, est à (re)découvrir ici !

Encore merci à Tugdual et au Lava JUG !

Commenter et partager


J’étais hier soir au Lava JUG, pour une soirée autour des langages fonctionnels, animée par Yannick Loiseau, maître de conférence à l’Université Blaise Pascal et fortement impliqué dans le développement logiciel, notamment dans les langages fonctionnels.

A l’heure où de plus en plus de langages informatiques “modernes” (Java 8, C++ 11, Groovy, Scala, Clojure, etc) ajoutent des touches de programmation fonctionnelle, voire en font leur paradigme principal, et un an après la présentation Lambda Bestiary de Rémi Forax; Yannick nous propose un retour sur les concepts qui se cachent derrière ce style de programmation. Et en deux heures, ça promettait d’être sportif !

Et ce le fut un peu ! Mais là où Yannick a été très bon, c’est qu’il s’est appuyé sur des concepts que la plupart des développeurs connaissent déjà en langage objet (tels que les design patterns classiques) en montrant comment on pouvait les réécrire en langage fonctionnel, la plupart du temps de façon plus concise et “naturelle”.

La plupart des concepts ont été revus : fonctions de 1er ordre, d’ordre supérieur, concepts de map, filter, fold, unfold, les closures, les lambda jusqu’aux concepts plus avancés de partialisation, curryfication et monades. Le tout parsemé d’exemples en Java 8 et Golo. Et ce rappel tombe à pic pour moi car mes prochaines lectures seront consacrées à Java 7 et 8 ainsi qu’à Groovy, Scala et Clojure. Timing parfait !

La présentation, comme toutes les épisodes précédents, est à (re)découvrir ici.

Encore merci à Yannick et au Lava JUG pour ces moments de partage !

Commenter et partager


Jeudi dernier avait lieu une nouvelle session du Lava JUG : Organisation, Méthode, Devops, Usines logicielles,… avec Dimitri Baeli.

Dimitri a travaillé pendant 3 ans comme responsable qualité chez ExoPlatform, éditeur open source, avant de prendre la tête de l’équipe R&D de LesFurets.com. Il organise aussi plusieurs événements dans le domaine du développement logiciel comme Lean & Kanban France et l’Agile Tour Rouen.

Le sujet de la conférence de Dimitri était de nous présenter la transformation opérée dans l’équipe R&D de LesFurets.com depuis son arrivée en passant d’un cadre d’éditon logicielle Scrum à un mode de gestion par flux.

Sa présentation était articulée en deux parties: pourquoi ce changement et comment y arriver.

Le but de cette transformation était de réduire le temps entre le développement d’une fonctionnalité et sa mise à disponibilité au client (Time to Market).
Avec la gestion de projet en place à l’arrivée de Dimitri, les fonctionnalités étaient délivrées par sprint d’un mois. Les fonctionnalités développées en début de sprint attendaient donc plusieurs semaines avant d’être déployées en production.
L’équipe a donc commencé à se transformer par petites touches pour tendre vers un modèle de déploiement continu et ainsi livrer une fonctionnalité prête au plus tard une journée après son développement.

Pour arriver à cela, Dimitri et son équipe ont fait pas mal de recherches sur des bonnes pratiques et des méthodes à mettre en place telles que le continuous delivry, kanban, lean, etc.
Ils ont aussi modifié leurs outils et le changement leur ayant apporté le plus de valeur ajoutée fut le passage de Subversion à Git. En effet, plus qu’un changement d’outil de gestion de version, cette transition fut pour eux le début d’un changement de philosophie dans leur processus de développement. La facilité qu’apporte Git dans le maniement des branches leur a permis d’en faire une utilisation massive.
Avec Subversion, tout le monde développait dans Trunk et une branche était créée pour la livraison. Ainsi, les deadlines étaient inévitables afin de synchroniser les développements de chacun, avec comme inconvénient que les fonctionnalités non prêtes devaient être désactivées d’une manière ou d’un autre.
En passant à Git, ils ont renversé la situation en faisant de la branche master la branche de livraison et en créant une branche par fonctionnalité à développer, modèle simplifié inspiré du modèle de branches Git de Vincent Driessen. Ainsi chaque fonctionnalité terminée est fusionnée sur master et prête à être livrée. Un job de compilation, l’octopus, permet de s’assurer que toutes les branches fusionnent bien avant de les basculer vers master.

En conclusion, ce que je retiendrai en premier lieu de cette présentation est le temps et les moyens investis par Dimitri et son équipe dans l’amélioration continue de leurs pratiques, qui a vraiment été la clé de leur réussite et que l’on néglige parfois trop souvent !

Merci au Lava JUG et à Dimitri Baeli pour cette agréable soirée !

Commenter et partager


Jeudi dernier avait lieu une nouvelle session du Lava JUG : On the path to Wisdom avec Clément Escoffier.

Clément a travaillé dans plusieurs sociétés à travers le monde et est actuellement chercheur à l’université de Grenoble. Il s’intéresse à tout ce qui peut améliorer l’efficacité du développement ainsi que sa maintenance. Il participe aussi à des projets Open Source tels que Apache Felix (dont il est membre du Project Management Commitee) et iPOJO ainsi que Wisdom, framework dont il est le principal initiateur.

La présentation se déroula en deux parties.

Tout d’abord Clément retraça son parcours professionnel et les principales raisons qui le conduisirent à initier un projet comme Wisdom. Il nous a ainsi évoqué les difficultés qu’il a rencontrées sur son précédent projet avec son équipe pour trouver la bonne technologie (JavaEE, JavaScript, Play, etc). C’est ainsi que l’idée d’un framework modulaire, dynamique, fun à utiliser et complètement orienté services est né. Il nous a ensuite présenté ce qui se cache derrière Wisdom : Java, services OSGi bien empaquetés, Maven, etc.

Ensuite Clément s’est prêté au jeu du live-coding et le moins que l’on puisse dire c’est que l’effet fut bluffant ! L’une des particularités de Wisdom est l’utilisation de Maven en watch-mode. Ainsi Maven scrute les fichiers en cours de développement et lorsqu’il détecte une ou plusieurs modifications, il recompile, redémarre le serveur et redéploie à la volée ! Le développement s’en trouve grandement facilité et le développeur peut rester concentré sur son code sans perdre une bonne partie de son temps en configuration et redéploiement.
La seconde particularité de Wisdom est son aspect ultra-modulaire : tout est service. Ainsi chaque composant peut-être remplacé ou arrêté à chaud, ce qui rend plutôt bien en live-coding. L’exemple pris fut celui d’un e-commerce de coffee-shop (code source dispo ici), sujet qui se prête assez bien pour mettre en avant la découverte de services à travers les fournisseurs de différents types de café.

Wisdom possède aussi une page d’administration, une page de monitoring, une api native de tests de différents niveaux (unitaires, intégration container, intégration blackbox, etc) et tout ça est à découvrir sur le site du projet et sur le GitHub de Clément.

Merci au Lava JUG et à Clément Escoffier pour cette soirée enrichissante et de grande qualité !

Commenter et partager


Jeudi dernier avait lieu la 6ème session de l’année du Lava JUG : Développeur front-end en milieu hostile présenté par Julien Muetton. Julien un passioné de développement web qui pratique l’amélioration continue. Il est donc venu nous présenter ses bonnes pratiques, ses outils préférés et sa vision du métier. Il est, entre autres, vice-président de Clermont’ech et président de ClermontJS.

Julien a commencé sa présentation en détaillant ce qu’il appelle un “milieu hostile”. Le développement web a ceci de particulier qu’il possède un vaste environnement hétérogène. Il existe plusieurs navigateurs(IE, Firefox, Chrome, …), une multitudes de “devices”(ordinateurs, tablettes, mobiles) aux tailles d’écran variées, un niveau de sécurité important à injecter dans les applications et une couche réseau à la qualité difficilement prévisible (Fibre, ADSL, 4G, 3G, Edge, …). Julien nous a donné quelques astuces et bonnes pratiques pour appréhender ces contraintes.

Julien a enchaîné avec l’éco-système du développeur web en nous donnant à chaque fois son avis sur la qualité et l’utilisation qu’il fait de chaque outil.

En voici quelques uns :
    - Chaîne de build et “watchers” : Yeoman, Grunt, Broccoli, Gulp, Brunch
    - Package : npm, bowser
    - Versionning : Git
    - Test unitaires
        -Assertions : Chai, should, NodeJS assert
        - Runners : Mocha, Jasmine
        - Mock : Sinon.JS
        - Cross browser runner (test à travers plusieurs navigateurs) : Karma, Yeti
    - Tests fonctionnels
        - CasperJS
        - Selenium et Selenium as service (Sauce Labs, BrowserStack)
        - Régression visuelle : Phantom CSS, Viff
    - Maven, Graddle et surtout l’utilisation de scripts (install, start, stop, tests, release) enchaînés dans un Jenkins.

C’était une bonne présentation ! Moi qui ne suit pas familier avec le développement web, j’ai appris beaucoup de choses et je suis reparti avec pas mal de pistes pour m’y mettre. Le seul point négatif selon moi est l’absence d’une partie démo en live des outils comme l’avait fait Sébastien Douche dans sa présentation; ça passait dans le créneau et ça aurait pu être utile à ceux qui ne les connaissent pas.

Merci Julien !

Prochaine session du Lava JUG, le 19 Juin avec Alexis Moussine-Pouchkine pour une présentation Java dans le Cloud.

Commenter et partager


Après la virtualisation avec Sébastien Douche en décembre, le Lava JUG démarre l’année sur les chapeaux de roue avec la venue de Rémi Forax, maître de conférence à l’UPEM (Université de Paris-Est Marne-la-Vallée), pour sa présentation Lambda Bestiary.

Après s’être présenté et nous avoir expliqué quels étaient ses travaux professionnels, Rémi est rentré dans le vif du sujet en nous expliquant pourquoi les lambda existaient en Java et à quoi elles servaient. Il a pris pour fil rouge la réécriture de design patterns bien connus tels que “Visitor”, “Factory” ou encore “Command” en les transposant de leurs implémentations objets “classiques” en implémentations à base d’objets Lambda. Bluffant !

J’ai vraiment apprécié la soirée, riche en enseignement sur les nouveautés de Java, les coulisses de son évolution et ce vers quoi il pourrait tendre dans les années à venir. Rémi est un très bon orateur et les heures défilent à grande vitesse.

Encore merci au Lava JUG de nous offrir des soirées de cette qualité là !

Commenter et partager

Lava JUG - Virtualisation

dans Événements

J’étais jeudi dernier à la soirée LavaJUG qui avait pour thème la virtualisation présenté par Sébastien Douche.

Après une présentation de son parcours et de ses compétences (sysadmin, développeur et manager !), Sébastien nous a présenté ce qu’était la virtualisation et comment il utilisait les machines virtuelles dans son quotidien professionnel. Il nous a rappelé la différence entre émulateur et hyperviseur et quels étaient les outils disponibles pour ce genre de besoin.

Après la théorie, la pratique ! Ses démos nous ont permis de voir comment ils mettaient les mains dans le cambouis et quelle était la puissance d’outils comme vagrant, saltStack et autres.

Ça faisait longtemps que je n’avais plus entendu parler d’administration système (depuis mes études en fait…) et le moins que l’on puisse dire, c’est que ça ne fait pas de mal. En tant que développeur, on peut avoir tendance à ne pas explorer suffisamment cette activité et pourtant certains outils peuvent nous faciliter la vie.
Les machines virtuelles, par exemple, peuvent être un bon moyen de reproduire un environnement de production afin de faire des tests en situation réelle, pour un coût temps/budget négligeable !

Commenter et partager

  • page sur

Pierre PIRONIN

J’ai créé ce blog pour parler de ce qui se passe autour de moi dans le domaine du génie logiciel.
J’exposerai mes devs, mes idées, mes lectures, les faits qui m’intéressent et les événements auxquels je participe.

Bonne lecture !


Artisan développeur


Auvergne, France