Sự khác biệt giữa Elastic Beanstalk và CloudFormation cho một dự án .NET là gì?


121

Tôi đã phát triển một ứng dụng .NET MVC và đã bắt đầu chơi với AWS và triển khai nó qua Bộ công cụ Visual Studio. Tôi đã triển khai thành công ứng dụng bằng cách sử dụng tùy chọn Elastic Beanstalk trong bộ công cụ.

Khi tôi xem qua các hướng dẫn triển khai ứng dụng .NET lên AWS bằng bộ công cụ, tôi nhận thấy có các hướng dẫn triển khai với cả Elastic Beanstalk và CloudFormation . sự khác biệt giữa hai cái đó là gì?

Từ những gì tôi có thể nói, có vẻ như cả hai về cơ bản đều đang làm cùng một việc - giúp việc triển khai ứng dụng của bạn lên đám mây AWS dễ dàng hơn (thiết lập các phiên bản EC2, cân bằng tải, tự động mở rộng quy mô, v.v.). Tôi đã cố gắng đọc cả hai, nhưng dường như tôi không thể hiểu được gì khác ngoài một loạt các từ buzz nghe giống nhau với tôi. Tôi thậm chí còn tìm thấy Câu hỏi thường gặp trên trang web AWS được cho là trả lời chính xác câu hỏi này, nhưng tôi không thực sự hiểu.

Tôi có nên sử dụng cái này hay cái kia không? Cả hai?


Câu hỏi này hơi lạc đề đối với Stackoverflow, nhưng có lẽ cũng không phù hợp với ServerFault ... Tôi đã đề xuất một trang web mới cho những câu hỏi như thế này, hãy làm theo nếu bạn đồng ý! area51.stackexchange.com/proposal/82757/…
Dan Ciborowski - MSFT

Câu trả lời:


212

Chúng thực sự khá khác nhau. Elastic Beanstalk nhằm giúp cuộc sống của các nhà phát triển dễ dàng hơn. CloudFormation nhằm giúp cuộc sống của các kỹ sư hệ thống dễ dàng hơn.

Elastic Beanstalk là một lớp giống như PaaS nằm trên các dịch vụ IaaS của AWS. nội dung hệ thống, để ứng dụng của họ được triển khai nhanh chóng trên AWS. Nó rất giống với các sản phẩm PaaS khác như Heroku, EngineYard, Google App Engine, v.v. Với Elastic Beanstalk, bạn không cần phải hiểu cách hoạt động của bất kỳ phép thuật cơ bản nào.

Mặt khác, CloudFormation không tự động làm bất cứ điều gì. Đó chỉ đơn giản là một cách để xác định tất cả các tài nguyên cần thiết để triển khai trong một tệp JSON khổng lồ. Vì vậy, một mẫu CloudFormation thực sự có thể tạo ra hai môi trường ElasticBeanstalk (sản xuất và dàn dựng), một vài cụm ElasticCache, bảng DyanmoDB và sau đó là DNS thích hợp trong Route53. Sau đó, tôi tải mẫu này lên AWS, bỏ đi và 45 phút sau, mọi thứ đã sẵn sàng và đang chờ. Vì nó chỉ là một tệp JSON văn bản thuần túy, tôi có thể gắn nó vào điều khiển nguồn của mình, điều này cung cấp một cách tuyệt vời để phiên bản các triển khai ứng dụng của tôi. Nó cũng đảm bảo rằng tôi có một cấu hình "tốt đã biết" có thể lặp lại mà tôi có thể nhanh chóng triển khai ở một vùng khác.


Cảm ơn! Có vẻ như bây giờ tôi sẽ gắn bó với EBS.
kspearrin

37
@xxkylexx FYI: "EBS" đề cập đến dịch vụ AWS có tên "Cửa hàng khối đàn hồi". Tôi nghĩ bạn muốn nói "Elastic Beanstalk" thay vì "EBS".
ekillaby

2
Tôi nghĩ rằng họ đã sử dụng và tự động hóa mẫu Cloud Formation để tạo môi trường Elastic Beanstalk cho ứng dụng bạn đã tạo - .Net hoặc bất cứ thứ gì ... FWIW
codeputer 23/04

51

Để nhanh chóng bắt đầu triển khai ứng dụng web .NET tiêu chuẩn, Elastic Beanstalk là dịch vụ phù hợp với bạn.

Đồ họa so sánh các dịch vụ ứng dụng

AWS CloudFormation : "Cấp phép theo hướng mẫu"

AWS CloudFormation cung cấp cho các nhà phát triển và quản trị viên hệ thống một cách dễ dàng để tạo và quản lý tập hợp các tài nguyên AWS có liên quan, cung cấp và cập nhật chúng theo cách có trật tự và có thể dự đoán được.

CloudFormation (CFn) là một bản tóm tắt cấp thấp, nhẹ so với các API AWS hiện có. Sử dụng tài liệu mẫu JSON / YAML tĩnh , bạn khai báo một tập hợp Tài nguyên (chẳng hạn như phiên bản EC2 hoặc nhóm S3 ) tương ứng với các hoạt động CRUD trên AWS API.

Khi bạn tạo ngăn xếp CloudFormation, CloudFormation sẽ gọi các API tương ứng để tạo Tài nguyên được liên kết và khi bạn xóa một ngăn xếp, CloudFormation sẽ gọi các API tương ứng để xóa chúng. Hầu hết (nhưng không phải tất cả) API AWS được hỗ trợ.

AWS Elastic Beanstalk : "Ứng dụng web trở nên dễ dàng"

AWS Elastic Beanstalk là một dịch vụ dễ sử dụng để triển khai và mở rộng các ứng dụng và dịch vụ web được phát triển bằng Java , .NET , PHP , Node.js , Python , Ruby , GoDocker trên các máy chủ quen thuộc như Apache, Nginx, Passenger và IIS.

Bạn có thể chỉ cần tải lên mã của mình và Elastic Beanstalk tự động xử lý việc triển khai, từ cung cấp dung lượng, cân bằng tải, tự động mở rộng quy mô đến theo dõi tình trạng ứng dụng.

Elastic Beanstalk (EB) là một 'nền tảng như một dịch vụ' (PaaS) cấp cao hơn, được quản lý để lưu trữ các ứng dụng web, có phạm vi tương tự như Heroku . Thay vì xử lý trực tiếp các tài nguyên AWS cấp thấp, EB cung cấp một nền tảng được quản lý hoàn toàn, nơi bạn tạo môi trường ứng dụng bằng giao diện web , chọn nền tảng mà ứng dụng của bạn sử dụng, tạo và tải lên một gói nguồn và EB xử lý phần còn lại.

Sử dụng EB, bạn nhận được tất cả các loại tính năng tích hợp để theo dõi môi trường ứng dụngtriển khai các phiên bản mới của ứng dụng .

Về cơ bản, EB sử dụng CloudFormation để tạo và quản lý các tài nguyên AWS khác nhau của ứng dụng. Bạn có thể tùy chỉnh và mở rộng môi trường EB mặc định bằng cách thêm Tài nguyên CloudFormation vào tệp cấu hình EB được triển khai với ứng dụng của bạn.

Phần kết luận

Nếu ứng dụng của bạn là ứng dụng cấp web tiêu chuẩn sử dụng một trong các nền tảng được hỗ trợ của Elastic Beanstalk và bạn muốn lưu trữ dễ quản lý, có khả năng mở rộng cao cho ứng dụng của mình, hãy sử dụng Elastic Beanstalk .

Nếu bạn:

  • Muốn quản lý trực tiếp tất cả các tài nguyên AWS của ứng dụng;
  • Muốn quản lý hoặc tùy chỉnh nhiều quy trình cung cấp hoặc triển khai phiên bản của bạn;
  • Cần sử dụng nền tảng ứng dụng không được Elastic Beanstalk hỗ trợ; hoặc là
  • Chỉ cần không muốn / cần bất kỳ tính năng Elastic Beanstalk cấp cao hơn nào

sau đó sử dụng CloudFormation trực tiếp và tránh lớp cấu hình được thêm vào của Elastic Beanstalk.


14

Cloud Formation là một dịch vụ cho phép bạn triển khai các dịch vụ AWS. Bạn tạo một tệp mẫu mô tả những dịch vụ bạn muốn. Khi bạn triển khai mẫu đó, Cloud Formation tạo tài nguyên cho bạn dưới dạng "gói". Tất cả các tài nguyên bạn đã xác định trong mẫu của mình được bắt đầu và kết thúc cùng nhau. Ví dụ về các loại tài nguyên có thể được tạo bằng Cloud Formation là: phiên bản S3, EC2, AutoScaling, DynamoDb, v.v. Đối với EC2, Cloud Formation cũng cung cấp cho bạn khả năng sử dụng các tập lệnh "cfn-init"; có thể được sử dụng cùng với mẫu để khởi động dây đeo các phiên bản của bạn.

Elastic Beanstalk sử dụng các mẫu Cloud Formation và hướng tới: 1. Tạo Nhóm Cân bằng tải và Tự động mở rộng quy mô, 2. Sao chép mã của bạn vào S3, 3. Khởi động một phiên bản Ec2 để tải xuống mã từ S3 và triển khai nó.

Cloud Formation không dễ sử dụng như EB, nhưng nó mạnh hơn nhiều, vì bạn có thể tạo tài nguyên khác với các phiên bản EC2, kiểm soát cách tập lệnh cfn-init, v.v.


10

Có những điểm khác biệt đáng chú ý. Cây đậu đàn hồi được thiết kế như một thùng chứa cho một ứng dụng duy nhất. Tôi đã tập hợp một số trang web và dịch vụ nhưng cảm thấy rất khó triển khai nhiều trang web với cây đậu và sau nhiều lần thử, AWS đã khuyên bạn nên sử dụng hình thức đám mây trong trường hợp này vì nó có thêm tính linh hoạt. Có một bài viết thực sự hữu ích về khởi động hình thành đám mây AWS và cập nhật một trang web đang chạy ở đây rõ ràng hơn nhiều so với các trang AWS. Vẫn đang cố gắng tìm hiểu xem liệu chúng tôi có thể triển khai từ VS thẳng đến mẫu hình thành đám mây được lưu trữ trên S3 và đưa nó tự động cập nhật như cây đậu ...


3

Các dịch vụ này được thiết kế để bổ sung cho nhau. AWS Elastic Beanstalk cung cấp môi trường để dễ dàng triển khai và chạy các ứng dụng trên đám mây. Nó được tích hợp với các công cụ dành cho nhà phát triển và cung cấp trải nghiệm một cửa để bạn quản lý vòng đời của các ứng dụng của mình. AWS CloudFormation là một cơ chế cung cấp thuận tiện cho nhiều loại tài nguyên AWS và bên thứ ba. Nó hỗ trợ nhu cầu cơ sở hạ tầng của nhiều loại ứng dụng khác nhau như ứng dụng doanh nghiệp hiện có, ứng dụng kế thừa, ứng dụng được xây dựng bằng nhiều tài nguyên AWS và các giải pháp dựa trên vùng chứa (bao gồm cả những ứng dụng được xây dựng bằng AWS Elastic Beanstalk).

AWS CloudFormation hỗ trợ các môi trường ứng dụng Elastic Beanstalk là một trong các loại tài nguyên AWS. Ví dụ, điều này cho phép bạn tạo và quản lý ứng dụng được lưu trữ trên AWS Elastic Beanstalk cùng với cơ sở dữ liệu RDS để lưu trữ dữ liệu ứng dụng. Ngoài các phiên bản RDS, mọi tài nguyên AWS được hỗ trợ khác cũng có thể được thêm vào nhóm.


1

Elastic Beanstalk tự động xử lý việc triển khai, từ cung cấp dung lượng, cân bằng tải, tự động mở rộng quy mô đến theo dõi tình trạng ứng dụng dựa trên mã bạn tải lên nó, trong đó CloudFormation là công cụ cung cấp tự động được thiết kế để triển khai toàn bộ môi trường đám mây thông qua tập lệnh JSON.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.