Những ưu và nhược điểm của AWS Elastic Beanstalk so với các chiến lược triển khai khác là gì?


17

Tôi khá mới đối với toàn bộ ngăn xếp và triển khai OSS của Netflix nói chung. Là một nền tảng cho trình độ kiến ​​thức hiện tại của tôi, thông minh, vai trò chính của tôi là một kỹ sư ứng dụng. Tuy nhiên, tôi thích phần hoạt động của mọi thứ, vì vậy tôi đang cố gắng thiết lập một chiến lược triển khai mới và công cụ cho một dự án mới.

Mục tiêu của chúng tôi

  • Triển khai siêu dễ dàng (chúng tôi muốn nhấn nút để cập nhật sản xuất)
  • Tự động triển khai để kiểm tra môi trường (sử dụng Jenkins)
  • Dễ bảo trì (chúng tôi có một ứng dụng để viết, không muốn dành thời gian của chúng tôi lo lắng về các vấn đề sản xuất)
  • Khả năng xử lý kiến ​​trúc hướng dịch vụ (nhiều ứng dụng nhỏ, ngôn ngữ và kho dữ liệu khác nhau)
  • Đủ linh hoạt để đảm bảo chúng tôi sẽ không phải thay đổi chiến lược bất kỳ lúc nào (chúng tôi đã cố gắng thoát khỏi RightScale)

Sẽ ổn với thời gian thiết lập ban đầu hơn một chút nếu làm như vậy sẽ giúp chúng tôi tiết kiệm được một số vấn đề đau đầu trong tương lai.

Vì vậy, dọc theo những dòng này, tôi đã nghe podcast, xem các cuộc nói chuyện của Ops và đọc hàng tấn bài đăng trên blog và dựa trên mục tiêu của chúng tôi và những gì tôi đã thực hiện để hình thành một số thực tiễn tốt nhất, chúng tôi đã bắt đầu lập một kế hoạch bằng cách sử dụng Asgard, cuộn gói của chúng tôi vào một cái lọ và lăn nó vào một AMI.

Chúng tôi đã lên kế hoạch tất cả và thích những lợi thế của quy trình so với sử dụng máy chủ Chef và hội tụ nhanh chóng (chúng tôi cảm thấy đây là lỗi dễ xảy ra do dòng thời gian hạn chế của chúng tôi và thiếu hiểu biết về quy trình làm việc của máy chủ Chef). Tuy nhiên, một đồng nghiệp đã tự mình nhìn xung quanh một chút và cảm thấy như Cây đậu đàn hồi đáp ứng nhu cầu của chúng tôi.

Tôi đã xem xét nó và tạo ra một môi trường thử nghiệm với tệp WAR và cơ sở dữ liệu RDS đính kèm. Mọi thứ dường như hoạt động và tôi tin rằng chúng ta có thể tự động hóa triển khai vào môi trường thử nghiệm bằng Jenkins thông qua API AWS. Có vẻ đủ đơn giản ... có lẽ quá đơn giản.

Điều tôi đang tự hỏi là, cái gì bắt được? Nếu Bean Beanalk rất đơn giản và hiệu quả, tại sao nó không được nói đến nhiều hơn? Tôi đang gặp khó khăn trong việc tìm đủ ý kiến ​​khách quan và sự thật về hai chiến lược triển khai khác nhau, vì vậy tôi nghĩ tôi sẽ hỏi xung quanh.

Bạn có sử dụng đàn hồi Beanstalk? Nếu vậy, tại sao và những yếu tố dẫn đến quyết định đó? Bạn thích và không thích điều gì?

Nếu bạn không sử dụng Bean Beanalk nhưng xem xét nó, bạn sẽ sử dụng cái gì và tại sao bạn không sử dụng Elastic Beanstalk?

Những lợi thế và bất lợi của chiến lược triển khai dựa trên cơ sở đàn hồi cho một SOA là gì? Đó là, liệu Bean Beanalk có hoạt động tốt với nhiều ứng dụng nhỏ dựa vào nhau để hoạt động không?

Câu trả lời:


11

Tôi đã đánh giá Elastic Beanstalk ngoài các dịch vụ AWS khác trong khi cố gắng cải thiện các phiên bản AWS được cuộn bằng tay của chúng tôi. Những lý do tôi chọn không sử dụng nó là do các biến chứng sẽ xuất hiện khi di chuyển ứng dụng hiện tại của tôi chứ không phải do bản thân dịch vụ cung cấp. Điều hấp dẫn là bạn không có nhiều quyền kiểm soát về việc triển khai / cấu hình ứng dụng của các máy chủ. Nếu bạn đang bắt đầu một ứng dụng mới thì có thể hữu ích để không phải đối phó với những điều đó ngay bây giờ, nếu bạn có một ứng dụng hiện có thì việc thử nghiệm mô hình Beanstalk sẽ là một thách thức hơn.

Beanstalk cung cấp một dịch vụ tương tự cho Heroku và các nhà cung cấp PaaS khác nhưng không mang lại nhiều lợi ích cho những người chỉ muốn tập trung vào việc tạo ra ứng dụng của họ. Bạn ít nhất có thể xác định các tài nguyên ảo hóa ở mức độ lớn hơn các nhà cung cấp PaaS khác.

Các vấn đề mà tôi gặp phải với (các) ứng dụng của mình:

  • Triển khai dựa trên Git - Tôi yêu chúng nhưng repo của chúng tôi là hơn 1 GB. Khá lớn để đẩy một cách thường xuyên. Repo này cũng chứa khoảng 40 ứng dụng (thực sự nên được chia) nhưng sẽ mất một thời gian. Tải lên bất kỳ loại gói nào cũng có thể hoạt động nhưng hầu hết các ứng dụng của chúng tôi sẽ mất một lượng lớn công việc để biến nó thành một gói.

  • Tích hợp với các dịch vụ khác - Từ những gì tôi đã thấy Beanstalk giả định rằng mọi thứ bạn đang kết nối là một dịch vụ duy nhất. Điều này hoạt động tốt nếu các dịch vụ của bạn đứng sau và ELB nhưng là các nút riêng biệt mà chúng tôi đạt được thông qua HAProxy chạy trên mỗi máy chủ ứng dụng. Nếu bạn đang chạy kho dữ liệu của mình và các dịch vụ khác như một điểm cuối duy nhất, bạn sẽ ổn thôi.

Trong đánh giá của tôi, tôi cũng bao gồm OpsWorks và CloudFormation. OpsWorks có các vấn đề tích hợp tương tự với cách tự động hóa hiện có hoạt động cho các ứng dụng này. CloudFormation không làm được gì nhiều hơn những gì mà một số tập lệnh Python và Chef đã chăm sóc cho chúng tôi.

Tôi cố gắng chọn sử dụng Nhóm tự động AWS thay vì một số tự động hóa được cung cấp bởi Asgard . Đây là thay đổi nhỏ nhất đối với mã cấu hình / ứng dụng hiện có và cung cấp cho chúng tôi những lợi ích mà chúng tôi đang tìm kiếm, quản lý đơn giản nhiều máy chủ có sẵn thông qua API AWS.

Các hạn chế được đặt ra bởi Elastic Beanstalk trên ứng dụng của bạn là rất hữu ích. Bạn sẽ phải đảm bảo rằng ứng dụng của bạn hầu hết không trạng thái, cung cấp điểm cuối cho một dịch vụ và dựa vào các dịch vụ khác cho nhà nước. Nếu bạn đang cố gắng tạo ra các dịch vụ độc lập có thể tái sử dụng thì nhiều ứng dụng trong Beanstalk là một khởi đầu tuyệt vời.

Nếu / khi bạn đạt đến điểm muốn cấu hình nhiều hơn, OpsWorks là bước tiếp theo tuyệt vời. Các vai trò được xác định trước sẽ giúp quá trình chuyển đổi dễ dàng bắt đầu và nó cung cấp khung tự động hóa xung quanh Chef để giúp điều phối việc cung cấp nhiều máy chủ.


2
Câu trả lời tuyệt vời, Philip. Dường như hạn chế lớn nhất đối với đàn hồi Beanstalk là bất cứ điều gì AMI cơ sở đã thiết lập trên đó. Vì vậy, vâng, đối với một dịch vụ cơ bản, không quốc tịch, nó dường như là tuyệt vời. Tuy nhiên, một khi bạn cần chạy nhiều dịch vụ (ví dụ: nginx, giám sát chuyên ngành) trong một trường hợp duy nhất, bạn phải cuộn AMI của riêng mình và sau đó mất các bản cập nhật tự động của AMI cho các dịch vụ AWS. Vào thời điểm đó, bạn đang tham gia vào một quy trình triển khai tùy chỉnh. Cảm giác của tôi là đó là khoảng thời gian bạn muốn xem xét chuyển khỏi EB.
James van Dyke

0

Tôi thấy điểm mất kiểm soát, nhưng tôi không nhất thiết phải thấy tình trạng không quốc tịch bắt buộc. Tất cả eb thực sự là triển khai tự động hóa, mà bằng cách này là tuyệt vời. Tôi thấy điểm của một kho lưu trữ lớn. Tôi nghĩ nói chung rằng việc tách các chức năng ứng dụng logic thành các ứng dụng đậu riêng biệt và sau đó có các môi trường "dàn dựng" và "prod" bên dưới, thực sự rất hay. Chúng tôi có các môi trường mô-đun như trình tải lên, nó không làm được gì nhiều và về lý thuyết, nó làm tăng thêm rất nhiều chi phí, nhưng sau đó bạn đang sử dụng các phiên bản nhỏ hơn. Chúng tôi chạy một nginx tập trung và phải viết rất nhiều tay cầm tin nhắn sns tùy chỉnh để thông báo cho ngnix về những thay đổi trong chính sách quy mô tự động. Một vấn đề lớn khác của eb là không có khả năng cân bằng tải turd, vì chúng tôi sử dụng ngnix, tại sao? elb không hỗ trợ websocket.

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.