mercredi 16 avril 2014

A Typesafe Activator plugin for Play-Slick

Typesafe Activator is a very cool tool to bootstrap applications built with the Typesafe stack (Scala, Play, Akka...).

I've just published an activator template for play-slick : https://typesafe.com/activator/template/play-slick-quickstart

Slick is the default library for databases access in the Typesafe stack. This template may help you integrate Play Framework and Slick to create a new Web application or a JSON API.

Play relies on asynchronous and non blocking IO. As Slick, uses only blocking IO (it uses on JDBC drivers under the hood), the template uses a DBAction to provide a "slick execution context" with a bigger thread pool to execute the blocking queries. This way you can use Slick without thinking about this kind of problem.

 Enjoy!

lundi 13 janvier 2014

How to monitor a Play Framework app in production

Today, we will try to explain how to monitor a play application with Metrics and JMX.

Metrics-play

Metrics-play is a Play plugin for the Metrics library.

This plugin provides a lot of information about requests (count, response time, requests/second, errors…) and JVM (CPU, memory...)

mardi 8 octobre 2013

Scala : quelques cheat sheets

Il m'arrive souvent d'utiliser Gist pour stocker quelques idées, exemples ou astuces. Comme cela peut servir à d'autres personnes, je me suis dit que je pourrais poser quelques gists sur Scala ici.

mercredi 2 octobre 2013

Java EE 7 : Bonne nouvelle?

Oracle a présenté en Juin la version finale de Java EE 7, et on peut déjà l'utiliser avec Glassfish 4.
Cela fait très longtemps que je n'ai pas parlé de Java EE (ou de Spring) sur ce blog.
En effet d'autres technologies bien plus innovantes ont fait leur apparition sur la JVM côté serveur depuis quelques années. Cependant je vous propose aujourd'hui un petit billet d'humeur sur cette nouvelle spécification.

Certains voient Java EE 7 comme une déception car un certain nombre de fonctionnalités liées au Cloud ont été abandonnées pour cette release.
Personnellement, je vois les choses un peu différemment. Il existe déjà des façons efficaces de travailler en mode Cloud et multi-tenant, et standardiser un tel fonctionnement au niveau des serveurs d'application ne me semble être d'une grande urgence.

Néanmoins d'autres fonctionnalités intéressantes font leur apparition dans Java EE 7.

Vous pouvez trouver la liste complète des modifications ici.
A côté des mises à jour de JSF, JPA, EJB... 3 spécifications retiennent mon attention.

mardi 14 mai 2013

Calcul distribué avec Spark

Spark est un outil de calcul distribué, permettant de lancer de gros calculs sur un cluster.

D'après ses développeurs, Spark est jusqu'à 100 fois plus rapide qu'Hadoop pour effectuer le même genre de taches.
Spark repose sur HDFS (Hadoop Distributed File System) mais les calculs se font en mémoire pour accélérer les traitements. Le but de cette accélération est de pouvoir effectuer des requêtes en temps réel sur de très gros volumes de données, par exemple sur les logs d'accès d'un site Internet. L'analyse des données en temps réel, le rêve quand on fait de la BI!

D'autres applications sont possibles comme le machine learning ou le data mining. Mais commençons par mettre les mains dans le cambouis!
Le coeur de Spark est écrit en Scala mais des API Java et Python sont également proposées pour interagir avec le framework. Un shell est fourni par défaut, il permet de manipuler facilement l'API Scala de Spark. Très pratique pour faire des tests!

Pour découvrir Spark, commençons par lire un fichier en local :
val textFile = sc.textFile("README.md")
Note : sc est un objet disponible par défaut dans le shell, il correspond au contexte Spark courant.

lundi 18 mars 2013

Comparaison d'Anorm et Slick pour l'accès aux bases de données relationnelles en Scala

Anorm et Slick sont 2 librairies Scala qui permettent d'intéragir avec des bases de données relationnelles.
La première fait partie du framework Play (mais peut être utilisée séparément  et propose d'écrire les requêtes en utilisant directement le langage SQL, la deuxième est l'outil officiel de la stack TypeSafe (la société derrière le langage Scala) et propose un DSL (Domain Specific Langage) plus fortement typé, pour générer du SQL.

Nous allons comparer ces 2 outils et voir comment implémenter les cas d'utilisation classiques à travers l' exemple de l'application Computer Database.

mercredi 6 février 2013

Un plugin Slick pour Play 2.1

Un plugin Slick pour Play 2.1 a été initié par Typesafe, il permet d'utiliser Slick (un librairie d'accès aux bases de données relationnelles en Scala) facilement au sein de Play, avec en prime la génération automatique du schéma (évolutions). Le but ultime est que son code soit intégré à Play 2.2 pour que Slick soit utilisable par défaut. C'est encore au stade Beta mais vous pouvez déjà jouer avec en le récupérant ici : https://github.com/freekh/play-slick.

Si ça vous intéresse n'hésitez pas à contribuer, l'auteur Fredrik Ekholdt est très abordable, il vient d'ailleurs d'intégrer au plugin ma modeste contribution permettant d'abstraire le driver jdbc utilisé (et donc de switcher facilement d'une base à une autre), donc merci Fredrik :)