by James Beswick | on 11 MAY 2023 | in Amazon EventBridge, Amazon Managed Workflows for Apache Airflow (Amazon MWAA), AWS Step Functions, Serverless | Permalink | Share
Được viết bởi Uma Ramadoss, Specialist Integration Services, và Chandan Rupakheti, Solutions Architect.
Bài blog này cho thấy cách bạn có thể tiết kiệm chi phí bằng cách tự động dừng và khởi chạy môi trường Amazon Managed Workflows for Apache Airflow (Amazon MWAA). Nó mô tả cách bạn có thể giữ lại dữ liệu được lưu trữ trong cơ sở dữ liệu metadata và trình bày một giải pháp tự động bạn có thể sử dụng trong tài khoản AWS của bạn.
Khách hàng chạy các data pipelines từ đầu đến cuối với MWAA. Đây được coi là hình mẫu cần tuân theo để chạy môi trường không trong production để phát triển và kiểm thử. Môi trường không trong production thường không cần chạy liên tục do các yếu tố như giờ làm việc của nhóm phát triển. Vì không có cách tự động để dừng một môi trường MWAA khi không sử dụng và xóa một môi trường sẽ gây mất dữ liệu metadata, khách hàng thường chạy nó liên tục và trả toàn bộ chi phí.
Tổng quan
Amazon MWAA có distributed architecture với nhiều thành phần như bộ định thời, worker, máy chủ web, hàng đợi và cơ sở dữ liệu. Khách hàng xây dựng cá data piplines dưới dạng Directed Acyclic Graphs (DAGs) và chạy trong Amazon MWAA. DAGs sử dụng các biến và kết nối từ cơ sở dữ liệu metadata Amazon MWAA. Lịch sử chạy của DAG và dữ liệu liên quan được lưu trữ trong cùng cơ sở dữ liệu metadata. Cơ sở dữ liệu cũng lưu trữ thông tin khác như vai trò và quyền hạn của người dùng.
Khi bạn xóa môi trường Amazon MWAA, tất cả các thành phần bao gồm cơ sở dữ liệu được xóa để không tốn chi phí. Vì việc xóa bình thường này dẫn đến mất dữ liệu metadata, bạn cần một giải pháp tùy chỉnh để sao lưu dữ liệu và tự động xóa và tạo lại.
Ứng dụng mẫu xóa và tạo lại môi trường MWAA của bạn trong một khoảng thời gian được định thời do bạn định nghĩa bằng cách sử dụng Amazon EventBridge Scheduler. Nó xuất ra tất cả metadata vào một bucket Amazon S3 trước khi xóa và nhập lại metadata vào môi trường sau khi tạo lại. Vì đây là một cơ sở dữ liệu quản lý và bạn không thể truy cập vào cơ sở dữ liệu bên ngoài môi trường Amazon MWAA, nó sử dụng DAG để nhập và xuất dữ liệu. Toàn bộ quy trình được điều phối bằng AWS Step Functions.
Triển khai kiến trúc
Ứng dụng mẫu được upload tại GitHub repository. Đọc các bước trong readme để triển khai ứng dụng.
Ứng dụng mẫu triển khai các tài nguyên sau đây –
- Máy trạng thái Step Functions để tổ chức các bước cần thiết giúp xóa môi trường MWAA.
- Máy trạng thái Step Functions để tổ chức các bước cần thiết giúp tái tạo lại môi trường MWAA.
- Các quy tắc định thời của EventBridge để khởi động máy trạng thái tại thời điểm được định thời.
- S3 bucket để lưu trữ cơ sở dữ liệu metadata và các chi thiết của môi trường.
- Hai file DAG được tải lên trên nguồn của S3 bucket, được cấu hình với môi trường MWAA. Export DAG xuất ra metadata từ cơ sở dữ liệu để khôi phục S3 bucket. Với import DAG, nó sẽ lưu trữ metadata từ S3 bucket dự trữ tới môi trường MWAA được tạo mới.
- Các hàm AWS Lambda dùng để khởi động DAGs bằng cách sử dụng MWAA CLI API.
- Máy trạng thái Step Functions dùng để chờ quá trình khởi tạo và xóa các MWAA chạy trong một thời gian dài.
- Quy tắc Amazon EventBridge để thông báo về các hư hỏng của máy trạng thái. to notify on state machine failures.
- Chủ đề Amazon Simple Notification Service (Amazon SNS) là mục tiêu nhắm đến quy tắc EventBridge cho các thông báo sự cố.
- Amazon Interface VPC Endpoint for Step Functions cho môi trường MWAA được triển khai ở chế độ riêng tư.
Dừng luồng làm việc
Tại thời điểm được định thời, Amazon EventBridge Scheduler khởi động máy trạng thái Step Functions để dừng môi trường MWAA. Máy trạng thái thực hiện các hành động sau đây:
- Lấy các chi tiết của môi trường Amazon MWAA chẳng hạn như các cấu hình về airflow, IAM execution role, logging và VPC.
- Nếu môi trường không ở trong trạng thái “AVAILABLE”, nó sẽ thất bại luồng làm việc bằng cách chuyển sang nhánh trạng thái “Pausing unsuccessful”
- Nếu không thì nó sẽ chạy luồng làm việc bình thường và lưu trữ các chi tiết về môi trường trong S3 bucket, nhờ vậy mà Start workflow có thể khởi tạo lại môi trường với dữ liệu này.
- Kích hoạt MWAA DAG bằng AWS Lambda function để xuất metadata đến bucket Amazon S3. Bước này sử dụng Step Functions để chờ cho việc tích hợp callback token.
- Tiếp tục quy trình làm việc khi token từ nhiệm vụ được trả về từ DAG MWAAR
- Xóa môi trường Amazon MWAA.
- Chờ để xác nhận xóa.
Bắt đầu luồng làm việc
At a scheduled time, EventBridge Scheduler triggers the Step Functions state machine to recreate the MWAA environment. The steps in the state machine perform the following actions:
Tại một thời điểm đã được định thời, EventBridge Scheduler kích hoạt máy trạng thái Step Functions để tạo lại môi trường MWAA. Các bước trong máy trạng thái thực hiện các hành động sau đây:
- Truy xuất thông tin chi tiết về môi trường được lưu trữ trong Amazon S3 bucket theo luồng làm việc dừng.
- Tạo môi trường MWAA với cấu hình giống như ban đầu.
- Kích hoạt an MWAA DAG thông qua chức năng Lambda để khôi phục siêu dữ liệu từ nhóm S3 sang môi trường mới được tạo.
- Truy xuất thông tin chi tiết về môi trường được lưu trữ trong bộ chứa Amazon S3 theo quy trình dừng.
- Tạo môi trường MWAA với cấu hình giống như ban đầu.
- Kích hoạt MWAA DAG thông qua chức năng Lambda để khôi phục siêu dữ liệu từ nhóm S3 sang môi trường mới được tạo.
Tiết kiệm chi phí
Hãy xem xét một môi trường MWAA nhỏ ở us-east-2 với tối thiểu một worker, tối đa một worker và bộ lưu trữ dữ liệu 1GB.Tại thời điểm viết bài này, chi phí hàng tháng của môi trường là $357.80. Giả sử bạn sử dụng môi trường này từ 6 giờ sáng đến 6 giờ chiều các ngày trong tuần.
Định thời trong file env của ứng dụng mẫu sẽ trông như sau:
MWAA_PAUSE_CRON_SCHEDULE=’0 18 ? * MON-FRI *’
MWAA_RESUME_CRON_SCHEDULE=’30 5 ? * MON-FRI *’
Env
Dựa trên thời gian tạo môi trường MWAA từ 20 đến 30 phút, MWAA_RESUME_CRON_SCHEDULE được đặt vào lúc 5.30 chiều.
Giả sử trong một tháng có 21 ngày làm việc, chi phí hàng tháng của môi trường là 123,48 đô la và giảm đi 65,46% so với việc chạy môi trường liên tục:
- 21 ngày làm việc * 12 tiếng * 0.49 USD mỗi tiếng = $123.48
Các cân nhắc khác
Ứng dụng mẫu chỉ khôi phục dữ liệu được lưu trữ. Mặc dù quá trình xóa tạm dừng tất cả các DAG trước khi sao lưu, nhưng nó không thể dừng bất kỳ nhiệm vụ đang chạy hoặc thông báo đang trong hàng chờ. Nó cũng không sao lưu các nhiệm vụ không ở trạng thái hoàn thành. Điều này có thể dẫn đến mất lịch sử của nhiệm vụ cho các nhiệm vụ đang chạy trong quá trình sao lưu.
Theo thời gian, metadata tăng kích thước, làm tăng độ trễ trong hiệu suất truy vấn. Bạn có thể sử dụng DAG như trong ví dụ để dọn dẹp cơ sở dữ liệu thường xuyên.
Tránh các thiết lập catchup by default trong cài đặt môi trường thành true hoặc trong định nghĩa DAG trừ khi cần thiết. Tính năng catch up chạy tất cả các lần chạy DAG bị bỏ lỡ cho bất kỳ khoảng dữ liệu nào. Khi môi trường được tạo lại, nếu flag là true, nó sẽ bắt kịp các lần chạy DAG bị bỏ lỡ và có thể làm quá tải môi trường.
Kết luận
Tự động xóa và tạo lại môi trường Amazon MWAA là một giải pháp mạnh mẽ để tối ưu hóa chi phí và quản lý tài nguyên một cách hiệu quả. Bằng cách tuân thủ các bước được đề cập trong blog này, bạn có thể đảm bảo rằng môi trường MWAA của bạn sẽ được xóa và tạo lại mà không mất đi bất kỳ metadata hay cấu hình nào. Điều này cho phép bạn triển khai mã nguồn và cập nhật mới nhanh chóng và dễ dàng hơn, mà không cần phải cấu hình thủ công môi trường của bạn.
Tiềm năng tiết kiệm chi phí bằng cách chạy môi trường MWAA chỉ trong 12 giờ trong các ngày làm việc là đáng kể. Ví dụ cho thấy bạn có thể tiết kiệm lên đến 65% chi phí hàng tháng bằng cách lựa chọn tùy chọn này. Điều này làm cho nó trở thành một giải pháp hấp dẫn cho các tổ chức đang tìm cách giảm chi phí trong khi duy trì một mức hiệu suất cao.
Xem thêm tại samples repository để tìm hiểu thêm về Amazon MWAA. Nó chứa đa dạng các ví dụ và mẫu mà bạn có thể sử dụng để xây dựng các ứng dụng của riêng bạn.
Để tìm hiểu thêm về serverless, xem tại Serverless Land.
TAGS: contributed, serverless