Raspberry Pi, ça vous parle ?

  Jeudi 22 janvier dernier au 43 rue Beaubourg, Mobiskill fut ravi d'accueillir le 51e meet-up du Paris Scala UG. Le sujet du jour ? Applications réactives sur Raspberry Pi. Vous y étiez et vous voulez un récap' ? Vous n'étiez pas et vous voulez aussi un récap'? Cet article tentera de vous donner toutes les informations délivrées durant ce meet-up. Laissons nos 2 interlocuteurs nous (re)dévoiler leur actualité sur notre chère technologie.   Qui êtes-vous ? Alexandre Delègue : Je travaille pour Serli depuis un peu plus d’un an. Je suis essentiellement un développeur java, javascript avec un intérêt comme beaucoup pour le NoSQL et les applications scalables. Je fais du scala « le soir » depuis environ un an et j’apprécie particulièrement ce que propose ce language.   Mathieu ANCELIN : Développeur chez Serli depuis 5 ans, je fais du Scala en on/off depuis 3 ans (et plus sérieusement depuis 2 ans). Je fais beaucoup de Java et Javascript professionnellement et le soir beaucoup de Scala. Je suis le lead développeur du projet ReactiveCouchbase qui est un driver réactif pour la base de données noSQL Couchbase écrite en Scala.   ➔ Pourquoi VOUS êtes aujourd’hui le speaker de ce meet-up ? On a vu de la lumière alors on est entré :-) En fait, il semblerait que le sujet de notre présentation ait plu aux organisateurs du meetup, donc nous sommes ici pour présenter notre magnifique cluster de Raspberry Pi !   Quelles sont les problématiques principales soulevées aujourd’hui ? Ce talk a pour objectif de montrer comment implémenter une application web qui devra tourner sur un cluster de Raspberry Pi. L’application doit répondre aux contraintes suivantes :
  • supporter la charge
  • résister aux pannes
  • répondre aux utilisateurs
  • être référencée par les moteurs de recherche
Les Raspberry Pi ayant des ressources limitées, l’application doit garantir une utilisation optimale des ressources proposées. Développer une application JavaEE n’est donc pas la réponse la plus adaptée.   Quelles sont les solutions apportées ? L’implentation du site web suit les principes du réactif manifesto :
  • élasticité : être capable de répondre à une montée en charge par la scalabilité horizontale mais également de revenir en arrière quand la charge diminue.
  • réagir aux pannes : l’application ne doit être mise en péril lorsqu’un des composants est défaillant
  • message driven : l’application fonctionne par échanges de message et par conséquent elle doit être asynchrone
  • réagir aux utilisateurs : l’application doit garantir de bon temps de réponses même sous charge
  Les différents point ci-dessus sont adressés ainsi :
  • approche micro service
  • applications stateless
  • base de données noSQL (ElasticSearch et Cassandra) : scalables et résiliantes
  • utilisation du cache (cache navigateur, pré-génération de fragments html dans elasticsearch)
  • utilisation de la techno akka : envoi des messages même à distance (cluster akka)
  • utilisation de play : asynchrone, intégration d’akka, web socket …
  • mise en place d’une librairie de services pour faciliter l’utilisation du cluster akka
  • event sourcing : il existe deux modèles de données: un pour l’écriture et un pour la lecture.
  • Pour l’écriture, les événements véhiculés dans l’application sont précisées dans un journal et peuvent être rejouées si besoin.
  • Pour la lecture, on calcule l’état courant à partir des événements reçus.
  Certains points ci-dessus ont été illustrés par des démo en live sur le cluster de Raspberry Pi, le tout avec un ton décalé et humoristique.   Quelle est la place de CE meet-up parmi les autres (passés ou à venir) sur la même technologie ? N'ayant pas connaissances des précédentes ou prochaines interventions au Paris Scala UG, je dirais nous abordons les principes du réactive manifesto sous la forme suivante: "mise en place et retour d'expérience" dans un environnement extrêmement contraint. C'est d'ailleurs typiquement le genre d'environnement qu'on pourrait retrouver dans une plateforme de type PaaS avec du commodity hardware de base. Ce genre d'environnement implique le fait de prendre en compte les pannes et l'utilisation maximale des ressources lors de la conception des applications.   Un retour sur l’avis du public, les grandes questions posées ou une anecdote (intervention d’un participant, émulsion particulière sur un sujet, …) ? Les questions ont été diverses et variées allant de certains points logiciels bien précis à des questions sur le hardware utilisé pour fabriquer le cluster. C'est tout l'intérêt de cette présentation qui regroupe beaucoup de sujets allant du matériel au logiciel. Un des points forts de la présentation est l'arrachage de câbles réseau du cluster en live alors qu'une simulation de trafic est en train de tourner pour montrer le côté résilient de notre système.   - La Team Mobiskill