15-05-2011, 10:28 AM
Je te fais un petit topo.
Heroku est une plateforme d'hébergement en cloud pour des applications Ruby. Le système se charge de la partie Web : il sert les pages avec Nginx qui fait en plus office de reverse proxy (pour cacher les ressources statiques et/ou servies avec des headers de mise en cache) et de load balancer entre les machines virtuelles qui hébergent ton application (les dynos, que tu peux faire varier en nombre).
Quand tu push sur Heroku, il détecte les fichiers utiles à une application Ruby (config.ru et gemfile), installe les dépendances, etc. puis lance l'application.
Par défaut, ton application tourne sur un un unique dyno (qui est offert). Si tu as besoin de plus de puissance (que ce soit de manière permanente ou temporaire), tu peux demander d'autres dynos : ils sont alors facturés au prorata du temps pendant lequel tu les utilises (à la seconde près). Le désavantage de tourner sur un seul dyno, c'est qu'après 10 minutes d'inactivité, ton application est déchargée de la RAM, ce qui impliquera un chargement d'environ 5 secondes pour le prochain visiteur, m'enfin comme c'est gratos et que ça rend de fiers services, on ne s'en plaint pas. ^^
En plus de ces dynos, il y a les works, qui sont des processus qui te permettent de faire tourner des tâches à côté : très pratiques pour des système de queue et/ou de background jobs. Le mode de financement est le même que pour les dynos.
Le côté génial de ces workers/dynos, c'est donc que tu peux modifier les capacités de ton serveur à la volée très simplement. Tu peux le faire via la commande heroku installée sur ta machine mais également directement depuis ton application. Ainsi, si tu as besoin d'envoyer un tas de mails depuis ton application, tu peux activer un (ou plusieurs) workers, envoyer tes mails dans un processus séparé et désactiver le worker après l'envoi. Très économique ! :p
Heroku est une plateforme d'hébergement en cloud pour des applications Ruby. Le système se charge de la partie Web : il sert les pages avec Nginx qui fait en plus office de reverse proxy (pour cacher les ressources statiques et/ou servies avec des headers de mise en cache) et de load balancer entre les machines virtuelles qui hébergent ton application (les dynos, que tu peux faire varier en nombre).
Quand tu push sur Heroku, il détecte les fichiers utiles à une application Ruby (config.ru et gemfile), installe les dépendances, etc. puis lance l'application.
Par défaut, ton application tourne sur un un unique dyno (qui est offert). Si tu as besoin de plus de puissance (que ce soit de manière permanente ou temporaire), tu peux demander d'autres dynos : ils sont alors facturés au prorata du temps pendant lequel tu les utilises (à la seconde près). Le désavantage de tourner sur un seul dyno, c'est qu'après 10 minutes d'inactivité, ton application est déchargée de la RAM, ce qui impliquera un chargement d'environ 5 secondes pour le prochain visiteur, m'enfin comme c'est gratos et que ça rend de fiers services, on ne s'en plaint pas. ^^
En plus de ces dynos, il y a les works, qui sont des processus qui te permettent de faire tourner des tâches à côté : très pratiques pour des système de queue et/ou de background jobs. Le mode de financement est le même que pour les dynos.
Le côté génial de ces workers/dynos, c'est donc que tu peux modifier les capacités de ton serveur à la volée très simplement. Tu peux le faire via la commande heroku installée sur ta machine mais également directement depuis ton application. Ainsi, si tu as besoin d'envoyer un tas de mails depuis ton application, tu peux activer un (ou plusieurs) workers, envoyer tes mails dans un processus séparé et désactiver le worker après l'envoi. Très économique ! :p