RMLL 2013: Projet rudder, retour sur 4 ans de Scala

38
Normation – CC-BY-SA normation.com Projet Rudder Retour sur 4 ans de Scala François ARMAND Directeur R&D - Normation [email protected]

description

Un retour d'expérience sur l'utilisation de Scala dans un projet Open Source, sur 4 ans. Cette présentation couvre en particulier les aspects sociaux liés à l'utilisation d'un langage preque inconnu au début du projet (2009), et qui décolle.

Transcript of RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Page 1: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com

Projet Rudder

Retour sur 4 ans de Scala

François ARMANDDirecteur R&D - [email protected]

Page 2: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 2

Qui suis-je ?

Scalaiste depuis...

● mi-2006 pour des projets personnels

● Rudder : Scala à temps complet depuis mi-2009

● Projet LaFoSec : sécurité des langages fonctionnels

– Scala d'un point de vue sécurité

– Papier écrit en 2010 pour l'Agence Nationnal de la Sécurité de SI (ANSSI)

– http://www.ssi.gouv.fr/fr/anssi/publications/publications-scientifiques/autres-publications/lafosec-securite-et-langages-fonctionnels.html

Co-fondateurLead-architect

[email protected] @fanf42

François ARMAND

Page 3: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 3

De quoi va-t-on parler ?

● Pas une présentation de Scala

● Pas une présentation technique

● Plutôt l'histoire de Rudder et de Scala

Page 4: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 4

Projet Rudder : retour sur 4 ans de Scala

Rudder ?

François ARMANDDirecteur R&D - [email protected]

Page 5: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 5

Rudder ?

Automatisation & conformité des infrastructures informatiques

Configuration de système, Gestion des changements,

Vérification...

www.rudder-project.org

Page 6: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 6

Les trois approches de la configuration

1. L'artisanat 2. La duplication 3. La gestion centrale

● Adaptable à chaque besoin● Solution sur mesure● Attention au détail

● Problème d'échelle● La répétition n'est pas un

point fort des humains● Partage du savoir

Configuration à la main,aux « petits oignons »

É V O L U T I O N

● Gain de temps à partir du deuxième déploiement

● Environnements identiques

● Adaptation des paramètres● Gestion des changements● Compatibilité des

formats d'image

Une installation « parfaite »,reproduite à l'identique

● Contrôle centralisé● Gestion des changements● Vérification et reporting● Partage du savoir

● Agent sur chaque serveur

● Montée en compétences

Configuration automatique,pilotée depuis un point

Page 7: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 8

Rudder : objectifs

Faciliter la gestion de configurationet propager son utilisation

Étendre les bénéficesde la

gestion de configurationà

une population plus large

ManagersSysadmins

juniorsNon

experts

Baisser le coût d'entréepour

apprendre et utiliserla

gestion de configuration

Utilisationsimplifiée

Puissanceconservée

Page 8: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 9

Projet Rudder : retour sur 4 ans de Scala

Scala ?

François ARMANDDirecteur R&D - [email protected]

Page 9: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 10

●Scala : le langage

On passe !

The Scala and FPL friendly event in Paris!October 24th and 25th, 2013. Paris, France

Page 10: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 11

Projet Rudder : retour sur 4 ans de Scala

Pourquoi Scala ?

François ARMANDDirecteur R&D - [email protected]

Page 11: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 12

Pourquoi Scala ?

● Environnement multi-serveurs

● Traitements locaux et distants

● Problématiques Big-data

● Traitements statistiques

● Performances

● Parallélisme

● Besoin de Monads

● Comonads

● Iteratees

● Kleisli arrows

Page 12: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 13

Pourquoi Scala ?

● Environnement multi-serveurs

● Traitements locaux et distants

● Problématiques Big-data

● Traitements statistiques

● Performances

● Parallélisme

● Besoin de Monads

● Comonads

● Iteratees

● Kleisli arrows

Page 13: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 14

Nous sommes en 2009

Scala à cette époque lointaine :

Page 14: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 15

Nous sommes en 2009...

● Avec un 7 !

● comme « on n'a pas encore refait les collections »

● on casse la compatibilité binaire les semaines paires

– parfois les semaines impaires, aussi

● IDE inexistants

– il y a bien un plugin Eclipse

– mais c'est un projet de PhD

– qui ne fonctionne pas réellement...

Page 15: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 16

Nous sommes en 2009...

● Une communauté (mondiale) de 4 personnes

● Plus trois PhD de l'EPFL

Page 16: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 17

Nous sommes en 2009...

● Personne n'utilise

Scala en entreprise...

● Enfin si :

Pas encore Twitter ni Foursquare

Novell Pulse Mimesis Republic

Page 17: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 18

Nous sommes en 2009...

● Frameworks :

Page 18: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 19

Nous sommes en 2009...

Pas de PSUG !!!! ;

Page 19: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 20

Pourquoi Scala ? (en vrai)

● Start-up, le produit avant tout

● Ne pas être contraint par le langage ni l'environnement de développement

● Pouvoir facilement trouver des compétences

● Dans un écosystème dynamique

● Choix naturel :

● Java.

● Sisi.

Page 20: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 21

Pourquoi Scala ? (en vrai)

● Pour rigoler : en Scala, possible ?

● Base terminée en 2h et 50 lignes

+ =JAX-P / XSD

Xstream

SAX/StAX

Page 21: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 22

Pourquoi Scala ? (en vrai)

● On a adoré,

● Fait de plus en plus de choses en Scala

Bref, on se faisait plaisir – et des développeurs qui se font plaisir bossent mieux

Cool à utiliser

Développement rapidePeu de boilerplate

Apprendre à nouveau

Page 22: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 23

Pourquoi Scala ? (en vrai)

● On a adoré,

● Fait de plus en plus de choses en Scala

Page 23: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 24

Projet Rudder : retour sur 4 ans de Scala

Et alors, dans la durée, ça donne quoi ?

François ARMANDDirecteur R&D - [email protected]

Page 24: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 25

Grandir avec un écosystème naissant

● Pleins de côtés sympas

● Esprit tribu, tout le monde se connait

● les premiers Scala Days

– Sentir un élan, un bouillonnement

● la création du PSUG

● les idées folles de remises en cause du monde (JavaEE...)

● Communauté

Brillante Dynamique Horizon divers

Parfois Rugueuse

Page 25: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 26

Grandir avec un écosystème naissant

● Des côtés moins sympa :

● La lenteur de la compilation (toujours)

● la compatibilité binaire inexistante

● les bugs du compilo (nombreux au début)

● l'outillage inexistant

● les intégristes Java qui n'essaient pas de comprendre

– mais critiquent abondamment.

Page 26: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 27

Grandir avec un écosystème naissant

● Finalement, voir la sauce qui prend

● , et pleins dautres frameworks

● La start-up du jour (par exemple )

● Les grosses boites : , , …

● Les scala-days de plus en plus grands

● Le nombre de présentations et d'UG qui explose

● L'apparition dans les radars « mainstream »

● Boost de motivation, d'idées, de possibilités

($4M pour développer Scala)

Page 27: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 28

●Grandir avec un écosystème naissant

● Et le recrutement ?

● Personnelement, peu de recul :

– Uniquement 5 (anciens) stagiaires & alternants

– Aucune intégration de développeur expérimenté

● Candidats : excellents profils

● Aucun problème de montée en compétence sur Scala

● Evolution du marché :

● Aujourd'hui :

– embaucher 5 stars : aucun problèmes,

– monter une équipe de 20 personnes : très difficile.

« Hot developers use Scala »Anthony Rose

Page 28: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 29

Projet Rudder : retour sur 4 ans de Scala

OK, mais le code, alors ?

François ARMANDDirecteur R&D - [email protected]

Page 29: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 30

Scala way of life

● Favorise l'immutabilité et la composabilité

● Favorise l'intention par le typage

● Case class : la bonne structure de données au bon moment

● « un identifiant n'est pas une String »

getPeople(id : PeopleId) : Either[ Error, Option[People] ]

● Framework de collection über puissant

● Les algorithmes tels que vous les pensez

Page 30: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 31

Utiliser Scala permet....

● Modéliser des systèmes et leurs intéractions

● Composition de flows de données

● Ajouter simplement des fonctionnalités transverses

● Workflow de validation de demandes de changement : 3 semaines à 3

● Algorithmes / sorties utilisateurs

● Refactorer

Page 31: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 32

Evolution du code : refactoring

● Rudder : 3 refactorings majeurs

● 80 % des ~35kloc touchées

● Passés magiquement

● Le métier reste complexe

● Mais ça compile, c'est bon (presque)

● Pas de craintes de refactorer

● Même si la couverture de tests n'est pas top

(c'est mal)

● Comme dans Git, naturel de faire des branches

Page 32: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 33

Classe « entité », mode 2009

Page 33: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 34

Classe « entitée », mode 2013

Page 34: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 35

Algo, mode 2009

Page 35: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 36

Algo, mode 2013

Type de retour : soit un résultat, soit une erreur (Box)

….

….

Page 36: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 37

Projet Rudder : retour sur 4 ans de Scala

Et les technos ?

François ARMANDDirecteur R&D - [email protected]

Page 37: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 38

Technologies

● JVM : uniquement partie « serveur Rudder »

● Pile Java classique :

● Maven,

● Spring (bientôt éradiqué),

● UnboundId (LDAP),

● JodaTime, SLF4J, etc

● Framework web :

● Lift

● Perspectives d’évolution

● Virer Spring

● Akka & Spray.io

Page 38: RMLL 2013: Projet rudder, retour sur 4 ans de Scala

Normation – CC-BY-SAnormation.com 39

Projet Rudder : retour sur 4 ans de Scala

Questions ?

François ARMANDDirecteur R&D - [email protected]