Qual è la differenza tra Elastic Beanstalk e CloudFormation per un progetto .NET?


121

Ho sviluppato un'applicazione .NET MVC e ho iniziato a giocare con AWS e a distribuirlo tramite Visual Studio Toolkit. Ho distribuito correttamente l'applicazione utilizzando l'opzione Elastic Beanstalk nel toolkit.

Mentre esaminavo i tutorial per la distribuzione di app .NET su AWS con il toolkit, ho notato che ci sono tutorial per la distribuzione con Elastic Beanstalk e CloudFormation . Qual è la differenza tra questi due?

Da quello che posso dire, sembra che entrambi stiano essenzialmente facendo la stessa cosa, semplificando la distribuzione della tua applicazione nel cloud AWS (configurazione di istanze EC2, bilanciamento del carico, scalabilità automatica, ecc.). Ho provato a leggere su entrambi, ma non riesco a ottenere nient'altro che un mucchio di parole d'ordine che suonano come la stessa cosa per me. Ho anche trovato un file FAQ sul sito Web di AWS che dovrebbe rispondere a questa domanda esatta, ma non capisco davvero.

Dovrei usare l'uno o l'altro? Tutti e due?


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:


212

In realtà sono piuttosto diversi. Elastic Beanstalk ha lo scopo di semplificare la vita degli sviluppatori. CloudFormation ha lo scopo di semplificare la vita degli ingegneri di sistema.

Elastic Beanstalk è un livello simile a PaaS in cima ai servizi IaaS di AWS che astrae le istanze EC2 sottostanti, Elastic Load Balancer, gruppi di auto scaling, ecc. Questo rende molto più facile per gli sviluppatori, che non vogliono avere a che fare con tutto le cose di sistema, per ottenere rapidamente la loro applicazione distribuita su AWS. È molto simile ad altri prodotti PaaS come Heroku, EngineYard, Google App Engine, ecc. Con Elastic Beanstalk, non è necessario capire come funziona la magia sottostante.

CloudFormation, d'altra parte, non fa nulla automaticamente. È semplicemente un modo per definire tutte le risorse necessarie per la distribuzione in un enorme file JSON. Quindi un modello CloudFormation potrebbe effettivamente creare due ambienti ElasticBeanstalk (produzione e gestione temporanea), un paio di cluster ElasticCache, una tabella DyanmoDB e quindi il DNS appropriato in Route53. Quindi carico questo modello su AWS, me ne vado e 45 minuti dopo tutto è pronto e in attesa. Poiché è solo un file JSON di testo semplice, posso inserirlo nel mio controllo del codice sorgente che fornisce un ottimo modo per la versione delle distribuzioni delle mie applicazioni. Assicura inoltre che disponga di una configurazione "notoriamente valida" ripetibile che posso distribuire rapidamente in una regione diversa.


Grazie! Sembra che per ora rimarrò con EBS.
kspearrin

37
@xxkylexx FYI: "EBS" si riferisce al servizio AWS denominato "Elastic Block Store". Penso che tu voglia dire "Elastic Beanstalk" invece di "EBS".
ekillaby

2
Penso che abbiano utilizzato e automatizzato il modello Cloud Formation per creare l'ambiente Elastic Beanstalk per l'applicazione che hai creato - .Net o qualsiasi altra cosa ... FWIW
codeputer

51

Per iniziare a distribuire rapidamente un'applicazione web .NET standard, Elastic Beanstalk è il servizio giusto per te.

Grafico di confronto dei servizi app

AWS CloudFormation : "Provisioning basato su modelli"

AWS CloudFormation offre agli sviluppatori e agli amministratori di sistema un modo semplice per creare e gestire una raccolta di risorse AWS correlate, fornendole e aggiornandole in modo ordinato e prevedibile.

CloudFormation (CFn) è un'astrazione leggera e di basso livello sulle API AWS esistenti. Utilizzando un documento modello JSON / YAML statico , dichiari un insieme di risorse (come un'istanza EC2 o un bucket S3 ) che corrispondono alle operazioni CRUD sulle API AWS.

Quando crei uno stack CloudFormation, CloudFormation chiama le API corrispondenti per creare le risorse associate e quando elimini uno stack, CloudFormation chiama le API corrispondenti per eliminarle. La maggior parte (ma non tutte) le API AWS sono supportate.

AWS Elastic Beanstalk : "App Web semplificate"

AWS Elastic Beanstalk è un servizio di facile utilizzo per la distribuzione e il ridimensionamento di applicazioni e servizi Web sviluppati con Java , .NET , PHP , Node.js , Python , Ruby , Go e Docker su server familiari come Apache, Nginx, Passenger e IIS.

Puoi semplicemente caricare il tuo codice ed Elastic Beanstalk gestisce automaticamente la distribuzione, dal provisioning della capacità, al bilanciamento del carico, alla scalabilità automatica al monitoraggio dello stato delle applicazioni.

Elastic Beanstalk (EB) è una "piattaforma come servizio" (PaaS) gestita di livello superiore per l'hosting di applicazioni web, simile per portata a Heroku . Anziché gestire direttamente le risorse AWS di basso livello, EB fornisce una piattaforma completamente gestita in cui crei un ambiente applicativo utilizzando un'interfaccia web , seleziona la piattaforma utilizzata dalla tua applicazione, crea e carica un bundle di origine ed EB si occupa del resto.

Utilizzando EB, si ottengono tutti i tipi di funzionalità integrate per monitorare l'ambiente dell'applicazione e distribuire nuove versioni dell'applicazione .

Sotto il cofano, EB utilizza CloudFormation per creare e gestire le varie risorse AWS dell'applicazione. Puoi personalizzare ed estendere l'ambiente EB predefinito aggiungendo risorse CloudFormation a un file di configurazione EB distribuito con la tua applicazione.

Conclusione

Se la tua applicazione è un'applicazione di livello Web standard che utilizza una delle piattaforme supportate da Elastic Beanstalk e desideri un hosting facile da gestire e altamente scalabile per la tua applicazione, utilizza Elastic Beanstalk .

Se tu:

  • Vuoi gestire direttamente tutte le risorse AWS della tua applicazione;
  • Desideri gestire o personalizzare pesantemente il processo di provisioning o distribuzione delle istanze;
  • Necessità di utilizzare una piattaforma applicativa non supportata da Elastic Beanstalk; o
  • Non voglio / non hai bisogno di nessuna delle funzionalità di Elastic Beanstalk di livello superiore

quindi utilizza direttamente CloudFormation ed evita il livello di configurazione aggiunto di Elastic Beanstalk.


14

Cloud Formation è un servizio che ti consente di distribuire i servizi AWS. Crei un file modello che descrive i servizi che desideri. Quando distribuisci quel modello, Cloud Formation crea le risorse per te come un "pacchetto". Tutte le risorse definite nel modello vengono avviate e terminate insieme. Esempi di tipi di risorse che possono essere creati con Cloud Formation sono: S3, istanze EC2, AutoScaling, DynamoDb, ecc. Per EC2, Cloud Formation offre anche la possibilità di utilizzare script "cfn-init"; che può essere utilizzato insieme al modello per avviare le istanze.

Elastic Beanstalk utilizza i modelli e gli script di Cloud Formation per: 1. Creare un Load Balancer e un gruppo Auto Scaling, 2. Copiare il codice su S3, 3. Eseguire il bootstrap di un'istanza Ec2 per scaricare il codice da S3 e distribuirlo.

Cloud Formation non è facile da usare come EB, ma è molto più potente, perché puoi creare risorse diverse dalle istanze EC2, controllare come lo script cfn-init e così via.


10

Ci sono altre differenze degne di nota. Elastic beanstalk è progettato come contenitore per una singola app. Ho una serie di diversi siti Web e servizi, ma ho trovato molto difficile distribuire più siti Web con beanstalk e, dopo diversi tentativi, AWS mi ha consigliato di utilizzare la formazione del cloud in questa situazione poiché ha la flessibilità extra. C'è un articolo davvero utile sul bootstrap della formazione del cloud AWS e sull'aggiornamento di un sito in esecuzione qui che è molto più chiaro delle pagine AWS. Sto ancora cercando di capire se possiamo distribuire da VS direttamente al modello di formazione di nuvole memorizzato su S3 e farlo aggiornare automaticamente come beanstalk ...


3

Questi servizi sono progettati per completarsi a vicenda. AWS Elastic Beanstalk fornisce un ambiente per distribuire ed eseguire facilmente le applicazioni nel cloud. È integrato con gli strumenti di sviluppo e offre un'esperienza unica per la gestione del ciclo di vita delle applicazioni. AWS CloudFormation è un comodo meccanismo di provisioning per un'ampia gamma di risorse AWS e di terze parti. Supporta le esigenze di infrastruttura di molti diversi tipi di applicazioni come applicazioni aziendali esistenti, applicazioni legacy, applicazioni create utilizzando una varietà di risorse AWS e soluzioni basate su container (comprese quelle create utilizzando AWS Elastic Beanstalk).

AWS CloudFormation supporta gli ambienti applicativi Elastic Beanstalk come uno dei tipi di risorse AWS. Ciò consente, ad esempio, di creare e gestire un'applicazione ospitata in AWS Elastic Beanstalk insieme a un database RDS per archiviare i dati dell'applicazione. Oltre alle istanze RDS, è possibile aggiungere al gruppo anche qualsiasi altra risorsa AWS supportata.


1

Elastic Beanstalk gestisce automaticamente la distribuzione, dal provisioning della capacità, bilanciamento del carico, scalabilità automatica al monitoraggio dello stato delle applicazioni in base al codice caricato su di esso, dove CloudFormation è un motore di provisioning automatizzato progettato per distribuire interi ambienti cloud tramite uno script JSON.

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.