LunaConf

Un début d’année 2020 prometteur pour Lunatech

Au cours du mois de Janvier, le siège de Lunatech basé à Rotterdam (Pays-Bas), a vue ses bureaux déménager dans de nouveaux locaux. A cette occasion, l’équipe française s’est rendu à Rotterdam le 17 Janvier dernier afin de célébrer cet événement.

La première LunaConf a rythmé la journée avec 13 conférences en interne sur des sujets techniques comme Kotlin, Akka, Scala, Quarkus

La journée a commencé par un Welcome Words présenté par Antoine Laffez

S’en sont suivies 4 sessions de 3 conférences ainsi qu’une Closing Keynote par Sébastien Blanc.

Enfin la journée s’est cloturée avec quelques mots de Nicolas Leroux (CEO). Il a dressé un bilan très positif, la société compte maintenant plus de 106 employés de 26 nationalités. Lunatech a ouvert aussi des bureaux en Belgique, en plus des bureaux déjà ouverts à Amsterdam et Rotterdam.

Pour finir, les Lunatechies se sont retrouvés tous ensemble autour d’un verre dans la joie et la bonne humeur.

Ici le planning de cette première édition LunaConf.

Retour sur les conférences

Vert.x 4.0: What’s cool and new!
Paulo Lopes

Vert.x est un event-driver framework qui roule sur la JVM. Vert.x est polyglote ce qui veut dire qu’il peut être utilisé sous plusieurs langages comme Java/JavaScript/Scala/Kotlin, etc …

Vert.x roule un peu comme NodeJS dans le sens où il est “event-based”. Il tourne un seul thread et est non-bloquant. Alors pareil comme NodeJS, la règle #1 est de faire attention pour ne pas bloquée cette thread. Vert.x est modulaire. On pourrait utilisé seulement les modules qui nous intéresse dans un autre framework par exemple et s’en servir comme librairie.

Les avantages :

  • Les benchmarks montrent des performances excellentes.

Les inconvénients:

  • Le support et la main d’oeuvre
  • Single threaded peut être un facteur bloquant non négligeant selon le cas.

First experiences with Akka Typed and Dotty
Eric Loots

La sortie d’Akka 2.6 a été accueillie avec beaucoup d’enthousiasme dans la communauté. Une étape majeure de cette version a été le marquage des API typés Akka comme étant stables. Lors du processus de migration d’une application existante d’Akka Classic vers Akka Typed, non seulement j’ai beaucoup appris, mais j’ai aussi commencé à apprécier l’excellente conception des API.

Dans un autre contexte, l’équipe de Dotty a annoncé que Dotty était désormais complet pour Scala 3. La première version candidate pour Scala 3 devant être disponible vers la fin de l’année, le moment est venu de commencer à examiner ce que Scala 3 peut apporter à l’écosystème Scala.

En gardant ce qui précède à l’esprit, nous examinerons les sujets suivants au cours de cette conférence :

Expériences lors de la migration d’une application du classique au typographique

Que peut apporter Scala 3 à Akka Typed ?

USSD Service with Akka Typed
Olushola Akinmolayan

Qui connait la signification de l’acronyme “USSD »? Cela signifie Unstructured Supplementary Service Data (« Service supplémentaire pour données non structurées ». Selon Wikipédia, UUSD est un protocole utilisé sur les réseaux mobiles GSM qui permet aux consommateurs de communiquer avec des services de type temps réel dans un contexte dépourvu de données mobiles. Ces services correspondent par exemple à: un suivi de consommation ou de crédit restant sur un compte, un suivi interactif des résultats sportifs, etc.

Olushola Akinmolayan nous a présenté Akka Typed FSM pour modéliser le flux d’un service USSD. Akka Typed FSM est adapté pour ce cas d’utilisation. En effet, USSD, peut être considéré comme un SMS sans mémoire. Par conséquent, il faut un mécanisme pour gérer l’état de chaque session utilisateur.

Le présentateur nous a aussi prévenu que si on est habitué à l’ancienne version d’Akka _Un_Typed FSM, il y a eu beaucoup d’évolutions (pour le mieux) entre les deux versions. Donc, on va tous basculer vers Akka Typed FSM!

Akka Persistence Typed
Renato Cavalcanti

Il s’agit d’une librairie (qui c’est d’abord appelée eventSourced) qui a été incluse pour la première fois dans akka en v 2.4.0 et est devenue akka persistence Typed dans akka 2.6.0.

C’est une librairie destinée à gérer du CQRS (Command Query Responsibility Segregation) et de l’event sourcing, le principe d’une telle architecture est que chaque commande reçue va générer un évènement (partie écriture) qui sera ensuite lu et servira pour la mise à jour de la partie lecture.

Akka persistence Type a pas mal changé et amélioré la syntaxe utilisée précédemment. Des types plus précis ont été rajoutés sur la plupart des commandes utilisés ce qui réduit le risque d’erreurs de code.

La présentation portait sur le fonctionnement de la nouvelle version et montrait comment coder les commandes habituelles, ajouter des states, les modifications qui s’y appliquent, les effets des events…

Scala Vs Kotlin
Joost Heijkoop

L’entreprise Google a annoncé, durant la conférence « Google I/O 2017 », qu’elle commençait à supporter officiellement Kotlin pour le développement Android. Ce langage, issu de JetBrains, a vécu une croissance hallucinante grace à cette annonce. Un engouement encore plus fort est apparu suite à l’annonce de Google, l’année dernière à « Google I/O 2019 ». En effet, Kotlin est désormais leur langage favori pour Android.

Cette croissance a aussi bousculé le monde des langages JVMs pour le développement côté serveur. Notamment le monde de Scala qui, jusqu’à présent, était considéré comme le deuxième langage sur la JVM (après Java bien sûr) pour le développement côté serveur.

Joost Heijkoop nous a raconté toute cette histoire pendant sa présentation intéressante. Il nous a fait une comparaison entre les deux langages (Scala/Kotlin) sur la base de plusieurs axes : OO, FP, Pattern Matching, Composition, Extensions, Collections, et enfin la Concurrence.

Et qui a gagné ? On peut considérer un match nul. En effet, chaque langage a ses propres avantages et inconvénients. Le présentateur nous a confié utiliser les deux langages en fonction du cas d’utilisation qu’il rencontre. Pour résumer, si tu recherches une « meilleure alternative à Java » qui te permet de rapidement monter en compétences, il faudra se tourner vers Kotlin. Tandis que si tu es plus intéressé par un langage plus expressif, « multiparadigmes » ainsi qu’un système de typage plus élaboré, Scala sera probablement le meilleur choix.

Kubernetes and Securing the Platform
Siva Jeyakkodi

Cette démo porte sur la sécurité de Kubernetes. On nous a principalement montré des outils qui nous aide à sécuriser la plateforme. On a vu par exemple l’utilisation de
RBAC (Role Based Access Control), des Network Policy, et finalement du Admission Controller.Le premier étant, comme son nom l’indique, de la sécurité par droits d’accès selon des roles données sur des services accounts utilisées par les ressources elle-mêmes sur la plateforme. La deuxième au niveau network carrément. On peut ainsi activer ou désactiver la communication entre deux “pods” sur kubernetes, imposer un firewall, etc.
Et la dernière étant une façon d’intercepter les requêtes sur l’API de Kubernetes juste après l’authentification et l’authorization de cette requête.Chacun de ses méthodes ont ensuite été démontrées et présentées par des démos.

Akka anti-patterns solved in Akka 2.6
Manuel Bernhardt

Manuel Bernhardt nous a présenté 6 anti-patterns impossibles à réaliser avec la dernière version d’Akka. En effet, Akka s’améliore de jour en jour grâce à la dernière mise à jour ainsi qu’au support officiel d’Akka typed. De nombreux problèmes de cet outil ont été résolus. Cette présentation fait écho à l’une de ses anciennes présentations dans laquelle il nous faisait découvrir les erreurs les plus courantes avec l’utilisation d’Akka.

L’organisation de ce talk était originale et intéressante. En effet, le speaker suivait toujours la même structure. Tout d’abord, il choisissait une phrase philosophique en rapport avec un anti-pattern. Puis, il expliquait pourquoi c’était un anti-pattern et qu’il fallait éviter cette pratique. Et enfin, il expliquait que chaque cas présenté n’est plus réalisable dans la dernière version d’Akka.

Nous avons donc appris la puissance de la dernière version d’Akka ainsi que l’utilité d’Akka typed d’une manière détournée mêlant humour et réflexion.

How Metals + LSP Your favorite editor for Scala
Chris Kipp

Metals et LSP permettent d’utiliser ton IDE favori pour faire du Scala. Metals est une extension qui s’ajoute à ton IDE favori. Cette extension permet de pouvoir coder et avoir tous les features classiques d’un IDE comme IntelliJ par exemple pour coder du Scala.

La façon dont ça fonctionne : Le code est envoyé sur un serveur en utilisation le protocole LSP (Language Server Protocol), qui est ensuite analysé et des messages JSON sont retournés au client contenant ainsi toutes les informations nécessaires pour afficher au client en temps-réel lors du codage. On note comme fonctionnalité L’auto-completion, les erreurs de compile, import auto-completed, etc…

Les avantages sont :

  • la portabilité
  • L’homogénéité du code inter IDE.

Les inconvénients :

  • Le manque de features supportés étant donné le jeune âge de cette extension.

Monad & Muffins
Jaap Van der Plas

… Ou comment expliquer des concepts de développement fonctionnels à l’aide d’une recette de cuisine.

On pourrait croire le monde de la patisserie et du développement à des années lumières l’un de l’autre. Et pourtant, l’exemple d’une recette pour la découverte de l’algorithmie est une vraie bonne idée :

Parce qu’elle utilise des ingrédients, faciles à comparer avec des objets.
—> Prenons la case class ‘Farine’ qui aura un type et une mesure par exemple

Parce qu’elle énonce une série d’instructions exhaustives à réaliser pas à pas

Parce que ces instructions demandent elles-mêmes d’effectuer un ensemble de manipulations facilement regroupables en fonctions.
—> Comparons par exemple l’instruction de ‘fouetter’ à une fonction, qui prendrait un ou plusieurs ingrédients en paramètre, et retournerait un mélange

Parce que chaque étape de la recette a une incidence sur les ingrédients de départ, et transforme peu à peu une liste d’éléments individuels en un ensemble cohérent

Pour un débutant en Scala voulant s’initier aux concepts plus avancés tels que les Functors et les Monads, difficile de comprendre la définition très aride de la Scala doc. Et si les sujets fleurissent sur Internet, voilà une excellente idée que de tenter de nous les expliquer à l’aide de pépites de chocolat, de sucre et de farine, et de tenter de démystifier de gros termes qui ne désignent, finalement, que des fonctions que nous utilisons tous dans le cadre de nos projets avec assez de naturel.

Dommage, le talk ne s’est pas terminé sur une dégustation de muffins. Une amélioration applaudie de tous pour la prochaine fois, je pense !

La conf était très sympa, très bien organisée avec plusieurs speakers tops. J’ai bien aimé les sujets en général et les locaux étaient superbement disposés pour recevoir ces talks.

Manuel DupontDeveloppeur

LunaConf était un superbe événement pour célébrer les nouveaux bureaux, c'était un plaisir d'échanger avec tous le monde, vivement la prochaine conférence ! 🙂

Elisa Graner SilvestreAssistante Marketing

Bons speakers, bons sujets, des retours d'expérience utiles, bonne ambiance. Merci pour cette première édition de la #lunaconf, hâte de participer à la prochaine.

Pauline LognaDéveloppeuse

Merci au bureau de Rotterdam de nous avoir accueilli pour cette première édition de la Lunaconf, et pour la soirée qui a suivi. C’est toujours sympa de vous rencontrer tous, et au plaisir de vous accueillir, un jour, dans nos locaux en retour !

Laurie CoquillatDeveloppeuse

J’ai bien aimé rencontrer enfin nos collègues des Pays-Bas, avoir une vision plus concrète de ce qu’est Lunatech. Les conférences n’étaient pas faciles à suivre vu mon niveau technique mais néanmoins intéressantes, particulièrement celle sur Rasperry Pi.

Alexandre MeyerDeveloppeur

Toujours une joie de venir à Rotterdam, ce nouveau lieu est magnifique, très classe et quelle vue!!!!

William WatelOffice Manager

Les sujets de la conférence étaient intéressants. Ca m’a même motivé à bidouiller des raspberry pi… Peut être penser à éloigner chaque conférences 🙂

Herizo KerharoDeveloppeur