AWS OpsWorks so với AWS Beanstalk và AWS CloudFormation?


86

Tôi muốn biết những ưu điểm và nhược điểm của việc sử dụng AWS OpsWorks vs AWS Beanstalk và AWS CloudFormation là gì?

Tôi quan tâm đến một hệ thống có thể tự động điều chỉnh tỷ lệ để xử lý bất kỳ yêu cầu web đồng thời nào với số lượng cao (Từ 1000 yêu cầu mỗi phút đến 10 triệu vòng / phút.), Bao gồm cả lớp cơ sở dữ liệu cũng có thể tự động mở rộng.

Thay vì có một phiên bản riêng biệt cho mỗi ứng dụng, Tốt nhất là tôi muốn chia sẻ một số tài nguyên phần cứng một cách hiệu quả. Trước đây, tôi chủ yếu sử dụng phiên bản EC2 + RDS + Cloudfront + S3

Hệ thống ngăn xếp sẽ lưu trữ một số ruby ​​có lưu lượng truy cập cao trên các ứng dụng đường ray mà chúng tôi đang di chuyển từ Heroku, cũng như một số ứng dụng python / django và một số ứng dụng PHP.

Cảm ơn trước.


2
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:


69

Tôi muốn biết ưu điểm và nhược điểm của việc sử dụng AWS OpsWorks vs AWS Beanstalk và AWS CLoudFormation là gì?

Câu trả lơi con phụ thuộc vao nhiêu thư.

AWS OpsWorks và AWS Beanstalk (tôi đã được nói) chỉ đơn giản là những cách khác nhau để quản lý cơ sở hạ tầng của bạn, tùy thuộc vào cách bạn nghĩ về nó. CloudFormation chỉ đơn giản là một cách tạo khuôn mẫu cho cơ sở hạ tầng của bạn.

Cá nhân, tôi quen thuộc hơn với Elastic Beanstalk, nhưng với mỗi loại riêng của họ. Tôi thích nó hơn vì nó có thể triển khai thông qua Git. Đó là thông tin công khai rằng Elastic Beanstalk sử dụng CloudFormation để khởi chạy môi trường của nó.

Đối với các dự án của tôi, tôi sử dụng song song cả hai. Tôi sử dụng CloudFormation để xây dựng môi trường VPC được cấu hình tùy chỉnh, nhóm S3 và bảng DynamoDB mà tôi sử dụng cho ứng dụng của mình. Sau đó, tôi khởi chạy môi trường Elastic Beanstalk bên trong VPC tùy chỉnh biết cách nói chuyện với tài nguyên S3 / DynamoDB.

Tôi quan tâm đến một hệ thống có thể tự động điều chỉnh tỷ lệ để xử lý bất kỳ yêu cầu web đồng thời nào với số lượng cao (Từ 1000 yêu cầu mỗi phút đến 10 triệu vòng / phút.), Bao gồm cả lớp cơ sở dữ liệu cũng có thể tự động mở rộng.

Dưới mui xe, OpsWorks và Elastic Beanstalk sử dụng EC2 + CloudWatch + Auto Scaling, có khả năng xử lý tải mà bạn đang nói đến. RDS cung cấp hỗ trợ cho cơ sở dữ liệu dựa trên SQL có thể mở rộng.

Thay vì có một phiên bản riêng biệt cho mỗi ứng dụng, Tốt nhất là tôi muốn chia sẻ một số tài nguyên phần cứng một cách hiệu quả. Trước đây, tôi chủ yếu sử dụng phiên bản EC2 + RDS + Cloudfront + S3

Tùy thuộc vào ý bạn nói về " một số tài nguyên phần cứng", bạn luôn có thể khởi chạy các phiên bản EC2 độc lập cùng với môi trường OpsWorks hoặc Elastic Beanstalk. Hiện tại, Elastic Beanstalk hỗ trợ một ứng dụng web cho mỗi môi trường. Tôi không nhớ OpsWorks hỗ trợ những gì.

Hệ thống ngăn xếp sẽ lưu trữ một số ruby ​​có lưu lượng truy cập cao trên các ứng dụng đường ray mà chúng tôi đang di chuyển từ Heroku, cũng như một số ứng dụng python / django và một số ứng dụng PHP.

Tất cả những điều này đều được AWS hỗ trợ đầy đủ. OpsWorks và Elastic Beanstalk đã tự tối ưu hóa cho một loạt các môi trường phát triển (Ruby, Python và PHP đều có trong danh sách), trong khi EC2 cung cấp các máy chủ thô nơi bạn có thể cài đặt bất kỳ thứ gì bạn muốn.


3
OpsWorks xử lý các triển khai git mặc dù khác nhau. Trong trường hợp triển khai git ElasticBeanstalk được đẩy từ repo bằng CLI, OpsWorks sử dụng quyền truy cập chỉ đọc vào repo bằng SSH (hoặc HTTPS nếu repo công khai).
Jack Frost

@Ryan Như đã đề cập Beanstalk sử dụng các mẫu kiểu hình thành Đám mây trong nền để tạo cơ sở hạ tầng cần thiết.
Mohd Belal

22

OpsWorks là một công cụ điều phối giống như Chef - trên thực tế, nó có nguồn gốc từ Chef - Puppet, Ansible hoặc Saltstalk. Bạn sử dụng Opsworks để chỉ định trạng thái mà bạn muốn mạng của mình ở đó bằng cách chỉ định trạng thái mà bạn muốn từng tài nguyên - phiên bản máy chủ, ứng dụng, bộ nhớ - ở đó. Và bạn chỉ định trạng thái mà bạn muốn mỗi tài nguyên ở đó xác định giá trị mà bạn muốn cho từng thuộc tính của trạng thái đó. Ví dụ: bạn có thể muốn dịch vụ Apache luôn hoạt động và bắt đầu khởi động với Apache là người dùng và Apache là nhóm Linux.

CloudFormation là một mẫu json (**) chỉ định trạng thái của (các) tài nguyên mà bạn muốn triển khai tức là bạn muốn triển khai phiên bản AWS EC2 micro t2 ở us-East-1 như một phần của VPC 192.168.1.0/24 . Trong trường hợp của một phiên bản EC2, bạn có thể chỉ định những gì sẽ chạy trên tài nguyên đó thông qua tập lệnh bash tùy chỉnh của bạn trong phần dữ liệu người dùng của tài nguyên EC2. CloudFormation chỉ là một mẫu. Mẫu được coi là tài nguyên đang chạy chỉ khi bạn chạy nó thông qua Bảng điều khiển quản lý AWS cho CloudFormation hoặc nếu bạn chạy lệnh aws cli cho Cloudformation tức là aws cloudformation ...

ElasticBeanstalk là một PAAS- bạn có thể tải lên các ứng dụng Ruby / Rails, node.js hoặc Python / django hoặc Python / Flask cụ thể. Nếu bạn đang chạy bất kỳ thứ gì khác như Scala, Haskell hoặc bất kỳ thứ gì khác, hãy tạo một hình ảnh Docker cho nó và tải hình ảnh Docker đó lên Elastic Beanstalk (*).

Bạn có thể thực hiện việc tải ứng dụng của mình lên Elastic Beanstalk bằng cách chạy aws cli cho CloudFormation hoặc bạn tạo một công thức cho Opsworks để tải ứng dụng của bạn lên Elastic Beanstalk. Bạn cũng có thể chạy cli aws cho Cloudformation thông qua Opsworks.

(*) Trên thực tế, tài liệu của AWS về ví dụ ứng dụng Ruby của nó quá kém nên tôi đã mất kiên nhẫn và nhúng ứng dụng mẫu vào hình ảnh Docker và tải hình ảnh Docker lên Elastic Beanstalk.

(**) Kể từ tháng 9 năm 2016, Cloudformation cũng hỗ trợ các mẫu YAML.


8

Trong Opsworks, bạn có thể chia sẻ "vai trò" của các lớp trên một ngăn xếp để sử dụng ít tài nguyên hơn bằng cách kết hợp các công việc cụ thể mà một phiên bản bên dưới có thể làm.

Danh sách tương thích lớp (miễn là các nhóm bảo mật được đặt đúng cách):

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. 

tham khảo: http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: Đó là Triển khai và quản lý các ứng dụng trên đám mây AWS mà không cần lo lắng về cơ sở hạ tầng chạy các ứng dụng web của bạn với Elastic Beanstalk. Không cần phải lo lắng về EC2 hoặc các cài đặt khác.

AWS OpsWorks AWS OpsWorks không là gì ngoài một dịch vụ quản lý ứng dụng giúp người dùng DevOps mới dễ dàng lập mô hình và quản lý toàn bộ ứng dụng của họ


1
Tôi nghĩ câu trả lời này là không chính xác. Thực tế là ngược lại. Mặc dù Elastic Beanstalk chỉ là một PaaS, nhưng với OpsWorks, bạn có trách nhiệm tạo một ngăn xếp bằng cách sử dụng các thành phần thích hợp. Định nghĩa 'Đối với DevOps mới' sẽ áp dụng cho người dùng EB, không phải OpsWorks '.
Fearguy

3

AWS CloudFormation - Tạo và cập nhật môi trường của bạn.

AWS Opsworks - Quản lý hệ thống của bạn bên trong môi trường đó giống như chúng tôi làm với Chef hoặc Puppet

AWS Beanstalk - Tạo, Quản lý và Triển khai.

Nhưng cá nhân tôi thích CloudFormation và OpsWorks bằng cách sử dụng toàn bộ sức mạnh của nó cho những gì chúng có ý nghĩa.

Sử dụng CloudFormation để tạo môi trường của bạn, sau đó bạn có thể gọi Opsworks từ các tập lệnh hình thành đám mây để khởi chạy máy của mình. Sau đó, bạn sẽ có ngăn xếp Opsworks để quản lý nó. Ví dụ: thêm một người dùng trong hộp linux bằng cách sử dụng Opsworks hoặc thực hiện vá các hộp của bạn bằng công thức đầu bếp. Bạn cũng có thể viết ra các công thức nấu ăn của đầu bếp để triển khai. Nếu không, bạn có thể sử dụng CodeDeploy bản dựng cụ thể để triển khai.


3

AWS OpsWorks - Đây là một phần của dịch vụ quản lý AWS. Nó giúp cấu hình ứng dụng bằng cách sử dụng script. Nó sử dụng Chef làm khung công tác devops để quản lý và vận hành ứng dụng này. Có các mẫu có thể được sử dụng để cấu hình máy chủ, cơ sở dữ liệu, lưu trữ. Các mẫu cũng có thể được tùy chỉnh để thực hiện bất kỳ tác vụ nào khác. Kỹ sư DevOps có quyền kiểm soát các yếu tố phụ thuộc và cơ sở hạ tầng của ứng dụng.

AWS Beanstalk - Nó cung cấp môi trường cho các ngôn ngữ như Java, Node Js, Python, Ruby Go. Elastic Bean stalk cung cấp tài nguyên để chạy ứng dụng. Các nhà phát triển không phải lo lắng về cơ sở hạ tầng và họ không có quyền kiểm soát cơ sở hạ tầng.

AWS CloudFormation - CloudFormation có các mẫu mẫu để quản lý các tài nguyên AWS theo thứ tự.


0

Như nhiều người khác đã nhận xét AWS Beanstalk, AWS OpsWorks và AWS Cloud Formation cung cấp các giải pháp khác nhau cho các vấn đề khác nhau.

Để đạt được

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.

Và lưu ý rằng bạn đang trong quá trình di chuyển, tôi thực sự khuyên bạn nên bắt đầu xem xét giải pháp AWS Lambda & AWS DynamoDB (hoặc giải pháp kết hợp).

Cả hai đều được thiết kế để tự động mở rộng quy mô một cách đơn giản và có thể là một giải pháp rất rẻ.


-1

Chỉ cần sử dụng địa hình và ECS hoặc EKS.

opsworks, cây đậu đàn hồi và công nghệ cũ của đám mây. -)

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.