Réinventer la roue : blog sur mesure

Cela fait bien longtemps que je n’ai pas écris sur mon blog. L’année 2010 fut chargée et je n’ai eu que peu de temps à consacrer à ce blog et encore moins à l’idée que j’avais en tête: faire un moteur de blog avec mes petites mains. L’objectif affiché est de réinventer la roue. Mais contrairement à mon métier de tout les jours qui impose un certain pragmatisme pour mener à bien des projets réels: ici tout est expérimental. N’ayant ni contrainte de temps ni de cadre technique imposé, je me suis lâché. En revanche, tout est très conventionnel du point de vue fonctionnel. Je m’inspire beaucoup des plateformes Blogger et Eklablog mais également de l’outil WordPress dont la réputation n’est plus à faire.

Le blog sur lequel j’écris possède donc le strict nécessaire: publication d’articles, commentaires et flux RSS. A l’avenir viendront s’ajouter la gestion des tags et un workflow de publication plus élaboré (brouillon, auteur, gestion multi-langue) ainsi que l’hébergement d’images (dans le cloud). Une version mobile et TV seront également de la partie.

Concernant la technique, j’ai fait le choix de partir sur des technologies innovantes encore peu utilisées dans le monde de l’entreprise bien que cela devienne de moins en moins vrai maintenant. Pour commencer, l’application est développée avec le framework Play! Il s’agit d’un framework Web sur lequel j’ai déjà écris sur mon ancien blog en 2008. Je reviendrais dessus: il y a beaucoup à dire et de nombreuses nouveautés ont fait leur apparition depuis.

Pour faire (très) court, il s’agit d’un framework Java (non J2EE) apportant tout le nécessaire pour développer des applications Web selon le modèle MVC. Sa grande force est d’augmenter la productivité du développeur s’appuyant sur REST pour bâtir des applications stateless réellement scalable et a maintenabilité augmentée. Je l’utilise dès que j’en ai l’opportunité.

Pour l’hébergement, j’ai opté pour le cloud computing avec Google App Engine. La grande force de Play! sur ce sujet est de fournir un module GAE apportant une solution clef en main pour déployer n’importe quelle application Play! dans le nuage de la compagnie de Mountain View. Il y a bien quelques contraintes à respecter dont la plus impactante est l’absence de base de données relationnels. En effet, Google nous propose un datastore basé sur sa solution Big Table. J’ai choisis de me baser sur la librairie Siena qui propose une couche ORM implémentant également la solution cloud concurrente SimpleDB d’Amazon. Un module est également disponible pour Play!. Je ferais un article détaillé sur GAE datastore et Siena. La syntaxe est vraiment plaisante et finalement pas si éloignée de l’API que propose Play! (qui ne fait qu’étendre JPA en proposant des méthodes plus intuitives). Google App Engine a également quelques restrictions concernant Java, notamment l’absence de support de la librairie AWT. Cela m’a empêcher dans un premier temps de réutiliser un mécanisme de captcha que j’avais développé pour la validation des commentaires. Finalement pour ce besoin précis, j’ai préférer me baser sur la solution SaaS Disqus et je ne le regrette pas.

Le code source de ce projet est disponible sur la plateforme GitHub. Il est loin d’être parfait mais évoluera à l’avenir et notamment des tests fonctionnels et unitaires seront écrits et une plateforme d’intégration basée sur Jenkins (RIP Hudson) sera mise en place. Si vous avez des questions ou des suggestions, n’hésitez pas à laisser un commentaire.

Petite note aux courageux qui auront lu le billet jusqu’au bout, je serais présent à la soirée Play! framework organisé par le JUG de Nantes le jeudi 31 mars prochain. Elle sera présenté par l’auteur du framework, Guillaume Bort. Venez nombreux!

Go back to top