Le blog

Projet startup interne: SocialTennis

Voila, cela fait maintenant plusieurs semaines que je n’accepte plus de nouveaux clients. Je me suis décidé une bonne fois pour toute à mener à terme deux projets labelisés NoCoffee.

Le premier est évidemment LocomotiveCMS. Celui-ci va prendre un nouvel élan à partir de décembre. J’écrirai d’ici là un post à ce sujet.

Le deuxième projet sur lequel je planche depuis maintenant deux bonnes semaines fait le pont entre mon travail de codeur et une de mes passions sportives, le tennis. Le concept est expliqué sur le blog de SocialTennis: http://blog.socialtennis.fr/. Si vous êtes intéressé(e) par le concept, n’hésitez pas à me contacter.

Pour ce projet, j’ai essayé de minimiser les coûts de développement et de production. Par exemple, SocialTennis coûte à peu près 0 euro par mois en production, difficile de faire mieux à vrai dire ! Je reviendrai sur ce point plus tard dans ce billet.

Pour faire baisser les coûts de développement, je n’ai pas de recette miracle à part utiliser les bons gems, ceux qui font gagner en productivité. Voici, la liste des principaux gems que j’utilise sur SocialTennis:

  • HAML: il remplace le moteur de templates par défaut de Rails (erb). Les vues sont alors nettement plus faciles à écrire et à lire. Le code HTML généré est d’excellente qualité (impossible d’avoir une balise HTML non fermée).
    Le seul petit défaut serait qu’il est un peu plus lent mais les temps de réponse pour générer une page sur SocialTennis sont très bons….
    Il est souvent utilisé en relation avec SASS pour écrire les CSS. 
  • Devise: la solution ultime pour l’authentification. Tout est (pratiquement) géré: fonction mot de passe oublié, …etc. Il possède de nombreuses extensions pour oauth en autre. En outre, il fonctionne avec ActiveRecord, Mongoid et MongoMapper. Indispensable. 
  • InheritedResources: grâce à lui, les contrôleurs de type CRUD deviennent ridiculement petits ! 
  • Formtastic: là aussi, je suis toujours dans la logique d’écrire le moins de code possible. Le principe de ce plugin est d’améliorer les helpers de base pour les formulaires Rails. Ainsi, seules quelques lignes de code suffisent pour obtenir un formulaire sémantiquement correct (utilisation des balises Fieldset et Legend par exemple), facilement “customizable” grâce aux CSS. De plus, il intègre parfaitement I18n.
  • RailsConfig: Plus besoin d’écrire son propre module de configuration d’application qui gère le multi-environnement, tout est déjà fait ici.

Cependant, j’ai un petit bémol à apporter. J’ai dû quand même me plonger dans le code de certains de ces gems à de certaines occasions (bugs ou fonctionnalités non suffisament documentées). Rien de bien méchant.

Pour information, SocialTennis s’appuie sur la dernière version de Rails (Rails 3.0.3). Quant à la base de données, c’est du MongoDB, parfaitement adapté pour ce type de projet.

Comment arriver à ne payer quasiment rien en production ? Facile, Heroku !

Ce service est vraiment formidable. Pour 0 euro, vous avez votre application hébergée chez Heroku avec un niveau de prestation par défaut assez élevé. Vous n’avez plus besoin de passer temps à installer votre serveur.
Heroku vous offre gratuitement une base de données de type Postgresql ou bien MongoDB (par l’intermédaire de MongoHQ). Votre application requiert ruby 1.9 ? Pas de souci, Heroku vous donne le choix de votre version de Ruby.

En revanche, si vous autorisez l’upload de fichiers sur votre application (par exemple les avatars dans SocialTennis) alors il vous faudra souscrire à un service tiers de type Amazon S3. Mais les prix sont tellement bas que nous n’allez pas vous ruiner avec cela.

Les performances sur Heroku sont très bonnes et un seul dyno (instance Heroku) est largement suffisant. J’avais hébergé, il y a quelques temps, une application sur un VPS (900 Mo de RAM) avant de la migrer sur Heroku. La version “Heroku” était nettement plus rapide.

Dernier point. Je conseille très vivement d’utiliser Jammit avec Heroku. Il compresse tous vos fichiers javascripts et css. Double effet “kisskool”, vous réduisez à la fois le nombre et la taille de ces fichiers. Votre dyno vous en sera reconnaissant.

Notes

  1. expert--seo a reblogué ce billet depuis nocoffee
  2. nocoffee a publié ce billet