Le Touilleur Express

  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Quelques chiffres sur un projet Play2/Scala, 15 mois après

17 septembre, 2013

Pour le fun, voici quelques statistiques sur Zaptravel, projet sur lequel je travaille depuis mai 2012. La partie web de Zaptravel, le site Web ainsi que la partie API, est un projet Play2/Scala. En ce moment, nous sommes 2 développeurs sur cette partie. Mathieu s’occupe de la partie Front, et je travaille sur le reste. Après 15 mois de travail, sans imaginer qu’il faudrait sans doute nettoyer un peu le code, le projet représente 243 fichiers Scala et 8 fichiers Java. Cela fait un volume d’environ 23500 lignes de Scala (view+model+controller). Au quotidien, je parle aussi avec l’expérience de mes 16 années, je n’ai pas le sentiment d’être perdu dans la quantité de code. La maintenance et les modifications sont plutôt aisées. Scala étant moins verbeux que Java, je peux confirmer que sur ce type de projet Web, il y a déjà un gain de maintenance. J’estime à 30% le gain en terme de quantité de code. C’est autant de code à lire en moins lorsque l’on travaille. C’est aussi plus simple à modifier et à relire.

Les pages Webs (HTML+Scala) représentent environ 9700 lignes (sans les commentaires, les lignes vides, etc). Pour ce qui est de la partie controllers du projet, 4473 lignes de Scala. Pour la partie models, nous n’utilisons que Redis. Pas de SQL donc. Cela représente 6700 lignes de Scala. Je suis adepte du pattern de programmation où mon modèle est aussi orienté service. Ce qui veut dire que l’essentiel du code métier est donc du coté models. En regardant le code, tout ce qui est technique reste dans le package « controllers ». Tout ce qui est lié à Zaptravel, à part la partie Redis, se retrouve dans le package models.

zaptravel_play2

Une compilation complète du projet prend 74 secondes (MacbookPro i7 8 core 2.3Ghz, disque SSD, avec 8Go de ram). Une compilation partielle, effectuée par le framework lorsque je travaille sur certaines parties, prend une à deux secondes. Les compilations complètes sont assez lentes, surtout lorsque je compare cela à mon expérience avec Play! 1 en Java.

Depuis un an, j’ai tout un tas de techniques pour coder plus efficacement. Tout d’abord j’utilise IDEA IntelliJ, parfois Sublime Text 2 . J’ai configuré les 2 outils afin de sauvegarder mes modifications dès que je perds le focus de la fenêtre. Ensuite j’ai installé LiveReload pour recharger la fenêtre de mon navigateur automatiquement. Enfin concernant Play2, je développe avec le mode « triggered execution » de SBT. Pour cela, je lance play, puis une fois que l’invité de SBT est prêt, je démarre mon application avec « ~ run ». Ainsi, dès qu’une modification est sauvegardée, Play2 recompile. Avec tout ceci, je peux coder et avancer rapidement.

Articles similaires:

Exemple Scala et Play2 : composition de services Web Default ThumbnailQuelques livres pour apprendre Scala Default ThumbnailLe gars qui connaît Scala et celui qui débute Default ThumbnailPrésentation de Play! Scala au Scala User Group
  • Chafik 18 septembre 2013 at 12 h 31 min

    Comme d’habitude, article toujours très instructif 🙂

    Par contre, j’ai un peu de mal à me faire au mélange dans les modèles de la partie « modèle » en elle-même ainsi que la partie accès aux données. Les finders static ne me semblent pas naturels (peut-être à cause de mon usage de Spring et des @Repository, @Service sur des projets pros…).

    Du coup j’ai préféré garder cette structure pour garder mes classes de modèle les plus light possible. Je sais pas si c’est vraiment une bonne idée.

    Je vois partout sur les blogs l’usage de Play2 avec Scala, mais moins l’usage Play2/Java. Est-ce que ça signifie que Play2/Java est juste fait pour contenter tout le monde et qu’il va tendre à disparaître ou il va vraiment durer ?

  • Nicolas Martignole 18 septembre 2013 at 13 h 17 min

    @Chafik Je ne sais pas ce qui sera prévu pour Play2 ou Play3. Mon expérience personnelle sur Play2/Java, c’est que je préfère Play1/Java. Par contre, Play2/Scala est définitivement un bon choix, si Scala est un choix pertinent pour votre projet (ou votre produit).

  • Chafik 18 septembre 2013 at 14 h 42 min

    Je n’ai malheureusement aucune notion de Scala donc difficile d’en juger, il va falloir que je lise quelques articles dessus pour voir de plus près. Je vais remonter dans les archives du blog pour voir. Merci.

  • Julien 23 septembre 2013 at 22 h 18 min

    Toujours appréciable ce retour d’experience.

  • Mecheri 21 octobre 2013 at 17 h 28 min

    Bonjour,

    J’ai parcouru votre blog suite à une recherche sur un retour d’expérience du framework Play. Pourriez-vous indiquez le temps de compilation (j’ai lu ici et là des temps assez lents pour quelques fichiers). J’ai également télécharger une version et compiler sur mon ordi: la compilation d’un sample de base a pris plus de temps que je pensais 🙁 et l’exécution de la page la première fois était assez lente. Pourriez-vous confirmer ou non suite à votre expérience.
    Sur le côté model: comment développez-vous votre métier ? Est ce uniquement des services web ?
    Dsl si ces questions semblent basiques… j’ai envie de découvrir ce framework.

    Merci.
    YM

Derniers articles

  • Vis ma vie de Staff/Principal Engineer

    Suite de l’article précédent sur le Staff Engineer. Aujourd’hui, voyons un peu

    20 juillet, 2022
  • Inari

    Devenir Staff Engineer : comment et pourquoi ?

    Après une dizaine d’années en tant que développeur, vous serez un jour

    17 juillet, 2022
  • WeAreDevelopers 2022, conférence à Berlin – jour 1

    Il est 8h40, 19 degrés, vous êtes à Berlin. La queue dehors

    24 juin, 2022

Tweets @nmartignole

  •  @fanf42  Excellent 👌

    7 hours ago
  • RT  @iambdxoul :  @TheHackersNews  Lmao

    1 day ago
  • RT  @PR0GRAMMERHUM0R : Finally a GPT feature useful for work https://t.co/8U9FSUwKg5 https://t.co/GkUIJi7qtW

    1 day ago

Mots clés

Apple (32) Architecture (13) Big Data (5) Conference (8) Devoxx (55) Dev Web (37) Doctolib (2) geekevent (1) groovy (2) Innoteria (11) Java (517) Linux (10) Non classé (14) Perso (266) Recrutement (3) Scala (30) scrum (43) Société (3) Startup (20) Web 2.0 (67)

Le Touilleur Express

Blog par Nicolas Martignole

Contactez-moi : nicolas@touilleur-express.fr

Suivez-moi sur Twitter : @nmartignole

Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
  • A propos de l’auteur
  • A propos du Touilleur Express
  • Log In
  • My Account
  • My Profile
  • Reset Password

Le Touilleur Express