Triển khai thủ công so với Amazon Elastic Beanstalk


114

Những lợi ích mà chúng tôi nhận được khi sử dụng Elastic Beanstalk qua việc tạo phiên bản EC2 theo cách thủ công và thiết lập máy chủ tomcat và triển khai, v.v. cho một ứng dụng web java điển hình. Có phải cân bằng tải, Giám sát và tự động thay đổi tỷ lệ là những lợi thế duy nhất?

Giả sử đối với ứng dụng web của tôi sử dụng cơ sở dữ liệu, tôi đã cài đặt cơ sở dữ liệu trong chính phiên bản EC2. Khi Autoscalling diễn ra, cơ sở dữ liệu sẽ được tạo trong phiên bản mới được tạo hay nó sẽ truy cập vào cơ sở dữ liệu mà tôi đã tạo trong phiên bản chính ... Nếu nó chỉ tạo một bản sao khi tự động phân tỷ lệ xảy ra thì việc đồng bộ hóa dữ liệu sẽ diễn ra như thế nào giữa các phiên bản?

Câu trả lời:


144

Tất cả những thứ bạn đã đề cập như cân bằng tải, giám sát và tự động mở rộng quy mô chắc chắn là lợi thế.

Tuy nhiên, bạn phải nghĩ về nó theo cách này: Trong Nền tảng như một Dịch vụ (PAAS) thực sự, mục tiêu là tách ứng dụng khỏi nền tảng. Là một nhà phát triển, bạn chỉ lo lắng về ứng dụng của mình. Nền tảng được "thuê" cho bạn. "Phiên bản" của nền tảng được tự động cập nhật, quản lý, mở rộng quy mô, cân bằng, v.v. cho bạn. Bạn chỉ cần tải lên tệp WAR của mình và nó chỉ hoạt động (ít nhất là về mặt lý thuyết).

Bản thân EC2 không phải là PAAS. Nó giống như IAAS ( Cơ sở hạ tầng như một dịch vụ ). Bạn vẫn phải chăm sóc các phiên bản máy chủ, cài đặt phần mềm trên chúng, cập nhật chúng, v.v.

Elastic Beanstalk là một hệ thống PAAS. Vì vậy, là App EngineAzure trong số rất nhiều người khác.

Trong một hệ thống PAAS thực sự, DBMS là một thành phần riêng biệt với (các) máy chủ ứng dụng web. Lý do là rõ ràng: Không thể cài đặt DBMS trên các phiên bản đang được sử dụng cho máy chủ ứng dụng bởi vì, khi các phiên bản được tạo và hủy dựa trên lưu lượng truy cập của bạn, DBMS sẽ bị mất! Có DBMS và máy chủ ứng dụng trên cùng một máy / phiên bản thường không phải là một ý kiến ​​hay.

Trong hệ thống PAAS, DBMS là một dịch vụ riêng biệt. Đối với Amazon, nó sẽ là Amazon RDS . Cũng giống như với Elastic Beanstalk, nơi bạn không phải lo lắng về máy chủ ứng dụng và bạn chỉ cần tải lên tệp WAR của mình, với RDS, bạn không phải lo lắng về DBMS và bạn chỉ cần triển khai (các) cơ sở dữ liệu của mình.

Elastic Beanstalk và RDS hoạt động rất tốt cùng nhau, đặc biệt khi được triển khai trong cùng một vùng khả dụng, nơi độ trễ sẽ rất thấp.

Cuối cùng, sử dụng Elastic Beanstalk không tốn bất kỳ chi phí nào hơn các tài nguyên đã triển khai (các phiên bản EC2 và bộ cân bằng tải). Tuy nhiên, RDS không rẻ và chắc chắn sẽ đắt hơn so với việc sử dụng một phiên bản EC2 duy nhất cho cả máy chủ ứng dụng và DBMS.


3
Tốt lắm. Chỉ là một phần bổ sung: bạn có thể chỉ định AMI tùy chỉnh để làm cơ sở cho mỗi lần tạo phiên bản. Vì vậy, bạn có thể ví dụ: tùy chỉnh một hình ảnh Apache với tất cả các cấu hình và ứng dụng cần thiết và sử dụng nó làm AMI cơ sở (có trường ID AMI tùy chỉnh trên cấu hình môi trường Beanstalk) Tuy nhiên, dữ liệu được tạo trong thời gian chạy sẽ thực sự bị xóa khi kết thúc phiên bản (và bộ cân bằng tải sẽ làm điều đó!).
André Felipe

1
Một điều khiến tôi mất cảnh giác là thực tế là Elastic Beanstalk tạo ra một bộ cân bằng tải cho mỗi môi trường được triển khai. Bộ cân bằng tải không thực sự đắt tiền để chạy nhưng chúng có giá tương đương với một phiên bản vi mô.
Ken Liu

@KenLiu, Load Balancer mạnh hơn một phiên bản vi mô.
BigSack

7
@BigSack - điểm tôi đang cố gắng đưa ra là Elastic Beanstalk được cho là miễn phí nhưng AWS không nói rõ rằng mỗi môi trường sẽ phân bổ một bộ cân bằng tải sẽ khiến bạn mất khoảng 15 đô la một tháng. Tôi đã không so sánh với một phiên bản vi mô.
Ken Liu

Theo những gì tôi biết, ngày nay RDS có giá gần tương đương với EC2, đồng thời cung cấp tiện ích, khả năng bảo trì và độ tin cậy cao hơn nhiều.
Justin Schier

38

Elastic Beanstalk không chỉ cân bằng tải, giám sát và tự động điều chỉnh tỷ lệ.

1) Quản lý các phiên bản ứng dụng bằng cách lưu trữ và quản lý các phiên bản khác nhau của ứng dụng, cho phép bạn dễ dàng chuyển đổi qua lại giữa các phiên bản ứng dụng khác nhau.

2) Có khái niệm về "môi trường" cho từng ứng dụng, cho phép bạn triển khai các phiên bản khác nhau của ứng dụng trong mỗi môi trường. Điều này rất hữu ích, chẳng hạn như nếu bạn muốn thiết lập môi trường QA và DEV riêng biệt và bạn muốn dễ dàng triển khai một bản dựng trước trong DEV, sau đó triển khai cùng một phiên bản ứng dụng trong QA khi nhóm QA của bạn đã sẵn sàng cho bản dựng tiếp theo.

3) Bên ngoài các thuộc tính cấu hình vùng chứa quan trọng (ví dụ: cài đặt bộ nhớ Tomcat) vào bảng điều khiển Elastic Beanstalk và API. Do đó, bạn có thể dễ dàng lưu cài đặt và sao chép chúng giữa các môi trường.

4) Xem tệp nhật ký ứng dụng thông qua bảng điều khiển và tự động cuộn và lưu trữ tệp nhật ký vào S3. (Phải thừa nhận rằng tính năng này hiện hơi yếu.)


Dù sao theo quan niệm của tôi, tôi nghĩ anh ấy muốn hiểu về hiệu suất, điều mà tôi không thích ở cây đậu, trục trặc khi triển khai và các trường hợp thảm họa, và mọi thứ có thể giống hoặc tốt hơn khi sử dụng LAMBDA. Khó nhưng nó là một viên đạn bạc cho bạn tính sẵn sàng cao.
Lucas Rodrigues Sena,

Chỉ cần thêm vào điểm cuối cùng: bạn có thể gửi tất cả nhật ký ứng dụng đến CloudWatch một cách độc đáo.
SebaGra

6

Tôi đã có một ứng dụng được triển khai cả trong EC2 dành riêng (Nginx & Gunicorn) và Môi trường Beanstalk (CentOS & Apache2).

Quan sát của tôi:

  • BeanStalk là Paas. Tạo phiên bản EC2 (IAAS) theo cách thủ công, giống như làm mọi thứ từ đầu, nhưng bạn có quyền kiểm soát vững chắc.

  • BeanStalk đi kèm với CentOS và Apache (Httpd) mặc định. Bạn có thể chọn hệ điều hành trong trường hợp chuyên dụng.

  • Những điều quan trọng đối với tôi,

    • Có rất nhiều lỗi 504 hiển thị trong môi trường Beanstalk.
    • Rất khó để gỡ lỗi khi máy chủ BeanStalk gặp sự cố, vì nhật ký cũng sẽ không hiển thị và không thể chuyển vào máy. Cái này rất quan trọng.
    • Cài đặt / cấu hình các công cụ như Celery, Redis (cần chạy một cổng khác), v.v.,. trong trường hợp chuyên dụng dễ dàng hơn nhiều.
  • Trong trường hợp của tôi, tôi phải mở rộng quy mô máy chủ (Beanstalk) để chạy cài đặt một số gói (như pandoc). Những thứ này đơn giản hơn trong Ubuntu.

  • Mở rộng quy mô dễ dàng hơn nhiều trong BeanStalk. Máy chủ nhân bản rất đơn giản trong BeanStalk.

  • Tôi đã chụp vi mô trong cả hai trường hợp (chuyên dụng & Beanstalk). Tôi cảm thấy phiên bản vi mô chuyên dụng đã tốt hơn.

  • Triển khai tự động trong Beanstalk. Tôi đã phải viết các script để tự động hóa giống nhau, điều này tốt thôi, vì nó chỉ diễn ra một lần.

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.