AWS OpsWorks vs AWS Beanstalk vs AWS CloudFormation?


87

Vorrei sapere quali sono i vantaggi e gli svantaggi dell'utilizzo di AWS OpsWorks rispetto ad AWS Beanstalk e AWS CloudFormation?

Sono interessato a un sistema che può essere ridimensionato automaticamente per gestire un numero elevato di richieste Web simultanee (da 1000 richieste al minuto a 10 milioni di rpm.), Incluso un livello di database che può essere anche scalabile automaticamente.

Invece di avere un'istanza separata per ogni app, idealmente vorrei condividere alcune risorse hardware in modo efficiente. In passato ho utilizzato principalmente un'istanza EC2 + RDS + Cloudfront + S3

Il sistema stack ospiterà alcune app ruby ​​on rails ad alto traffico che stiamo migrando da Heroku, anche alcune app python / django e alcune app PHP.

Grazie in anticipo.


2
Questa domanda è un po 'fuori tema per Stackoverflow, ma probabilmente non si adatterebbe bene neanche a ServerFault ... Ho proposto un nuovo sito per domande come questa, segui se sei d'accordo! area51.stackexchange.com/proposals/82757/…
Dan Ciborowski - MSFT

Risposte:


70

Vorrei sapere quali sono i vantaggi e gli svantaggi dell'utilizzo di AWS OpsWorks rispetto ad AWS Beanstalk e AWS CLoudFormation?

La risposta è, dipende.

AWS OpsWorks e AWS Beanstalk sono (mi è stato detto) modi semplicemente diversi di gestire la tua infrastruttura, a seconda di come la pensi. CloudFormation è semplicemente un modo per creare modelli della tua infrastruttura.

Personalmente, ho più familiarità con Elastic Beanstalk, ma a ciascuno il suo. Lo preferisco perché può eseguire distribuzioni tramite Git. È un'informazione pubblica che Elastic Beanstalk utilizza CloudFormation sotto il cofano per lanciare i suoi ambienti.

Per i miei progetti, uso entrambi in tandem. Utilizzo CloudFormation per costruire un ambiente VPC configurato in modo personalizzato, bucket S3 e tabelle DynamoDB che utilizzo per la mia app. Quindi avvio un ambiente Elastic Beanstalk all'interno del VPC personalizzato che sa come dialogare con le risorse S3 / DynamoDB.

Sono interessato a un sistema che può essere ridimensionato automaticamente per gestire un numero elevato di richieste Web simultanee (da 1000 richieste al minuto a 10 milioni di rpm.), Incluso un livello di database che può essere anche scalabile automaticamente.

Sotto il cofano, OpsWorks ed Elastic Beanstalk utilizzano EC2 + CloudWatch + Auto Scaling, che è in grado di gestire i carichi di cui parli. RDS fornisce supporto per database scalabili basati su SQL.

Invece di avere un'istanza separata per ogni app, idealmente vorrei condividere alcune risorse hardware in modo efficiente. In passato ho utilizzato principalmente un'istanza EC2 + RDS + Cloudfront + S3

A seconda di cosa intendi per " alcune risorse hardware", puoi sempre avviare istanze EC2 autonome insieme ad ambienti OpsWorks o Elastic Beanstalk. Al momento, Elastic Beanstalk supporta una webapp per ambiente. Non ricordo cosa supporta OpsWorks.

Il sistema stack ospiterà alcune app ruby ​​on rails ad alto traffico che stiamo migrando da Heroku, anche alcune app python / django e alcune app PHP.

Tutto questo è completamente supportato da AWS. OpsWorks ed Elastic Beanstalk si sono ottimizzati per una serie di ambienti di sviluppo (Ruby, Python e PHP sono tutti nell'elenco), mentre EC2 fornisce server grezzi dove puoi installare tutto ciò che desideri.


3
OpsWorks gestisce anche le distribuzioni git, sebbene in modo diverso. Laddove le distribuzioni git di ElasticBeanstalk vengono inviate da un repository utilizzando una CLI, OpsWorks utilizza l'accesso in sola lettura a un repository utilizzando SSH (o HTTPS se repo pubblico).
Jack Frost

@Ryan Come accennato, Beanstalk utilizza modelli di tipo di formazione di nuvole in background per creare l'infrastruttura richiesta.
Mohd Belal

23

OpsWorks è uno strumento di orchestrazione come Chef - infatti, deriva da Chef - Puppet, Ansible o Saltstalk. Si utilizza Opsworks per specificare lo stato in cui si desidera che si trovi la rete specificando lo stato in cui si desidera che ogni risorsa - istanze del server, applicazioni, archiviazione - si trovi. E si specifica lo stato in cui si desidera che ogni risorsa si trovi specificando il valore desiderato per ogni attributo di quello stato. Ad esempio, potresti volere che il servizio Apache sia sempre attivo e in esecuzione e venga avviato all'avvio con Apache come utente e Apache come gruppo Linux.

CloudFormation è un modello JSON (**) che specifica lo stato delle risorse che desideri distribuire, ovvero desideri distribuire un'istanza micro t2 di AWS EC2 in us-east-1 come parte di VPC 192.168.1.0/24 . Nel caso di un'istanza EC2, puoi specificare cosa deve essere eseguito su quella risorsa tramite il tuo script bash personalizzato nella sezione dei dati utente della risorsa EC2. CloudFormation è solo un modello. Il modello diventa una risorsa in esecuzione solo se lo esegui tramite la Console di gestione AWS per CloudFormation o se esegui il comando aws cli per Cloudformation, ovvero aws cloudformation ...

ElasticBeanstalk è un PAAS: puoi caricare le app Ruby / Rails, node.js o Python / django o Python / Flask in particolare. Se stai utilizzando qualcos'altro come Scala, Haskell o qualsiasi altra cosa, crea un'immagine Docker e carica quell'immagine Docker in Elastic Beanstalk (*).

Puoi caricare la tua app in Elastic Beanstalk eseguendo il cli di aws per CloudFormation oppure creando una ricetta per Opsworks per caricare la tua app in Elastic Beanstalk. Puoi anche eseguire il cli di aws per Cloudformation tramite Opsworks.

(*) In effetti, la documentazione di AWS sul suo esempio di app Ruby era così scarsa che ho perso la pazienza e ho incorporato l'app di esempio in un'immagine Docker e ho caricato l'immagine Docker in Elastic Beanstalk.

(**) A partire da settembre 2016, Cloudformation supporta anche i modelli YAML.


8

In Opsworks è possibile condividere "ruoli" di livelli in uno stack per utilizzare meno risorse combinando i lavori specifici che un'istanza sottostante potrebbe svolgere.

Elenco di compatibilità dei livelli (purché i gruppi di sicurezza siano impostati correttamente):

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. 

riferimento: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: distribuisce e gestisce le applicazioni nel cloud AWS senza preoccuparsi dell'infrastruttura che esegue le tue applicazioni web con Elastic Beanstalk. Non c'è bisogno di preoccuparsi per EC2 o altre installazioni.

AWS OpsWorks AWS OpsWorks non è altro che un servizio di gestione delle applicazioni che rende facile per i nuovi utenti DevOps modellare e gestire l'intera applicazione


1
Penso che questa risposta sia imprecisa. Il fatto è il contrario. Sebbene Elastic Beanstalk sia solo un PaaS, con OpsWorks è tutta tua responsabilità creare uno stack utilizzando componenti appropriati. La definizione "Per il nuovo DevOps" si applica agli utenti EB, non a OpsWorks.
scaryguy

3

AWS CloudFormation: crea e aggiorna i tuoi ambienti.

AWS Opsworks: gestisci i tuoi sistemi all'interno di tali ambienti come facciamo con Chef o Puppet

AWS Beanstalk: crea, gestisci e distribuisci.

Ma personalmente mi piacciono CloudFormation e OpsWorks entrambi utilizzando tutta la sua potenza per ciò a cui sono destinati.

Usa CloudFormation per creare il tuo ambiente, quindi puoi chiamare Opsworks dagli script di formazione del cloud per avviare la tua macchina. Quindi avrai lo stack di Opsworks per gestirlo. Ad esempio, aggiungi un utente in Linux Box usando Opsworks o applica le patch alle tue scatole usando le ricette dello chef. Puoi anche scrivere le ricette dello chef per la distribuzione. Altrimenti puoi usare CodeDeploy creato appositamente per la distribuzione.


3

AWS OpsWorks : fa parte del servizio di gestione AWS. Aiuta a configurare l'applicazione utilizzando lo scripting. Utilizza Chef come framework devops per questa gestione e operazione dell'applicazione. Esistono modelli che possono essere utilizzati per la configurazione di server, database, archiviazione. I modelli possono anche essere personalizzati per eseguire qualsiasi altra attività. Gli ingegneri DevOps hanno il controllo sulle dipendenze e sull'infrastruttura dell'applicazione.

AWS Beanstalk : fornisce l'ambiente per linguaggi come Java, Node Js, Python, Ruby Go. Il gambo Elastic Bean fornisce la risorsa per eseguire l'applicazione. Gli sviluppatori non devono preoccuparsi dell'infrastruttura e non hanno il controllo sull'infrastruttura.

AWS CloudFormation - CloudFormation dispone di modelli di esempio per gestire le risorse AWS in ordine.


0

Come molti altri hanno commentato AWS Beanstalk, AWS OpsWorks e AWS Cloud Formation offrono diverse soluzioni per diversi problemi.

Al fine di realizzare con

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.

E considerando che sei nel processo di migrazione, ti consiglio vivamente di iniziare a dare un'occhiata alla soluzione AWS Lambda e AWS DynamoDB (o ibrida).

Entrambi sono progettati per il ridimensionamento automatico in modo semplice e possono essere una soluzione molto economica.


-1

Basta usare terraform e ECS o EKS.

opsworks, beanstalk elastico e vecchia tecnologia cloudformation ora. -)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.