web-dev-qa-db-fra.com

AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?

J'aimerais savoir quels sont les avantages et les inconvénients de l'utilisation de AWS OpsWorks par rapport à AWS Beanstalk et AWS CloudFormation?

Je suis intéressé par un système pouvant être mis à l'échelle automatiquement pour traiter un nombre élevé de demandes Web simultanées (de 1 000 demandes par minute à 10 millions de tpm), y compris une couche de base de données pouvant également être mise à l'échelle automatiquement.

Au lieu d'avoir une instance distincte pour chaque application, idéalement, j'aimerais partager efficacement certaines ressources matérielles. Dans le passé, j'ai principalement utilisé une instance EC2 + RDS + Cloudfront + S3

Le système de pile hébergera des applications Ruby on Rails à fort trafic que nous migrons depuis Heroku, ainsi que des applications python/Django et des applications PHP.

Merci d'avance.

77
ipegasus

J'aimerais savoir quels sont les avantages et les inconvénients de l'utilisation de AWS OpsWorks par rapport à AWS Beanstalk et AWS CLoudFormation?

La réponse est: ça dépend.

AWS OpsWorks et AWS Beanstalk sont (on m'a dit) des manières différentes de gérer votre infrastructure, en fonction de votre façon de penser. CloudFormation est simplement un moyen de modéliser votre infrastructure.

Personnellement, je connais mieux Elastic Beanstalk, mais chacun ses goûts. Je le préfère car il peut effectuer des déploiements via Git. Selon des informations publiques, Elastic Beanstalk utilise CloudFormation sous le capot pour lancer ses environnements.

Pour mes projets, j'utilise les deux en tandem. J'utilise CloudFormation pour créer un environnement VPC, des compartiments S3 et des tables DynamoDB configurés sur mesure que j'utilise pour mon application. Ensuite, je lance un environnement Elastic Beanstalk à l'intérieur du VPC personnalisé, qui sait parler aux ressources S3/DynamoDB.

Je suis intéressé par un système pouvant être mis à l'échelle automatiquement pour traiter un nombre élevé de demandes Web simultanées (de 1 000 demandes par minute à 10 millions de tpm), y compris une couche de base de données pouvant également être mise à l'échelle automatiquement.

Sous le capot, OpsWorks et Elastic Beanstalk utilisent EC2 + CloudWatch + Auto Scaling, qui est capable de gérer les charges dont vous parlez. RDS prend en charge les bases de données évolutives basées sur SQL.

Au lieu d'avoir une instance distincte pour chaque application, idéalement, j'aimerais partager efficacement certaines ressources matérielles. Dans le passé, j'ai principalement utilisé une instance EC2 + RDS + Cloudfront + S3

Selon ce que vous entendez par "certaines ressources matérielles", vous pouvez toujours lancer des instances EC2 autonomes aux côtés des environnements OpsWorks ou Elastic Beanstalk. À l’heure actuelle, Elastic Beanstalk prend en charge une application Web par environnement. Je ne me souviens pas de ce que OpsWorks prend en charge.

Le système de pile hébergera des applications Ruby on Rails à fort trafic que nous migrons depuis Heroku, ainsi que des applications python/Django et des applications PHP.

Tout cela est entièrement pris en charge par AWS. OpsWorks et Elastic Beanstalk se sont optimisés pour un grand nombre d'environnements de développement (Ruby, Python et PHP sont tous dans la liste), tandis qu'EC2 fournit des serveurs bruts sur lesquels vous pouvez installer ce que vous voulez.

62
Ryan Parman

OpsWorks est un outil d’orchestration comme Chef. En fait, il est dérivé de Chef - Puppet, Ansible ou Saltstalk. Vous utilisez Opsworks pour spécifier l'état dans lequel vous souhaitez que votre réseau se trouve en spécifiant l'état dans lequel vous souhaitez que chaque ressource (instances de serveur, applications, stockage) se trouve. Et vous spécifiez l'état dans lequel vous souhaitez que chaque ressource soit en spécifiant la valeur souhaitée pour chaque attribut de cet état. Par exemple, vous pouvez souhaiter que le service Apache soit toujours opérationnel et démarre au démarrage avec Apache en tant qu'utilisateur et Apache en tant que groupe Linux.

CloudFormation est un modèle JSON (**) qui spécifie l'état des ressources que vous souhaitez déployer, c'est-à-dire que vous souhaitez déployer une instance AWS EC2 micro t2 dans us-east-1 dans le cadre du VPC 192.168.1.0/24. . Dans le cas d'une instance EC2, vous pouvez spécifier ce qui doit être exécuté sur cette ressource via votre script bash personnalisé dans la section des données utilisateur de la ressource EC2. CloudFormation est juste un modèle. Le modèle devient notre ressource en cours d'exécution uniquement si vous l'exécutez via AWS Management Console pour CloudFormation ou si vous exécutez la commande aws cli pour Cloudformation, c'est-à-dire aws cloudformation ...

ElasticBeanstalk est un PAAS - vous pouvez télécharger les applications spécifiquement Ruby/Rails, node.js ou Python/Django ou Python/Flask. Si vous utilisez autre chose que Scala, Haskell ou autre, créez une image Docker pour elle et chargez cette image Docker dans Elastic Beanstalk (*).

Vous pouvez télécharger votre application dans Elastic Beanstalk en exécutant aws cli pour CloudFormation ou en créant une recette permettant à Opsworks de télécharger votre application dans Elastic Beanstalk. Vous pouvez également exécuter aws cli pour Cloudformation via Opsworks.

(*) En fait, la documentation d'AWS sur son exemple d'application Ruby était si médiocre que j'ai perdu patience et ai incorporé l'application d'exemple dans une image Docker et j'ai chargé l'image Docker dans Elastic Beanstalk.

(**) Depuis septembre 2016, Cloudformation prend également en charge les modèles YAML.

18
Vietnhi Phuvan

CloudFormation: AWS CloudFormation est un service qui vous aide à modéliser et à configurer vos ressources Amazon Web Services afin que vous passiez moins de temps à gérer ces ressources et plus de temps à vous concentrer sur vos applications exécutées dans AWS.it template décrit les ressources souhaitées et leurs paramètres.  enter image description here

Elastic Beanstalk

Avec Elastic Beanstalk, vous pouvez rapidement déployer et gérer des applications dans le cloud AWS sans vous soucier de l'infrastructure qui les exécute. À cet égard, il est similaire à CloudFormation. En fait, il utilise en fait des modèles et des scripts CloudFormation pour…

  • Créez un équilibreur de charge et un groupe Auto Scaling.
  • Copiez le code sur S3.
  • Amorcez une instance EC2 pour télécharger le code à partir de S3 et le déployer.

OpsWorks

OpsWorks vous permet d'automatiser les actions de gestion afin qu'elles soient effectuées de manière automatique et fiable. Vous pouvez tirer parti du basculement automatique, de la gestion des packages, de la configuration RAID des volumes EBS et de la mise à l'échelle automatique basée sur des règles ou sur une durée.

Maintenant une grande image

 enter image description here  enter image description here  enter image description here

12
Adiii

Dans Opsworks, vous pouvez partager des "rôles" de couches sur une pile pour utiliser moins de ressources en combinant les travaux spécifiques exécutés par une instance sous-jacente. 

Liste de compatibilité des couches (tant que les groupes de sécurité sont correctement définis): 

HA Proxy : custom, db-master, and memcached.
MySQL :  custom, lb, memcached, monitoring-master, nodejs-app, php-app, Rails-app, and web.
Java : custom, db-master, and memcached.
Node.js : custom, db-master, memcached, and monitoring-master
PHP : custom, db-master, memcached, monitoring-master, and Rails-app.
Rails :  custom, db-master, memcached, monitoring-master, php-app.
Static :  custom, db-master, memcached.
Custom : custom, db-master, lb, memcached, monitoring-master, nodejs-app, php-app, Rails-app, and web 
Ganglia :  custom, db-master, memcached, php-app, Rails-app. 
Memcached :  custom, db-master, lb, monitoring-master, nodejs-app, php-app, Rails-app, and web. 

référence: http://docs.aws.Amazon.com/opsworks/latest/userguide/layers.html

8
Imran Ahmed

AWS Beanstalk: .__ C'est Déployer et gérer des applications dans le cloud AWS sans se soucier de l'infrastructure qui exécute vos applications Web avec Elastic Beanstalk . Inutile de vous soucier de l'installation d'EC2 ou d'une autre installation.

AWS OpsWorks AWS OpsWorks n'est qu'un service de gestion d'applications permettant aux nouveaux utilisateurs de DevOps de modéliser et de gérer l'ensemble de leur application.

7
Yogesh Funde

AWS CloudFormation - Créez et mettez à jour vos environnements.

AWS Opsworks - Gérez vos systèmes dans des environnements similaires à ceux de Chef ou de Puppet

AWS Beanstalk - Créer, gérer et déployer.

Mais personnellement, j'aime CloudFormation et OpsWorks en utilisant toute sa puissance pour ce à quoi ils sont destinés. 

Utilisez CloudFormation pour créer votre environnement et appelez ensuite les scripts de formation en nuage Opsworks pour lancer votre ordinateur. Ensuite, vous aurez la pile Opsworks pour le gérer. Par exemple, ajoutez un utilisateur dans une boîte Linux en utilisant Opsworks ou corrigez vos boîtes avec des recettes de chef. Vous pouvez également écrire des recettes de chef pour le déploiement. Sinon, vous pouvez utiliser CodeDeploy spécifiquement pour générer le déploiement. 

3
Gladiator

AWS OpsWorks - Ceci fait partie du service de gestion AWS. Il est utile de configurer l'application à l'aide de scripts. Il utilise Chef comme cadre de développement pour cette gestion et cette opération d’application. Il existe des modèles qui peuvent être utilisés pour la configuration du serveur, de la base de données et du stockage. Les modèles peuvent également être personnalisés pour effectuer toute autre tâche. Les ingénieurs DevOps contrôlent les dépendances et l'infrastructure des applications.

AWS Beanstalk - Il fournit l'environnement pour un langage comme Java, Node Js, Python, Ruby Go. La tige d'Elastic Bean fournit la ressource pour exécuter l'application. Les développeurs ne doivent pas s'inquiéter de l'infrastructure et ils ne contrôlent pas l'infrastructure. 

AWS CloudFormation - CloudFormation a des exemples de modèles pour gérer les ressources AWS dans l'ordre. 

1
Sanjeev Singh

Comme beaucoup d'autres ont commenté AWS Beanstalk, AWS OpsWorks et AWS Cloud Formation offrent différentes solutions pour différents problèmes.

Pour accomplir avec 

I am interested in a system that can be auto scaled to handle any high number of simultaneous web requests (From 1000 requests per minute to 10 million rpm.), including a database layer that can be auto scalable as well.

Et compte tenu de votre processus de migration, je vous recommande vivement de commencer à jeter un coup d'œil à la solution AWS Lambda & AWS DynamoDB (ou hybride).

Les deux sont conçus pour une mise à l’échelle auto de manière simple et peuvent constituer une solution très économique.

0
siomes