Lý do nên chọn SWF?

Dịch vụ quy trình đơn giản của Amazon (Amazon SWF) giúp các nhà phát triển xây dựng, chạy và điều chỉnh quy mô các tác vụ nền có các bước thực hiện song song hoặc theo trình tự. Bạn có thể coi Amazon SWF như một trình theo dõi trạng thái và trình điều phối tác vụ được quản lý toàn phần trên Đám mây.

Nếu các bước của ứng dụng của bạn mất trên 500 mili giây để hoàn thành, bạn cần theo dõi tình trạng của quá trình xử lý và nếu cần phục hồi hay thử lại khi có tác vụ không thành công, Amazon SWF có thể giúp bạn.

Nếu bạn đang tìm kiếm một dịch vụ luồng quy trình trực quan, cần viết ít mã để điều phối các dịch vụ AWS, tự động hóa quy trình kinh doanh hay phát triển các ứng dụng phi máy chủ, hãy tìm hiểu thêm về AWS Step Functions.

Lợi ích

Amazon SWF sẽ giúp bạn phân tách giữa luồng kiểm soát logic theo bước của tác vụ nền với đơn vị thực tế của công việc có chứa logic hoạt động kinh doanh duy nhất của bạn. Việc này giúp bạn quản lý, duy trì và thay đổi quy mô riêng biệt "bộ máy trạng thái" của ứng dụng của bạn từ logic hoạt động kinh doanh cốt lõi làm nên sự khác biệt. Khi yêu cầu hoạt động kinh doanh của bạn có sự thay đổi, bạn có thể dễ dàng thay đổi logic ứng dụng mà không phải lo lắng về bộ máy trạng thái bên dưới, gửi tác vụ và kiểm soát luồng.

Amazon SWF chạy trong các trung tâm dữ liệu có độ sẵn sàng cao của Amazon, giúp công cụ xử lý tác vụ và theo dõi có trạng thái sẵn sàng sử dụng ngay khi ứng dụng cần. Amazon SWF lưu trữ các tác vụ với số lượng nhiều hơn mức cần thiết, gửi các tác vụ này đến thành phần ứng dụng một cách đáng tin cậy, theo dõi tiến độ và duy trì trạng thái mới nhất.

Amazon SWF thay thế sự phức tạp của các giải pháp luồng quy trình được viết mã riêng và phần mềm tự động hóa quy trình bằng dịch vụ web luồng quy trình trên đám mây được quản lý đầy đủ. Khả năng này giúp các nhà phát triển không còn phải quản lý hệ thống cơ sở hạ tầng tự động hóa quy trình để có thể tập trung năng lượng vào việc xây dựng các tính năng độc đáo cho ứng dụng của mình.

Amazon SWF thay đổi quy mô theo mức sử dụng ứng dụng của bạn một cách trơn tru. Bạn sẽ không phải thực hiện bất kỳ thao tác quản trị thủ công nào đối với dịch vụ luồng quy trình trên đám mây khi thêm luồng quy trình vào ứng dụng của bạn hay tăng độ phức tạp của luồng quy trình.

Amazon SWF cho phép bạn ghi các thành phần và logic điều phối cho ứng dụng của bạn bằng bất kỳ ngôn ngữ lập trình nào và vận hành trên đám mây hoặc vận hành tại chỗ.

Chi tiết sản phẩm Amazon SWF

Sử dụng Amazon SWF để quản lý quy trình làm việc trong ứng dụng của bạn thật dễ dàng.

Chức năng Amazon SWF

Amazon SWF hoạt động như trung tâm điều phối cho tất cả các thành phần khác nhau trong ứng dụng của bạn:

  • Duy trì trạng thái ứng dụng
  • Theo dõi quá trình thực thi quy trình làm việc và ghi lại tiến trình của chúng
  • Giữ và điều phối tác vụ
  • Kiểm soát những tác vụ mà mỗi máy chủ ứng dụng của bạn sẽ được chỉ định để thực hiện

Để sử dụng Amazon SWF, bạn chỉ cần:

  • Sử dụng Bảng điều khiển quản lý AWS hoặc API Amazon SWF để chỉ định tên của quy trình làm việc.
  • Sử dụng API Amazon SWF để “bắt đầu” một quy trình làm việc mới, dẫn đến một chuỗi các tác vụ quy trình làm việc cụ thể đi vào hoạt động, được gọi là “thực thi quy trình làm việc”.
  • Sử dụng API Amazon SWF từ các máy thợ của bạn (“trình xử lý” là một thành phần trong ứng dụng xử lý các tác vụ cụ thể) để thiết lập thứ tự tác vụ, quản lý luồng có điều kiện và thực thi các vòng lặp để thực thi quy trình làm việc.
  • Sử dụng API Amazon SWF từ máy thợ của bạn để yêu cầu và thực thi các tác vụ quy trình làm việc trên đám mây hoặc tại chỗ.
  • Giám sát trạng thái và tiến độ thực thi quy trình làm việc và các tác vụ liên quan trong Bảng điều khiển quản lý AWS.

Phần hướng dẫn về mẫu trong Bảng điều khiển quản lý AWS sẽ hướng dẫn bạn các bước đăng ký và chạy ứng dụng mẫu. Để biết thêm thông tin, vui lòng tham khảo Tài liệu.

Mô tả chi tiết

Amazon SWF là một dịch vụ quy trình làm việc được quản lý toàn phần, dùng để xây dựng các ứng dụng có quy mô linh hoạt và khả năng phục hồi. Amazon SWF cung cấp các lệnh gọi API đơn giản có thể được thực thi từ mã, được viết bằng bất kỳ ngôn ngữ nào và chạy trên phiên bản EC2 của bạn hoặc bất kỳ máy nào có thể truy cập Internet ở bất cứ đâu trên thế giới.

Amazon SWF hoạt động như một trung tâm điều phối mà máy chủ ứng dụng của bạn tương tác. Bạn tạo quy trình làm việc mong muốn với các tác vụ liên quan của chúng và bất kỳ logic có điều kiện nào bạn muốn áp dụng và lưu trữ với Amazon SWF. Mỗi lần bạn thực thi một quy trình làm việc đều được xem là một lần thực thi riêng biệt. Bạn lập trình các thành phần ứng dụng của mình để yêu cầu thực hiện các tác vụ khác nhau trong quá trình thực thi quy trình làm việc của bạn và Amazon SWF sẽ điều phối để thực hiện các tác vụ theo thứ tự bạn đã chỉ định trên máy chủ của bạn (cho dù máy chủ nằm trong đám mây hay tại chỗ). Các ứng dụng giao tiếp với Amazon SWF bằng cách sử dụng API để ghi lại việc tác vụ chạy thành công hoặc thất bại. Sau đó, Amazon SWF tiếp tục chuỗi tác vụ bằng cách gán tác vụ quy trình làm việc tiếp theo cho máy chủ ứng dụng hoặc bằng cách chạy lại tác vụ thất bại tùy thuộc vào logic kinh doanh của bạn.

Đăng nhập vào Bảng điều khiển quản lý AWS để bắt đầu thực thi quy trình làm việc Amazon SWF. Ngoài ra, bạn có thể bắt đầu thực thi quy trình làm việc thông qua API Amazon SWF của chúng tôi. Amazon SWF sử dụng giao diện dịch vụ web đơn giản, dễ sử dụng và có độ linh hoạt cao:

  • StartWorkflowExecution: bắt đầu một chuỗi các tác vụ quy trình làm việc và cung cấp tác vụ đầu tiên cho một trong các máy chủ ứng dụng của bạn.
  • DescribeWorkflowExecution: cung cấp trạng thái thực thi quy trình làm việc và tác vụ của bạn.
  • PollForActivityTask: máy chủ ứng dụng của bạn (trong đám mây hoặc tại chỗ) yêu cầu và thực hiện các tác vụ quy trình làm việc trong một vòng lặp liên tục.
  • RespondActivityTaskCompleted: máy chủ ứng dụng thông báo cho Amazon SWF rằng máy chủ đã hoàn thành thành công một tác vụ. Amazon SWF sau đó sẽ tiếp tục thực thi quy trình làm việc bằng cách cung cấp tác vụ tiếp theo cho máy chủ ứng dụng.
  • TerminateWorkflowExecution: ngừng thực thi tiếp một quy trình làm việc cụ thể. Amazon SWF sẽ không chỉ định thêm bất kỳ tác vụ nào trong quá trình thực thi quy trình làm việc cụ thể này cho máy chủ ứng dụng.

Mục đích sử dụng và hạn chế

Khi sử dụng dịch vụ này, bạn phải tuân theo Thỏa thuận khách hàng Amazon Web Services.

Trường hợp sử dụng

Mã hóa video bằng Amazon S3 và Amazon EC2. Trong trường hợp sử dụng này, các video dung lượng lớn được tải lên Amazon S3 theo khúc dữ liệu. Việc tải lên khúc dữ liệu cần được theo dõi. Sau khi hoàn tất tải lên, khúc dữ liệu được mã hóa bằng cách tải xuống phiên bản Amazon EC2. Khúc dữ liệu đã mã hóa sẽ được lưu tại địa điểm Amazon S3 khác. Sau khi tất cả khúc dữ liệu đã được mã hóa theo cách này, chúng sẽ được kết hợp lại thành tệp mã hóa hoàn chỉnh được lưu lại toàn bộ vào Amazon S3. Lỗi có thể xảy ra trong quá trình này do một hoặc nhiều khúc dữ liệu gặp lỗi mã hóa. Các lỗi đó cần được phát hiện và xử lý thông qua dịch vụ quản lý luồng quy trình trên đám mây của Amazon SWF.

Di chuyển các thành phần từ trung tâm dữ liệu lên đám mây. Các hoạt động tối quan trọng của doanh nghiệp được lưu trữ trên trung tâm dữ liệu riêng nhưng cần được di chuyển toàn bộ lên đám mây mà không gây ra gián đoạn. Ứng dụng trên nền tảng Amazon SWF có thể kết hợp nhiều trình xử lý giúp đóng gói các thành phần chạy trong trung tâm dữ liệu với các trình xử lý chạy trên đám mây. Để chuyển đổi các trình xử lý của trung tâm dữ liệu một cách trơn tru, các trình xử lý mới cùng loại được triển khai trên đám mây trước. Các trình xử lý trong trung tâm dữ liệu tiếp tục chạy như bình thường, cùng với các trình xử lý trên đám mây mới. Các trình xử lý trên đám mây được chạy thử và xác thực bằng cách định tuyến một phần tải qua các trình xử lý đó. Trong quá trình chạy thử này, ứng dụng sẽ không bị gián đoạn do các trình xử lý trong trung tâm dữ liệu vẫn tiếp tục chạy. Sau khi chạy thử thành công, các trình xử lý trong trung tâm dữ liệu từ từ dừng hoạt động, còn các trình xử lý trên đám mây được tăng quy mô để chuyển hoàn toàn sang ứng dụng quản lý luồng quy trình trên đám mây. Quá trình xử lý luồng quy trình trên đám mây này có thể được lặp lại cho toàn bộ các trình xử lý khác trong trung tâm dữ liệu để ứng dụng được di chuyển hoàn toàn lên đám mây. Nếu vì lý do kinh doanh, bắt buộc phải tiếp tục thực hiện một số bước xử lý nhất định trong trung tâm dữ liệu riêng, các trình xử lý này có thể tiếp tục chạy trong trung tâm dữ liệu riêng và vẫn tham gia vào ứng dụng.

Xử lý danh mục sản phẩm lớn bằng cách sử dụng Amazon Mechanical Turk. Trong quá trình xác thực dữ liệu trong các danh mục lớn, các sản phẩm trong danh mục được xử lý theo lô. Nhiều lô khác nhau có thể được xử lý cùng lúc. Đối với mỗi lô, dữ liệu sản phẩm được trích xuất từ máy chủ trong trung tâm dữ liệu rồi chuyển thành tệp CSV (giá trị được phân tách bằng dấu phẩy) mà Giao diện người dùng bên yêu cầu (RUI) của Amazon Mechanical Turk yêu cầu. Tệp CSV được tải lên để tạo và chạy các HIT (Tác vụ sử dụng trí tuệ con người). Khi các HIT hoàn thành, tệp CSV kết quả sẽ được chuyển ngược lại để đưa dữ liệu về định dạng gốc. Sau đó, kết quả được đánh giá và các trình xử lý của Amazon Mechanical Turk được trả phí cho các kết quả được chấp nhận. Lỗi được loại bỏ và tái xử lý trong khi các kết quả HIT được chấp nhận sẽ được sử dụng để cập nhật danh mục. Khi các lô được xử lý, hệ thống cần theo dõi chất lượng của trình xử lý của Amazon Mechanical Turk và điều chỉnh mức thanh toán tương ứng. Các trường hợp HIT không thành công được tạo lô lại và gửi lại qua hệ thống.

AWS Flow Framework

AWS Flow Framework là một tập hợp các thư viện tiện lợi giúp xây dựng ứng dụng nhanh hơn và dễ dàng hơn với Amazon Simple Workflow.

Cách thức hoạt động

AWS Flow Framework có mô hình lập trình đơn giản, giúp dễ dàng xây dựng các ứng dụng thực hiện công việc trên nhiều máy. Với khung này, bạn nhanh chóng tạo và phối hợp các tác vụ, cũng như thể hiện quan hệ giữa các tác vụ này – tương tự như cách bạn làm trong một chương trình điển hình. Ví dụ: bạn có thể chạy một phương thức trong một ứng dụng trên máy tính “từ xa” một cách đơn giản bằng cách gọi một phương thức trong logic ứng dụng của bạn, được lưu trữ trên một máy tính “cục bộ” riêng biệt. AWS Flow Framework xử lý các thao tác qua lại phức tạp cần thiết để thực thi phương thức từ xa và trả kết quả về ứng dụng cục bộ bằng cách sử dụng thông tin được lưu trữ bởi dịch vụ Amazon Simple Workflow. Kết quả đầu ra của bất kỳ phương thức nào được thực thi đều có thể được sử dụng để kết nối các phần riêng biệt phụ thuộc vào nhau trong logic của bạn. Khung này cho phép bạn sử dụng cú pháp đơn giản để thể hiện quan hệ phụ thuộc giữa các phương thức bằng phương thức tiếp cận đơn giản “chặn và chờ gọi lại”. Khung này cũng cho phép bạn xử lý lỗi trên máy từ xa tựa như đó là lỗi cục bộ và cung cấp cho bạn những cách dễ dàng để xác định cách bạn muốn thử lại các phương thức quan trọng trong ứng dụng của mình nếu có lỗi xảy ra.

Lưu ý

AWS Flow Framework dành cho Ruby không còn được phát triển chủ động. Mặc dù mã hiện có sẽ tiếp tục hoạt động vô thời hạn, sẽ không có tính năng hoặc phiên bản mới nào. Mã nguồn của Flow Framework dành cho Ruby sẽ vẫn sẽ được cung cấp trên kho lưu trữ GitHub AWS SWF. Nếu ứng dụng Simple Workflow dựa trên Ruby của bạn đang phát triển và thay đổi, bạn nên xem xét các tùy chọn, bao gồm di chuyển sang AWS Step Functions hoặc sử dụng API Simple Workflow. Để biết chi tiết, hãy xem Hướng dẫn dành cho nhà phát triển AWS Simple Workflow.

Bằng cách sử dụng AWS Flow Framework, bạn chỉ cần viết mã đơn giản và để các đối tượng và lớp được dựng sẵn của khung xử lý các chi tiết của API Amazon Simple Workflow. AWS Flow Framework đảm nhiệm việc tạo và thực hiện các bước của ứng dụng, theo dõi tiến trình của ứng dụng, cho phép bạn xác định quy tắc thử lại khi các bước thất bại, v.v. Trong khi đó, Amazon Simple Workflow Service duy trì trạng thái thực thi của ứng dụng, giao tác vụ cho các máy thợ có sẵn và lưu giữ lịch sử kiểm tra cho tất cả các tác vụ của bạn.

AWS Flow Framework là khung nguồn mở Java và được phát triển và quản lý bởi AWS. Bạn có thể sử dụng các liên kết dưới đây để lấy thư viện, mã nguồn, tài liệu, mẫu, v.v.