Par , le 12 juin 2015

Profilez votre application RubyOnRails !

Développement | 0

Lorsqu’on développe une application, on veut qu’elle soit performante. En effet l’utilisateur n’a, la plupart du temps, aucune obligation d’aller sur votre site, et s’il doit patienter à chaque clic, il se contentera de cliquer sur le résultat Google suivant et vous l’aurez perdu.

Parmi les techniques pour évaluer les performances d’un programme informatique, on peut se tourner vers un benchmark classique : on chronomètre le temps de réponse d’un bout de code ou de tout le programme ; ou aller plus loin et profiler l’application, c’est à dire regarder la forme de son éxécution. Quelles sont les méthodes les plus éxécutées ? Où sont elles appelées ? Sont-elles optimales ? Cela permet de se concentrer sur ce qui est réellement important dans l’application.

Dans cet article, je vais vous présenter un aperçu de quelques solutions qui existent afin que votre application RubyOnRails reste performante tout au long du développement et pendant la production.


Les outils de profiling

Jetons maintenant un œil à deux outils de profiling pour Rails.

Profile it

Profile it est composé d’une gem et d’une extension Chrome, développé par Scout. Ce service est gratuit pour le moment et va permettre, en développement comme en production, de garder un œil sur le temps de réponses des différentes pages du site afin de continuer à offrir aux utilisateurs une expérience de navigation agréable.

+ En 15 minutes chrono en main vous aurez une idée des temps de chargement de toutes vos pages dans une interface au design agréable.

Peu configurable, sera payant en production à la fin de la beta publique.

profilage

Rack::MiniProfiler

Tout comme profile it cette gem développée par Sam Saffron permet de connaître le temps de réponse des pages, et de faire un profiling très complet de l’application notamment à l’aide de flamegraphs.

Cette gem est destinée aux développeurs désireux de détecter les goulots d’étranglement* de leur application en profilant des méthodes en particulier.

+ cet outil vous permet d’aller vraiment très loin et une fois pris en main, les flamegraphs racontent énormement de choses sur l’éxécution de votre application

il peut s’avérer compliqué de customiser le profiling

(* on appelle goulot d’étranglement (ou bottleneck) une portion de programme peu efficace limitant les performances du programme)

Tests de performance

Vous avez la possibilité dans Rails et dans Ruby en général d’écrire des tests de performance, avec minitest par exemple. C’est un bon moyen de monitorer l’évolution des performances de vos méthodes et de s’assurer de la non régression de votre application en termes de performances.


Optimisons : Bullet

Parmi les facteurs ayant un rôle important dans les performances d’une application : les requêtes SQL. Quand les modèles sont fortement couplés, il est important d’optimiser le nombre de requêtes et notamment de traquer et d’éliminer les requêtes N+1.

Bullet est une gem à utiliser en développement et en test, elle détecte pour vous, des optimisations possibles dans vos requêtes SQL :

La configuration de Bullet se fait dans le fichier de configuration de l’environnement où l’on souhaite l’utiliser, et vous pourrez choisir par exemple :

  • d’activer ou non la gem
  • les détecteurs que vous souhaitez activer
  • la manière dont elle vous avertit parmi par exemple : une alerte JS, des logs dans un fichier dédié ou dans les logs du serveur Rails etc…

Conclusion

Selon vos besoins, vous pourrez mettre en place une ou plusieurs des solutions présentées. Dans tous les cas, vous devez vous soucier de la performance de votre application. En effet peu importe le degré d’innovation des features que vous proposerez si vous mettez l’utilisateur face à une page blanche, il naviguera vers un site concurrent.

Partager l'article :

Vous souhaitez réagir ?

En soumettant ce commentaire vous donnez à Silicon Salad le droit de citer vos propos ainsi que votre nom/site. Tous commentaires dégradants ou hors-sujet peuvent-être supprimés par décision de l’auteur. Votre e-mail, ne sert qu’à des fins d’authentification, il ne peut-être ni partagé ni diffusé.
Vous pouvez commenter avec la syntaxe Markdown. En savoir plus

Article précédent
Google Shopping et certification : petit tour d’horizon.