J'ai deux systèmes en production sur Heroku (1 Dyno, 6 Dynos respectivement), et je suis sur le point de lancer un projet assez important utilisant la plateforme.
Je l'aime absolument.
Je veux me concentrer sur la valeur que j'apporte dans la chaîne - une application soigneusement conçue, avec une expérience utilisateur et une assistance de qualité.
La véritable valeur de Heroku est que tous les frais d'administration sont supprimés. J'ai déjà travaillé avec un hébergement VPS (Slicehost, Linode) et j'ai constaté que le réglage d'une seule pile d'applications peut être vraiment très compliqué sans une ressource sysadmin dédiée. Une fois que vous commencez à entrer dans le domaine des serveurs multiples, vous pouvez vous retrouver embourbé dans l'administration du système et non dans le développement et le support des applications.
Heroku fournit une pile qui comprend un proxy inverse et un cache http en plus de la gestion des processus de l'application Rails ... la mise en place de tout cela dans un environnement VPS serait une entreprise sérieuse et coûteuse.
Si une ressource sysadmin coûte 100 $/heure et qu'un banc d'essai coûte 36 $/mois, il est possible de lancer des bancs d'essai sur votre application avant que le rapport coût-bénéfice ne commence à changer.
Les prix du stockage viennent également d'être modifiés : vous disposez désormais de 20 Go de ressources partagées pour la base de données pour 15 dollars par mois, ce qui change vraiment la donne pour de nombreuses petites applications.
La mémoire n'est plus un souci ... un banc d'essai semble avoir automatiquement assez de mémoire pour fonctionner. C'est logique : Thin, Mongrel, Passenger chargent tous l'instance de l'application Rails en mémoire, ce qui rend les besoins en mémoire assez prévisibles (en dehors des fuites de mémoire, bien sûr). Avec Heroku, s'il y a un problème avec une instance, elle est simplement arrêtée et une nouvelle instance est démarrée - tout cela se passe de manière transparente.
L'autre grande victoire pour moi est que le mécanisme de routage de Heroku garantit une réponse presque linéaire... si une demande prend 100 ms à traiter, votre réponse sera essentiellement de 10 demandes par seconde. Le maillage de routage de Heroku garantit que vos processus ne sont pas surchargés dans des limites de charge raisonnables (si vous êtes vraiment assailli, vous devrez ajouter des ressources, mais les charges en rafale à court terme semblent être très bien gérées).
Sur mon projet actuel, j'ai testé les performances de chaque fonctionnalité majeure au fur et à mesure de sa construction afin d'avoir une idée des performances globales du système, et la pile elle-même est assez facile à utiliser - les requêtes non réglées de lecture intensive dans mon application ont des temps de réponse inférieurs à 50 ms (dyno unique, base de données partagée).
Je n'ai pas encore rencontré de goulot d'étranglement dans la plate-forme elle-même.
Tout ceci étant dit, l'hypothèse sous-jacente avec Heroku est que vous avez une application rails "vanille" - base de données, application CRUD, etc. etc. Certaines choses ne sont tout simplement pas possibles sur Heroku.
Il y a un certain point dans l'échelle où l'exploitation de vos propres serveurs (en particulier en dehors d'une pile virtualisée) devient beaucoup plus rentable (le passage récent de GitHub d'EngineYard à RackSpace souligne ce point).
Comme mentionné par @theIV, la meilleure chose à faire est d'essayer et de voir. Il est très facile de configurer une application, et il n'y a aucun changement d'architecture requis (à part le fait de ne pas utiliser le système de fichiers local (ce qui n'est pas un problème pour moi car je pousse toujours les fichiers générés par l'utilisateur vers Amazon S3). Le module complémentaire de base NewRelic RPM est gratuit, ce qui vous permet d'avoir un aperçu instantané des performances de votre application.