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.
2. Normation – CC-BY-SA
normation.com 2
Qui suis-je ?
Scalaiste depuis...
q mi-2006 pour des projets personnels
q Rudder : Scala à temps complet depuis mi-2009
q 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-publicati
ons/lafosec-securite-et-langages-fonctionnels.html
Co-fondateur
Lead-architect
far@normation.com @fanf42
François ARMAND
3. Normation – CC-BY-SA
normation.com 3
De quoi va-t-on parler ?
q Pas une présentation de Scala
q Pas une présentation technique
q Plutôt l'histoire de Rudder et de Scala
4. Normation – CC-BY-SA
normation.com 4
Projet Rudder : retour sur 4 ans de Scala
Rudder ?
François ARMAND
Directeur R&D - Normation
far@normation.com
5. Normation – CC-BY-SA
normation.com 5
Rudder ?
Automatisation & conformité des
infrastructures informatiques
Configuration de système,
Gestion des changements,
Vérification...
www.rudder-project.org
6. Normation – CC-BY-SA
normation.com 6
Les trois approches de la configuration
1. L'artisanat 2. La duplication 3. La gestion centrale
q Adaptable à chaque besoin
q Solution sur mesure
q Attention au détail
q Problème d'échelle
q La répétition n'est pas un
point fort des humains
q Partage du savoir
Configuration à la main,
aux « petits oignons »
É V O L U T I O N
q Gain de temps à partir du
deuxième déploiement
q Environnements identiques
q Adaptation des paramètres
q Gestion des changements
q Compatibilité des
formats d'image
Une installation « parfaite »,
reproduite à l'identique
q Contrôle centralisé
q Gestion des changements
q Vérification et reporting
q Partage du savoir
q Agent sur chaque serveur
q Montée en compétences
Configuration automatique,
pilotée depuis un point
7. Normation – CC-BY-SA
normation.com 8
Rudder : objectifs
Faciliter la gestion de configuration
et propager son utilisation
Étendre les bénéfices
de la
gestion de configuration
à
une population plus large
Managers
Sysadmins
juniors
Non
experts
Baisser le coût d'entrée
pour
apprendre et utiliser
la
gestion de configuration
Utilisation
simplifiée
Puissance
conservée
8. Normation – CC-BY-SA
normation.com 9
Projet Rudder : retour sur 4 ans de Scala
Scala ?
François ARMAND
Directeur R&D - Normation
far@normation.com
9. Normation – CC-BY-SA
normation.com 10
qScala : le langage
On passe !
The Scala and FPL friendly event in Paris!
October 24th and 25th, 2013. Paris, France
10. Normation – CC-BY-SA
normation.com 11
Projet Rudder : retour sur 4 ans de Scala
Pourquoi Scala ?
François ARMAND
Directeur R&D - Normation
far@normation.com
14. Normation – CC-BY-SA
normation.com 15
Nous sommes en 2009...
q Avec un 7 !
q comme « on n'a pas encore refait les collections »
q on casse la compatibilité binaire les semaines paires
– parfois les semaines impaires, aussi
q IDE inexistants
– il y a bien un plugin Eclipse
– mais c'est un projet de PhD
– qui ne fonctionne pas réellement...
16. Normation – CC-BY-SA
normation.com 17
Nous sommes en 2009...
q Personne n'utilise
Scala en entreprise...
q Enfin si :
Pas encore Twitter ni Foursquare
Novell Pulse Mimesis Republic
19. Normation – CC-BY-SA
normation.com 20
Pourquoi Scala ? (en vrai)
q Start-up, le produit avant tout
q Ne pas être contraint par le langage ni l'environnement de
développement
q Pouvoir facilement trouver des compétences
q Dans un écosystème dynamique
q Choix naturel :
q Java.
q Sisi.
20. Normation – CC-BY-SA
normation.com 21
Pourquoi Scala ? (en vrai)
q Pour rigoler : en Scala, possible ?
q Base terminée en 2h et 50 lignes
+ =
JAX-P / XSD
Xstream
SAX/StAX
21. Normation – CC-BY-SA
normation.com 22
Pourquoi Scala ? (en vrai)
q On a adoré,
q 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 rapide
Peu de boilerplate
Apprendre à nouveau
23. Normation – CC-BY-SA
normation.com 24
Projet Rudder : retour sur 4 ans de Scala
Et alors, dans la durée, ça
donne quoi ?
François ARMAND
Directeur R&D - Normation
far@normation.com
24. Normation – CC-BY-SA
normation.com 25
Grandir avec un écosystème naissant
q Pleins de côtés sympas
q Esprit tribu, tout le monde se connait
q les premiers Scala Days
– Sentir un élan, un bouillonnement
q la création du PSUG
q les idées folles de remises en cause du monde (JavaEE...)
q Communauté
Brillante Dynamique Horizon divers
Parfois Rugueuse
25. Normation – CC-BY-SA
normation.com 26
Grandir avec un écosystème naissant
q Des côtés moins sympa :
q La lenteur de la compilation (toujours)
q la compatibilité binaire inexistante
q les bugs du compilo (nombreux au début)
q l'outillage inexistant
q les intégristes Java qui n'essaient pas de comprendre
– mais critiquent abondamment.
26. Normation – CC-BY-SA
normation.com 27
Grandir avec un écosystème naissant
q Finalement, voir la sauce qui prend
q
q , et pleins dautres frameworks
q La start-up du jour (par exemple )
q Les grosses boites : , , …
q Les scala-days de plus en plus grands
q Le nombre de présentations et d'UG qui explose
q L'apparition dans les radars « mainstream »
q Boost de motivation, d'idées, de possibilités
($4M pour développer Scala)
27. Normation – CC-BY-SA
normation.com 28
qGrandir avec un écosystème naissant
q Et le recrutement ?
q Personnelement, peu de recul :
– Uniquement 5 (anciens) stagiaires & alternants
– Aucune intégration de développeur expérimenté
q Candidats : excellents profils
q Aucun problème de montée en compétence sur Scala
q Evolution du marché :
q Aujourd'hui :
– embaucher 5 stars : aucun problèmes,
– monter une équipe de 20 personnes : très difficile.
« Hot developers use Scala »
Anthony Rose
28. Normation – CC-BY-SA
normation.com 29
Projet Rudder : retour sur 4 ans de Scala
OK, mais le code, alors ?
François ARMAND
Directeur R&D - Normation
far@normation.com
29. Normation – CC-BY-SA
normation.com 30
Scala way of life
q Favorise l'immutabilité et la composabilité
q Favorise l'intention par le typage
q Case class : la bonne structure de données au bon moment
q « un identifiant n'est pas une String »
getPeople(id : PeopleId) : Either[ Error, Option[People] ]
q Framework de collection über puissant
q Les algorithmes tels que vous les pensez
30. Normation – CC-BY-SA
normation.com 31
Utiliser Scala permet....
q Modéliser des systèmes et leurs intéractions
q Composition de flows de données
q Ajouter simplement des fonctionnalités transverses
q Workflow de validation de demandes de changement : 3 semaines à 3
q Algorithmes / sorties utilisateurs
q Refactorer
31. Normation – CC-BY-SA
normation.com 32
Evolution du code : refactoring
q Rudder : 3 refactorings majeurs
q 80 % des ~35kloc touchées
q Passés magiquement
q Le métier reste complexe
q Mais ça compile, c'est bon (presque)
q Pas de craintes de refactorer
q Même si la couverture de tests n'est pas top
(c'est mal)
q Comme dans Git, naturel de faire des branches
36. Normation – CC-BY-SA
normation.com 37
Projet Rudder : retour sur 4 ans de Scala
Et les technos ?
François ARMAND
Directeur R&D - Normation
far@normation.com
38. Normation – CC-BY-SA
normation.com 39
Projet Rudder : retour sur 4 ans de Scala
Questions ?
François ARMAND
Directeur R&D - Normation
far@normation.com