Blog

13 November 2018

Retour sur Scala i.o partie 2

Introduction aux acteurs Akka : concurrence et systèmes distribués pour la JVM

Guillaume Bogard nous donne ici une présentation des bases des acteurs Akka et une comparaison avec les systèmes de lock. La conférence a commencé par expliquer quelques bases théoriques sur les acteurs (par exemple la différence acteurs/threads). Ensuite un exemple basique a été utilisé pour démontrer l'intérêt des acteurs et comment les utiliser.

Il s'agissait, en l’occurence de comptes en banque et de crédit/débit/transfert effectués sur ces comptes. Des problèmes de concurrence peuvent apparaitre  dans certains cas ( par exemple deux débits réalisés simultanément sur le même compte). Ce problème peut être résolu par des locks sur les objets, mais ceci peut poser des problèmes de deadlock (deux transferts simultanés de A vers B et de B vers A). Ces deux problèmes peuvent être résolus en faisant de chaque compte un acteur Akka et des opérations des messages entre acteurs. Les messages sont traités de façon séquentielle, ce qui élimine les problèmes de concurrence ou de deadlock. Les performances peuvent également être améliorés par rapport à un système de lock (+40% dans l'exemple du compte en banque).

Pour finir Guillaume nous a fait une petite démonstration avec Akka cluster en prenant deux clusters lancés sur la même machine : communication entre clusters et discussion de la réplication des données.

Globalement la conférence explique bien l'intérêt des systèmes d'acteurs et la présentation est claire et simple. En contrepartie il n'y a pas vraiment eu de retour d'expérience sur des problèmes plus complexes qui peuvent se poser avec l'utilisation des acteurs. On aurait aimé également plus d'explications détaillées sur l'implémentation.

Feature flippez vos applications scala avec Izanami

Sous le format d’une conférence courte Alexandre Delegue nous présente un exemple d'utilisation de la librairie Cats. Une application Play basique est prise comme point de départ et le refactor utilise des fonctions comme Either ou OptionT pour réduire la taille du code. Le résultat final est plus lisible pour les personnes comprenant correctement la programmation très fonctionnelle, par contre ceux qui ne connaissent pas ce type de syntaxe penseront probablement que le code est incompréhensible. La conférence est une bonne introduction à l'utilisation de la librairie Cats pour les personnes qui ne l'ont peu ou pas utilisée.

L'exemple présenté est disponible sur Github : https://github.com/larousso/play-cats-io (A noter que la conférence était en français, le code est en anglais).

Everything you ever wanted to know about Scala implicits, but weren't sure how to ask

Le titre de la conférence de Filip Krikava est un peu trompeur. On pourrait penser que la conférence va se concentrer sur des explications techniques impliquant l'utilisation des implicites, mais en réalité une bonne partie est consacrée à des recherches sur l'utilisation des implicites dans les projets Scala.

La première partie de la conférence parle de l'utilité des implicites - expliquant notamment que les implicites sont une des "marques de fabrique" de Scala, étant donné qu'ils y sont très utilisés par rapport à la plupart d'autres languages où il sont absents ou rares. En particulier sont présentés les utilisations habituelles (conversions implicites, extensions de classes...), l'utilisation de paramètres implicites (ex : execution context, autres contextes), types classes (ex : conversion Json).

Les risques et faiblesses des implicites sont ensuite présentés : 

-peut rendre le code confus / dangereux et ainsi engendrer une lecture plus difficile

-confus => les imports peuvent changer les résultats du code

-ralenti la compilation (surtout si on utilise simultanément des macros)

Le reste de la conférence est consacré à une analyse des utilisations d'implicites dans les projets Scala de Github. Voici quelques quelques chiffres marquants : 92% des projets incluent des implicites (provenant de bibliothèque standard Scala ou Cats). 54% des projets définissent des implicites.

Le conférencier conclus en notant que les implicites sont globalement utilisés de manière prudente dans les projets analysés.