Blog

14 June 2019

ScalaDays 2019, la 10ème édition

#scala #scaladays

Un article écrit par Nicolas Martignole

A l'occasion de la 10ème édition de la conférence ScalaDays, plus de 1100 personnes étaient présentes pendant 3 jours à Lausanne. En dehors de la conférence principale, cette semaine a aussi été l'occasion de pré-conférence et de post-conférence (comme le Typelevel Summit). Lunatech était présent comme exposant Platinium et comme Partenaire de Lightbend. Nous étions 25 personnes, dont 6 personnes du bureau Français.

La conférence se déroule à l'EPFL (Ecole Polytechnique Fédérale de Lausanne). Le campus, très américain dans l'esprit, est situé à la sortie de Lausanne. Dans le centre de conférence SwissTech Convention Center, magnifique bâtiment, l'espace est organisé entre une partie exposition, et une partie conférences avec différentes salles, similaire au format Devoxx.

Alors qu'avons-nous appris, quelles sont les nouvelles de la communauté Scala ? Que faut-il retenir de ces 3 jours ?

La conférence a démarré le mardi soir, avec une plénière par Martin Odersky (créateur de Scala et responsable de la recherche en programmation, à l'EPFL). Scala est un langage qui vise à intégrer 2 paradigmes de programmation. D'une part l'orienté objet, d'autre part la programmation fonctionnelle. Pour lui, ce sont 2 faces d'une pièce, et qui devraient être unifiés autant que possible (source).

Scala 3 est en phase de finalisation et sera disponible à la fin de cette année. Par rapport à Scala 2.13 / 2.14, un bon nombre d'ajouts (et aussi de retraits) visent à renforcer l'expressivité et la facilité d'utilisation du langage. Vous pourrez retrouver un résumé des nouveautés et de l'esprit de Scala 3 sur la page Overview de Dotty. Les diapositives de la présentation de Martin Odersky sont en ligne sur Slideshare.

Quelques sujets que nous avons couvert

  • Intéressé par les retours d'expériences sur l'enseignement de Scala, je suis allé voir Refactor all the things de Daniela Sfregola. Elle écrit actuellement "Get Programming with Scala" chez Manning. J'ai acheté ce livre, pour pouvoir découvrir son approche. Si vous cherchez une ressource pour apprendre le langage Scala par la pratique, c'est un bon livre. Si vous recherchez plus des explications sur le "pourquoi du comment", je vous recommande plutôt "Programming in Scala".
  • Akka Streams to the Extreme par Heiko Seeberger. Si vous connaissez Akka Stream et que vous souhaitez aller plus loin, cette présentation est pour vous. Elle passe en revue les techniques avancées (mais relativement simple) que l'on peut mettre en place avec Akka Stream. Le code source est sur hseeberger/xtream et les slides sont ici.
  • sbt core concepts par Eugene Yokota. La présentation vise à expliquer la philosophie et les mécanismes sous-jacents de SBT. Il faut retenir surtout que les dernières versions de SBT (0.13.6 et 1.x) apportent un joli gain de performance (essayez, vous serez surpris). Je recommande la lecture du Reference Manual pour comprendre le fonctionnement de cet outil.
  • Si par contre votre base de code est énorme, vous serez certainement plus intéressé par Bazel, l'outil de build open-source proposé par Google. La présentation Building Scala with Bazel est un retour d'expérience de Natan Silnitsky de Wix.com. 250 développeurs, 10 millions de lignes de code, surtout en Scala, 750 micro-services... Bazel est un outil de build qui marche avec Maven, Ant, SBT ou autre. Il est écrit en Java. Le principe est de mettre un BUILDFILE dans chaque package, chaque répertoire de votre application. Ce Build file permet de construire un sous-ensemble de votre projet. Par exemple, toute la couche ORM ou votre modèle. Imaginez ensuite cela sur une grande base de code, avec plusieurs modules. Le tout est coordonné par Bazel. Il est pensé dès le départ pour faire des Builds répartis (aka sur plusieurs serveurs). Et il a un cache, qui prend un checksum de vos fichiers compilés, et de vos tests unitaires. Si votre collègue a déjà passé les tests unitaires pour un certain ensemble de fichiers, ils seront alors immédiatement en validé, lorsque vous passerez votre phase de test. Bon, cela revient à virtuellement partager un méga paquet d'informations... mais c'est assez étonnant. Sur une base de code qui compile en 20 minutes, avec maven, il montre une version qui compile en 8mn, puis en 2 secondes une fois que le cache est chaud. A tester pour les gros projets...
  • Scala best practices I wish someone's told me about par Nicolas Rinaudo (cocorico un Français !) était aussi une très bonne présentation. La salle était d'ailleurs archi-complète. Le principe, vous le connaissez, est une série de Scala Puzzle. On vous montre un bout de code, vous pensez que le code fait quelque chose/que le code est correcte... et en fait non. Bam ! C'est ludique, sympa et cela permet d'apprendre des points intéressants. Nicolas a écrit un bon nombre d'articles, allez voir Scala Best Practices.
  • Nous avons aussi rencontré Sébastien Doeraene, le créateur de Scala.JS, à l'occasion de sa présentation Scala.js and WebAssembly, a tale of the dangers of the sea. Pourquoi coder en Scala alors qu'il est possible de coder en JS directement ? Chez Lunatech pour un de nos clients, nous travaillons avec Scala.js, avec scalajs-react et avec ScalaCSS. Cette approche permet de construire la partie Front en restant sur Scala. Elle apporte le typage fort (et l'auto-complétion) dans l'éditeur, permet de rester sur SBT pour la compilation, et facilite la courbe d'apprentissage pour des développeurs backend. Si vous voulez en savoir plus, je vous invite à regarder la présentation Scala.js, Scala.CSS et React, l'histoire d'une découverte par Maude Cahuet, Marc Gedik et Cédric Murer sur YouTube.
  • Côté Google nous avons eu la présentation Serverless Scala - Function as a SuperDuperMicroServices par Josh Suereth et James Ward. Les deux ont rejoint Google récemment. J'ai pu parler avec James, qui va prendre un rôle de Developer Advocate autour de la plateforme Google Cloud. La présentation était un mix de GraalVM, de ZIO, et d'Akka-HTTP, le tout sur du GCP. Cela permet de comprendre l'intérêt d'un démarrage instantané (coucou Quarkus) grâce à GraalVM. Le code source sera sur le Github de James Ward prochainement.
  • J'ai beaucoup aimé la Keynote du jeudi matin, Sustaining open source digital infrastructure par Bogdan Vasilescu. Toi qui fait un projet open-source : va voir cette présentation dès que la vidéo sera disponible. Bodgan présente différents projets de recherche menés à STRUDEL (Socio-Technical research using data excavation lab), de la Carnegie Mellon University. Par exemple, saviez-vous que les badges sociaux comme celui-ci: , que l'on trouve sur les pages Github, ont une influence démontrée sur la qualité du code source ? Par l'étude des commits, et de l'analyse simple, il explique comment et pourquoi certains projets deviennent populaires, d'autres non. Il parle aussi de diversité, que certaines femmes masquent leur identité avec un pseudo masculin, dans le but de ne pas être dérangé, tout en pouvant contribuer... Bref une grande balade autour de l'open-source, avec un oeil universitaire. A voir absolument !

Enfin pour terminer, un peu d'annonces aussi du côté de Lightbend, avec la sortie de Lightbend Pipelines. Nous allons évaluer cette solution prochainement dans le cadre du partenariat entre Lunatech et Lightbend. Non, ce n'est pas un produit open-source. En attendant, qu'est-ce que Pipelines peut faire pour vous ? Vous avez différents services à intégrer avec Spark, Kafka, Akka ? Le produit permet de coordonner et de créer des tuyaux de transformation de la data. Le tout avec Kubernetes. Passé la démonstration (qui était vraiment bien faite), on retrouve des principes de transformation, extraction et enrichissement des données, à l'aide de patterns venant directement des EIP (Enterprise Integration Pattern). Au passage, un peu de BPM pour définir la chaîne de valeur, le tout dans une belle console, et voilà.

La Community Party

Lunatech était sponsor de la soirée offerte à l'ensemble des conférenciers. Nous avions privatisé le Musée Olympique de Lausanne, face au Lac Leman. Avec un groupe de Jazz et un superbe temps, cela nous a donné l'occasion de rencontrer beaucoup de monde.

A bientôt

Nicolas Martignole