Tôi rất mới về kiến trúc đám mây nhưng có kinh nghiệm phát triển ứng dụng tốt. Hiện tại, tôi đang trong quá trình tạo ra một quy trình tính toán lớn có thể truy cập dễ dàng hơn đối với 5-10 người dùng thông qua một ứng dụng web và tôi đang thiết lập tất cả điều này trong AWS.
Triển khai hiện tại của tôi là một ứng dụng web React nhẹ sử dụng hai API và phụ trợ MySQL cho phép người dùng xếp hàng công việc với các tham số và truy cập kết quả cuối cùng thông qua ứng dụng web hoặc từ email được gửi cho người dùng sau khi chạy xong.
Ở giữa quy trình này là sự phụ thuộc vào một phần mềm độc quyền cần một cỗ máy rất nặng để tính toán các bước này (ram 64GB, 16 lõi, ổ cứng 1TB) và có thể chạy trong tối đa 1,5 ngày chỉ với một bước này. Đây là cổ chai lớn nhất của tôi trong toàn bộ đường ống.
Để tiết kiệm chi phí nhiều nhất có thể, tôi đang cố gắng làm cho nút cổ chai/phần dịch vụ có thể mở rộng/hiệu quả về chi phí bằng cách bật nhiều "tác nhân" phiên bản EC2, chạy các bước, gửi email, viết thư lên web cơ sở dữ liệu ứng dụng, sau đó dừng phiên bản thông qua các hàm lambda AWS sẽ được kích hoạt bởi một hành động từ ứng dụng web.
Tôi đang lên kế hoạch lưu trữ một phiên bản EC2 cho ứng dụng web, 2 API và máy chủ MySQL vì tính đồng thời/khả năng mở rộng trên phần này rất nhỏ. Tôi cũng sẽ có 1-3 trường hợp khác cho các dịch vụ thắt cổ chai để chia sẻ các lần chạy đồng thời từ 5-10 người dùng, điều này có thể cho phép tối đa 3 lần chạy bước nặng diễn ra cùng một lúc.
Vì các dịch vụ nút cổ chai yêu cầu các tệp tương tự để chạy chương trình và đầu vào cho các bước này đôi khi có thể có kích thước tệp là 150 GB, tôi đang nghĩ đến việc sử dụng bộ lưu trữ EFS hoặc S3 để giữ đầu vào để tôi chỉ phải lo lắng về việc chuyển đầu vào các tệp vào một nơi có thể được chia sẻ trên các phiên bản EC2 và tôi không cần đảm bảo rằng chúng đã bắt đầu thực hiện bước chuyển. Đây là một phần thủ công mà tôi cũng chưa tìm ra cách tốt để tự động hóa hơn vì kích thước tệp quá lớn.
Câu hỏi của tôi là thiết lập của tôi có hợp lý không và bạn có thấy bất kỳ lỗ hổng nào trong ý tưởng triển khai của tôi không? Hiện tại, tôi đang sử dụng bộ lưu trữ EBS cho các phiên bản dịch vụ nhưng tôi muốn giảm thiểu vị trí đầu vào cho 150GB chuyển/bảo trì. Tôi cũng không chắc về sự khác biệt giữa S3 và EFS vì dường như cả hai đều có thể gắn đa phiên bản, nhưng tôi nên sử dụng phiên bản nào? Và có hợp lý không khi giữ ứng dụng web, api và cơ sở dữ liệu trên một phiên bản EC2 nếu tôi cần các dịch vụ có thể ghi vào cơ sở dữ liệu sau khi hoàn thành? Trường hợp đó sẽ luôn luôn diễn ra.
Cảm ơn sự giúp đỡ của bạn và tha thứ cho tôi nếu tôi đã nói bất cứ điều gì ngây thơ.