Comparatif aws beanstalk vs heroku

Amazon beanstalk et Heroku sont deux services cloud couramment utilisés qui nous permettent de déployer, surveiller et faire évoluer des applications Web et mobiles.

Ces deux services fournissent des ressources de cloud computing et sont parfaits pour l’hébergement d’applications.

La question qui se pose, est quelle solution choisir selon pour ma problématique qui convient le mieux à mes besoins métiers.

Cet article va donc vous expliquer les forces et les faiblesses des deux solutions afin que vous puissiez par la suite plus facilement faire un choix.

Plongeons-nous dans les fonctionnalités d’AWS et Heroku – et considérons les solutions clés qu’ils offrent – pour trouver votre meilleure option!

AWS Elastic Beanstalk

AWS Elastic Beanstalk est le service PaaS d’AWS. Il permet de déployer et mettre à l’échelle des applications et services Web développés dans divers langage (Java, .NET, PHP, Node.js, Python, Ruby, Go)

En utilisant cette solution vous serez amené à charger votre code via git ou archive afin qu’Elastic Beanstalk effectue automatiquement les étapes du déploiement, le dimensionnement des capacités, l’équilibrage de la charge, le dimensionnement automatique et la surveillance de l’état de l’application.

Ce faisant, vous conservez la maîtrise totale des ressources AWS alimentant votre application et pouvez accéder aux ressources sous-jacentes à tout moment.

Il n’est généralement pas nécessaire de configurer le provisionnement de capacité, l’équilibrage de charge ou la mise à l’échelle, bien que vous puissiez toujours accéder à l’infrastructure et si nécessaire enregistrer plusieurs options de configuration pour votre application.

Elastic Beanstalk utilise des instances EC2 pour héberger votre application vous serez donc facturé en fonction des instances provisionnés.

Heroku

Heroku une solution PaaS basé sur du AWS. Elle offre aussi la possibilité de déployer et mettre à l’échelle ses applications dans les langages suivants (Ruby, Python, PHP, Clojure, Go, Java, Scala, and Node.js apps).

Cette solution est légèrement différente dans son utilisation, en effet, il faudra passer par le terminal et push votre application directement sur heroku via git.

Après cela, la magie opère, vous n’avez plus rien à vous préoccuper. Votre application, les certificats, le support et le CI/CD sont totalement gérés par la plateforme.

Si vos besoins augmentent, vous devrez toutefois notifier Heroku pour augmenter votre niveau de service (et donc votre facture). Tout cela se fait en une commande et ne demande aucune connaissance technique particulière.

Heroku s’occupe commodément des détails. Ainsi, vous pouvez consacrer tous vos efforts au développement d’applications. Vous n’avez besoin que d’un développeur Web – ou de plusieurs développeurs – pour créer une application et la pousser vers Heroku en utilisant Git. Toute la gestion se fait via l’interface de ligne de commande ou dans le tableau de bord.

Quand choisir Aws Elastic Beanstalk ou Heroku ?

Si vous êtes à l’état de conception, je vous conseille Heroku.

Heroku est beaucoup plus simple à utiliser qu’AWS Elastic Beanstalk. Vous n’avez pas besoin de penser à la gestion de l’infrastructure, contrairement à AWS beanstalk ou vous pouvez être amené à faire quelques modifications.

Heroku est génial pour les projets ou vous avez besoin de livrer le plus vite possible (POC, MVP). Le forfait gratuit suffira généralement à répondre à vos besoins.

À partir du moment ou vous commencez à avoir beaucoup de trafic, Heroku deviendra rapidement cher voir très cher. Le plus petit plan est à 7€ / mois, mais vous n’obtenez que 512 Mo de RAM.

Très rapidement, vous devrez passer au plan professionnel avec plusieurs dynos Standard (25 $ – 50 $ / dyno / mois) ou même Performance (250 $ – 500 $ / dyno / mois). Un dyno étant l’équivalent d’un petit container contenant votre application (un seul suffit rarement).

C’est pourquoi, si votre application consomme beaucoup de ressources (>4-8Go RAM) il peut être intéressant d’utiliser AWS Elastic Beanstack.

Le risque pour vous, sera de savoir gérer le support. Aws Elastic Beanstalk étant déployé de sorte à éviter les incidents, le risque de rencontrer un problème est faible. Cependant, en cas de problème si vous n’avez pas les compétences dans votre entreprises, vous devrez faire appel à un consultant et dans cette situation vos coûts explosent (700€/j pour un expert AWS à Paris).

Conclusion

Lors du choix entre AWS et Heroku, vous devez principalement tenir compte des coûts. La gestion de l’infrastructure vous coûtera-t-elle moins cher, ou est-il rentable de répondre sur une plate-forme prête (mais quelque peu coûteuse) qui gère votre infrastructure pour vous ?

Pour un projet court et simple, Heroku est probablement ce dont vous avez besoin, mais gardez à l’esprit que la mise à l’échelle coûte cher. Si votre application est fortement utilisé il est probablement préférable d’utiliser AWS, d’autant plus qu’Elastic Beanstalk vous aide beaucoup dans la configuration.

En résumé, je vous recommande d’utiliser AWS Elastic Beanstalk lorsque:

  • Vous avez besoin d’une flexibilité d’infrastructure dès le premier déploiement de votre application.
  • Vous pouvez vous permettre un ingénieur DevOps ou plusieurs ingénieurs DevOps pour gérer l’infrastructure.
  • Vous êtes prêt à consacrer plus de temps au déploiement de nouvelles versions de votre application.
  • Votre projet nécessite de grandes ressources informatiques.

Et je vous recommande d’utiliser Heroku lorsque:

  • Vous devez déployer et tester un produit minimum viable.
  • Vous devez améliorer votre application rapidement après avoir reçu les commentaires des utilisateurs.
  • Vous ne pouvez pas vous permettre un ingénieur (ou des ingénieurs) DevOps.
  • Votre projet n’exige pas autant de ressources de calcul.

Si vous choisissez Amazon Web Services, il est important de vous assurer que l’entreprise avec laquelle vous travaillez possède une expérience de la gestion de l’infrastructure AWS.

 

Lire d'autres articles de ce genre

Découvrir une autre façon de déployer et gérer vos applications