Jaka jest różnica między Elastic Beanstalk a CloudFormation dla projektu .NET?

121

Opracowałem aplikację .NET MVC i zacząłem bawić się AWS i wdrażać ją za pośrednictwem Visual Studio Toolkit. Aplikacja została pomyślnie wdrożona przy użyciu opcji Elastic Beanstalk w zestawie narzędzi.

Kiedy przeglądałem samouczki dotyczące wdrażania aplikacji .NET w AWS za pomocą zestawu narzędzi, zauważyłem, że istnieją tutoriale dotyczące wdrażania zarówno z Elastic Beanstalk, jak i CloudFormation . Jaka jest różnica między tymi dwoma?

Z tego, co wiem, wygląda na to, że obaj zasadniczo robią to samo - ułatwiając wdrażanie aplikacji w chmurze AWS (konfigurowanie instancji EC2, równoważenie obciążenia, automatyczne skalowanie itp.). Próbowałem czytać o nich obu, ale wydaje mi się, że nie mogę znaleźć nic innego niż kilka bzdurnych słów, które brzmią dla mnie jak to samo. Znalazłem nawet FAQ na stronie AWS, które ma odpowiedzieć dokładnie na to pytanie, ale tak naprawdę nie rozumiem.

Powinienem używać jednego czy drugiego? Obie?

kspearrin
źródło
To pytanie jest trochę poza tematem dla Stackoverflow, ale prawdopodobnie nie pasowałoby również do ServerFault ... Zaproponowałem nową witrynę z takimi pytaniami, śledź, jeśli się zgadzasz! area51.stackexchange.com/propessions/82757/…
Dan Ciborowski - MSFT

Odpowiedzi:

212

W rzeczywistości są całkiem inne. Elastic Beanstalk ma na celu ułatwienie życia programistom. CloudFormation ma na celu ułatwienie życia inżynierom systemów.

Elastic Beanstalk to warstwa podobna do PaaS na szczycie usług IaaS AWS, która oddziela podstawowe instancje EC2, Elastic Load Balancers, grupy automatycznego skalowania itp. To znacznie ułatwia programistom, którzy nie chcą zajmować się wszystkimi systemy, aby ich aplikacja została szybko wdrożona na AWS. Jest bardzo podobny do innych produktów PaaS, takich jak Heroku, EngineYard, Google App Engine itp. Dzięki Elastic Beanstalk nie musisz rozumieć, jak działa żadna z podstawowych magii.

Z drugiej strony CloudFormation nic nie robi automatycznie. To po prostu sposób na zdefiniowanie wszystkich zasobów potrzebnych do wdrożenia w ogromnym pliku JSON. Zatem szablon CloudFormation może w rzeczywistości tworzyć dwa środowiska ElasticBeanstalk (produkcyjne i pomostowe), kilka klastrów ElasticCache, tabelę DyanmoDB, a następnie właściwy DNS w Route53. Następnie przesyłam ten szablon do AWS, odchodzę i 45 minut później wszystko jest gotowe i czeka. Ponieważ jest to zwykły plik JSON, mogę umieścić go w mojej kontroli źródła, co zapewnia świetny sposób na wersjonowanie wdrożeń aplikacji. Zapewnia również, że mam powtarzalną, „znaną dobrą” konfigurację, którą mogę szybko wdrożyć w innym regionie.

jamieb
źródło
Dzięki! Wygląda na to, że na razie będę trzymał się EBS.
kspearrin
37
@xxkylexx FYI: „EBS” odnosi się do usługi AWS o nazwie „Elastic Block Store”. Myślę, że chcesz powiedzieć „Elastyczna łodyga fasoli” zamiast „EBS”.
ekillaby
2
Myślę, że użyli i zautomatyzowali szablon Cloud Formation, aby stworzyć środowisko Elastic Beanstalk dla aplikacji, którą stworzyłeś - .Net lub cokolwiek ... FWIW
autor kodu
51

Elastic Beanstalk to właściwa usługa dla szybkiego rozpoczęcia wdrażania standardowej aplikacji internetowej .NET .

Grafika porównawcza usług aplikacji

AWS CloudFormation : „Dostarczanie szablonach”

AWS CloudFormation zapewnia programistom i administratorom systemów łatwy sposób tworzenia i zarządzania zbiorem powiązanych zasobów AWS, udostępniania ich i aktualizowania w uporządkowany i przewidywalny sposób.

CloudFormation (CFn) to lekki, niskopoziomowy abstrakcji w stosunku do istniejących interfejsów API AWS. Korzystając ze statycznego dokumentu szablonu JSON / YAML , deklarujesz zestaw zasobów (na przykład instancję EC2 lub zasobnik S3 ), które odpowiadają operacjom CRUD w interfejsach API AWS.

Podczas tworzenia stosu CloudFormation CloudFormation wywołuje odpowiednie interfejsy API w celu utworzenia powiązanych zasobów, a po usunięciu stosu CloudFormation wywołuje odpowiednie interfejsy API, aby je usunąć. Obsługiwana jest większość (ale nie wszystkie) API AWS .

AWS Elastic Beanstalk : „Łatwe aplikacje internetowe”

AWS Elastic Beanstalk to łatwa w użyciu usługa do wdrażania i skalowania aplikacji i usług internetowych opracowanych w językach Java , .NET , PHP , Node.js , Python , Ruby , Go i Docker na znanych serwerach, takich jak Apache, Nginx, Passenger i IIS.

Możesz po prostu przesłać kod, a Elastic Beanstalk automatycznie obsłuży wdrożenie, od udostępniania pojemności, równoważenia obciążenia, automatycznego skalowania po monitorowanie stanu aplikacji.

Elastic Beanstalk (EB) to zarządzana „platforma jako usługa” (PaaS) wyższego poziomu do hostowania aplikacji internetowych, podobna w zakresie do Heroku . Zamiast zajmować się bezpośrednio zasobami AWS niskiego poziomu, EB zapewnia w pełni zarządzaną platformę, w której tworzysz środowisko aplikacji za pomocą interfejsu internetowego , wybierasz platformę, z której korzysta Twoja aplikacja, tworzysz i przesyłasz pakiet źródłowy , a EB zajmuje się resztą.

Korzystając z EB, otrzymujesz różnego rodzaju wbudowane funkcje do monitorowania środowiska aplikacji i wdrażania nowych wersji aplikacji .

Pod maską EB używa CloudFormation do tworzenia i zarządzania różnymi zasobami AWS aplikacji. Możesz dostosować i rozszerzyć domyślne środowisko EB, dodając zasoby CloudFormation do pliku konfiguracyjnego EB wdrożonego wraz z aplikacją.

Wniosek

Jeśli Twoja aplikacja jest standardową aplikacją warstwy internetowej korzystającą z jednej z obsługiwanych platform Elastic Beanstalk i potrzebujesz łatwego w zarządzaniu, wysoce skalowalnego hostingu dla swojej aplikacji, użyj Elastic Beanstalk .

Jeśli ty:

  • Chcesz bezpośrednio zarządzać wszystkimi zasobami AWS swojej aplikacji;
  • Chcesz zarządzać lub mocno dostosować proces udostępniania instancji lub procesu wdrażania;
  • Musisz użyć platformy aplikacji nieobsługiwanej przez Elastic Beanstalk; lub
  • Po prostu nie chcę / nie potrzebujesz żadnych funkcji wyższego poziomu Elastic Beanstalk

następnie użyj CloudFormation bezpośrednio i unikaj dodanej warstwy konfiguracji Elastic Beanstalk.

wjordan
źródło
14

Cloud Formation to usługa umożliwiająca wdrażanie usług AWS. Tworzysz plik szablonu, który opisuje, które usługi chcesz. Podczas wdrażania tego szablonu Cloud Formation tworzy zasoby jako „pakiet”. Wszystkie zasoby zdefiniowane w szablonie są uruchamiane i zamykane razem. Przykłady typów zasobów, które można utworzyć za pomocą Cloud Formation to: S3, instancje EC2, AutoScaling, DynamoDb itp. W przypadku EC2 Cloud Formation daje również możliwość korzystania ze skryptów „cfn-init”; którego można używać w połączeniu z szablonem do uruchamiania paska w instancjach.

Elastic Beanstalk korzysta z szablonów i skryptów Cloud Formation do: 1. Utwórz Load Balancer i Auto Scaling Group, 2. Skopiuj swój kod do S3, 3. Uruchom instancję Ec2, aby pobrać kod z S3 i wdrożyć go.

Cloud Formation nie jest tak łatwe w użyciu jak EB, ale jest znacznie bardziej wydajne, ponieważ możesz tworzyć zasoby inne niż instancje EC2, kontrolować sposób działania skryptu cfn-init itp.

Edwin
źródło
10

Warto zwrócić uwagę na inne różnice. Elastyczna łodyga fasoli została zaprojektowana jako pojemnik na jedną aplikację. Mam zestaw kilku witryn i usług, ale okazało się, że bardzo trudno jest wdrożyć wiele witryn internetowych z łodygą fasoli i po kilku próbach AWS doradził mi, aby w tej sytuacji skorzystać z tworzenia chmury, ponieważ ma dodatkową elastyczność. Tam naprawdę pomocny artykuł na ładowanie początkowe powstawania chmur AWS i aktualizowanie uruchomioną stronę tutaj ów znacznie jaśniejsze niż stronach AWS. Wciąż próbuję dowiedzieć się, czy możemy wdrożyć z VS bezpośrednio do szablonu tworzenia chmury przechowywanego na S3 i sprawić, by automatycznie aktualizował się jak łodyga fasoli ...

Matt
źródło
3

Usługi te mają na celu wzajemne uzupełnianie się. AWS Elastic Beanstalk zapewnia środowisko do łatwego wdrażania i uruchamiania aplikacji w chmurze. Jest zintegrowany z narzędziami deweloperskimi i zapewnia kompleksowe zarządzanie cyklem życia aplikacji. AWS CloudFormation to wygodny mechanizm dostarczania szerokiej gamy zasobów AWS i stron trzecich. Obsługuje infrastrukturę wielu różnych typów aplikacji, takich jak istniejące aplikacje korporacyjne, starsze aplikacje, aplikacje zbudowane przy użyciu różnych zasobów AWS i rozwiązania oparte na kontenerach (w tym te zbudowane przy użyciu AWS Elastic Beanstalk).

AWS CloudFormation obsługuje środowiska aplikacji Elastic Beanstalk jako jeden z typów zasobów AWS. Pozwala to na przykład na tworzenie aplikacji hostowanej przez AWS Elastic Beanstalk i zarządzanie nią wraz z bazą danych RDS do przechowywania danych aplikacji. Oprócz instancji RDS do grupy można dodać również inne obsługiwane zasoby AWS.

Mohit Sharma
źródło
1

Elastic Beanstalk automatycznie obsługuje wdrażanie, od udostępniania pojemności, równoważenia obciążenia, automatycznego skalowania po monitorowanie stanu aplikacji na podstawie przesłanego do niego kodu, podczas gdy CloudFormation jest zautomatyzowanym mechanizmem obsługi administracyjnej zaprojektowanym do wdrażania całych środowisk chmurowych za pomocą skryptu JSON.

Mahesh Bablu
źródło