ทำไมต้อง SWF

Amazon Simple Workflow Service (Amazon SWF) ช่วยให้นักพัฒนาสามารถสร้าง รัน และปรับขนาดงานในพื้นหลังซึ่งมีขั้นตอนที่ดำเนินควบคู่กันหรือตามลำดับ อาจมองได้ว่า Amazon SWF เป็นหน่วยติดตามสถานะและหน่วยประสานงานซึ่งมีการจัดกาเต็มรูปแบบในระบบคลาวด์

หากขั้นตอนในแอปของคุณกินเวลานานกว่า 500 มิลลิวินาทีกว่าจะเสร็จ ทำให้คุณจำเป็นต้องติดตามสถานะการประมวลผล และจำเป็นต้องกู้คืนหรือลองใหม่หากงานล้มเหลว Amazon SWF สามารถช่วยคุณได้ในเรื่องนี้

หากคุณกำลังมองหาบริการโฟลว์กระบวนการที่แสดงผลด้วยภาพแบบการเขียนโค้ดน้อยที่สุดเพื่อใช้ในการประสานบริการของ AWS, ทำให้กระบวนการทางธุรกิจเป็นอัตโนมัติ หรือสร้างแอปพลิเคชันแบบไม่ต้องมีเซิร์ฟเวอร์ เรียนรู้เพิ่มเติมเกี่ยวกับ AWS Step Functions

ประโยชน์

Amazon SWF ส่งเสริมให้มีการแยกลำดับการควบคุมตรรกะตามขั้นตอนงานในพื้นหลังและหน่วยของงานที่แท้จริงซึ่งมีตรรกะธุรกิจที่มีลักษณะเฉพาะตัวของคุณ การทำเช่นนี้จะช่วยให้คุณสามารถแยกจัดการ รักษาและปรับขนาด "เครื่องจักรตามสถานะ" ของแอปพลิเคชันออกจากตรรกะธุรกิจแกนหลักที่แตกต่างกัน เมื่อข้อกำหนดทางธุรกิจเปลี่ยน คุณก็สามารถเปลี่ยนตรรกะแอปพลิเคชันได้อย่างง่ายดายโดยไม่ต้องกังวลเรื่องเครื่องจักรตามสถานะที่แท้จริง การเลือกจ่ายงาน และการควบคุมลำดับงาน

Amazon SWF รันภายในศูนย์ข้อมูลที่มีความพร้อมใช้งานสูงของ Amazon ดังนั้น กลไกติดตามสถานะและประมวลผลงานจึงพร้อมใช้งานทุกเวลาที่แอปพลิเคชันจำเป็นต้องใช้ Amazon SWF จะจัดเก็บงานแบบมีการสำรองไว้ เลือกจ่ายงานให้กับส่วนประกอบของแอปพลิเคชันอย่างเชื่อถือได้ ติดตามความคืบหน้าของงานและจัดเก็บสถานะล่าสุดของงานไว้

Amazon SWF แทนที่โซลูชันโฟลว์กระบวนการแบบกำหนดโค้ดเฉพาะและซอฟต์แวร์กระบวนการอัตโนมัติซึ่งมีความซับซ้อน ด้วยบริการเว็บโฟลว์กระบวนการบนระบบคลาวด์ที่มีการจัดการอย่างเต็มรูปแบบ ซึ่งช่วยขจัดความจำเป็นที่ Developer จะต้องจัดการเรื่องระบบขั้นตอนโครงสร้างพื้นฐานของการทำให้กระบวนการเป็นอัตโนมัติออกไปได้ ดังนั้น จึงสามารถมุ่งความสนใจไปที่ฟังก์ชันการใช้งานแอปพลิเคชันที่มีลักษณะเฉพาะตัว

Amazon SWF สามารถปรับขนาดให้เข้ากับการใช้งานแอปพลิเคชันของคุณได้อย่างราบรื่น คุณไม่จำเป็นต้องดูแลบริการโฟลว์กระบวนการด้วยตนเองในตอนที่คุณเพิ่มจำนวนโฟลว์กระบวนการบนระบบคลาวด์ลงในแอปพลิเคชัน หรือเพิ่มความซับซ้อนของโฟลว์กระบวนการของคุณ

Amazon SWF ช่วยให้คุณเขียนส่วนประกอบและตรรกะในการทำงานประสานกันของแอปพลิเคชันเป็นภาษาโปรแกรมใด ๆ ก็ได้และสามารถรันในระบบคลาวด์หรือในองค์กรก็ได้

รายละเอียดผลิตภัณฑ์ Amazon SWF

การใช้ Amazon SWF เพื่อจัดการเวิร์กโฟลว์ภายในแอปพลิเคชันของคุณเป็นเรื่องง่าย

ฟังก์ชันการทำงานของ Amazon SWF

Amazon SWF ทำหน้าที่เป็นฮับการประสานงานสำหรับส่วนประกอบต่าง ๆ ทั้งหมดของแอปพลิเคชันของคุณ:

  • การรักษาสถานะแอปพลิเคชัน
  • ติดตามการดำเนินการเวิร์กโฟลว์และสร้างข้อมูลบันทึกความคืบหน้า
  • การจัดวางและการจัดส่งงาน
  • การควบคุมงานใดที่โฮสต์แอปพลิเคชันแต่ละรายการของคุณจะได้รับมอบหมายให้ดำเนินการ

เพื่อใช้ Amazon SWF คุณเพียงแค่:

  • ใช้คอนโซลการจัดการของ AWS หรือ Amazon SWF API เพื่อระบุชื่อของเวิร์กโฟลว์
  • ใช้ Amazon SWF API เพื่อ “เริ่ม” เวิร์กโฟลว์ใหม่ ซึ่งส่งผลให้ลำดับงานเวิร์กโฟลว์เฉพาะที่เรียกว่า “การดำเนินการเวิร์กโฟลว์” ถูกกระตุ้นให้ดำเนินการ
  • ใช้ Amazon SWF API จากเครื่องของโปรแกรมทำงานของคุณ (“โปรแกรมทำงาน” เป็นส่วนประกอบของแอปพลิเคชันของคุณที่จัดการกับงานเฉพาะ) เพื่อกำหนดลำดับงาน จัดการขั้นตอนตามเงื่อนไข และดำเนินการลูปสำหรับการดำเนินการเวิร์กโฟลว์
  • ใช้ Amazon SWF API จากเครื่องของโปรแกรมทำงานของคุณเพื่อขอและดำเนินการงานเวิร์กโฟลว์ในระบบคลาวด์หรือในองค์กร
  • ตรวจสอบสถานะและความคืบหน้าของการดำเนินการเวิร์กโฟลว์และงานที่เกี่ยวข้องในคอนโซลการจัดการของ AWS

คำแนะนำตัวอย่างใน คอนโซลการจัดการของ AWS จะนำคุณผ่านขั้นตอนในการลงทะเบียนและเรียกใช้แอปพลิเคชันตัวอย่าง โปรดดูเอกสารประกอบสำหรับข้อมูลเพิ่มเติม

คำอธิบายอย่างละเอียด

Amazon SWF เป็นบริการเวิร์กโฟลว์ที่มีการจัดการอย่างเต็มรูปแบบสำหรับการสร้างแอปพลิเคชันที่ปรับขนาดได้และยืดหยุ่น Amazon SWF ให้บริการการเรียกใช้ API ที่ง่ายดายซึ่งสามารถดำเนินการจากโคดที่เขียนในภาษาใดก็ได้และทำงานบนอินสแตนซ์ EC2 ของคุณหรือเครื่องใดก็ได้ในโลกที่สามารถเข้าถึงอินเทอร์เน็ตได้

Amazon SWF ทำหน้าที่เป็นฮับการประสานงานที่โฮสต์แอปพลิเคชันของคุณโต้ตอบด้วย คุณสร้างเวิร์กโฟลว์ที่ต้องการด้วยงานที่เกี่ยวข้องและตรรกะตามเงื่อนไขที่คุณต้องการนำไปใช้และจัดเก็บไว้ด้วย Amazon SWF แต่ละครั้งที่ดำเนินการเวิร์กโฟลว์ จะถือว่าเป็นการดำเนินการเวิร์กโฟลว์ที่แยกจากกัน คุณตั้งโปรแกรมส่วนประกอบของแอปพลิเคชันของคุณเพื่อขอให้งานต่าง ๆ ดำเนินการในการดำเนินการเวิร์กโฟลว์ของคุณ และ Amazon SWF จะประสานงานงานให้เสร็จสิ้นตามลำดับที่คุณระบุบนโฮสต์ของคุณ (ไม่ว่าโฮสต์จะอยู่ในคลาวด์หรือในองค์กรก็ตาม) แอปพลิเคชันจะสื่อสารกับ Amazon SWF โดยใช้ API เพื่อบันทึกความสำเร็จหรือความล้มเหลวของงาน จากนั้น Amazon SWF จะดำเนินการต่อลำดับงานโดยการกำหนดงานเวิร์กโฟลว์ถัดไปให้กับโฮสต์แอปพลิเคชันหรือโดยเรียกใช้งานที่ล้มเหลวอีกครั้งขึ้นอยู่กับตรรกะทางธุรกิจของคุณ

เข้าสู่ระบบคอนโซลการจัดการของ AWS เพื่อเริ่มการดำเนินการเวิร์กโฟลว์ของ Amazon SWF หรือคุณสามารถเริ่มดำเนินการเวิร์กโฟลว์ผ่าน Amazon SWF API ของเรา Amazon SWF ใช้อินเทอร์เฟซบริการในรูปแบบเว็บที่เรียบง่ายซึ่งใช้งานง่ายและยืดหยุ่นสูง:

  • StartWorkflowExecution: เริ่มลำดับของงานเวิร์กโฟลว์และทำให้งานแรกพร้อมใช้งานกับโฮสต์แอปพลิเคชันใดตัวหนึ่ง
  • DescribeWorkflowExecution: ให้สถานะของการดำเนินการและงานเวิร์กโฟลว์ของคุณ
  • PollForActivityTask: โฮสต์แอปพลิเคชันของคุณ (ในระบบคลาวด์หรือในองค์กร) ขอและดำเนินการงานเวิร์กโฟลว์ในลูปต่อเนื่อง
  • RespondActivityTaskCompleted: โฮสต์แอปพลิเคชันที่บอกกับ Amazon SWF ว่าทำงานเสร็จเรียบร้อยแล้ว จากนั้น Amazon SWF จะดำเนินการเวิร์กโฟลว์ต่อไปโดยทำให้งานถัดไปพร้อมใช้งานกับโฮสต์แอปพลิเคชัน
  • TerminateWorkflowExecution: หยุดการขับเคลื่อนการดำเนินการเวิร์กโฟลว์ที่เฉพาะเจาะจงไปขั้นตอนข้างหน้า Amazon SWF จะไม่มอบหมายงานใด ๆ ในการดำเนินการเวิร์กโฟลว์เฉพาะนี้ให้กับโฮสต์แอปพลิเคชัน

วัตถุประสงค์การใช้งานและข้อจำกัด

การใช้บริการนี้ของคุณเป็นไปตามข้อตกลงของลูกค้า Amazon Web Services

กรณีใช้งาน

การเข้ารหัสวิดีโอโดยใช้ Amazon S3 และ Amazon EC2 ในกรณีการใช้งานนี้ วิดีโอขนาดใหญ่จะมีการอัปโหลดไปยัง Amazon S3 เป็นก้อน การอัปโหลดข้อมูลเป็นก้อนจะต้องมีการเฝ้าติดตาม หลังจากอัปโหลดก้อนข้อมูลแล้ว ก็จะเข้ารหัสโดยการดาวน์โหลดเข้าไปใน Amazon EC2 instance ก้อนข้อมูลที่เข้ารหัสแล้วจะจัดเก็บในสถานที่ตั้งอีกแห่งหนึ่งของ Amazon S3 หลังจากที่ก้อนข้อมูลทั้งหมดถูกเข้ารหัสแล้วด้วยวิธีนี้ ก็จะนำไปผสมรวมกับไฟล์ที่เข้ารหัสโดยสมบูรณ์แล้วซึ่งจัดเก็บกลับไปทั้งหมดที่ Amazon S3 อาจเกิดภาวะขัดข้องขึ้นได้ในระหว่างขั้นตอนนี้อันเนื่องมาจากพบข้อผิดพลาดในการเข้ารหัสของก้อนข้อมูลอย่างน้อยหนึ่งก้อน ภาวะขัดข้องดังกล่าวจำเป็นจะต้องมีการตรวจจับและจัดการผ่านระบบจัดการโฟลว์กระบวนการบนระบบคลาวด์ของ Amazon SWF

การโยกย้ายส่วนประกอบจากศูนย์ข้อมูลไปยังระบบคลาวด์ การดำเนินการที่สำคัญทางธุรกิจจะมีการโฮสต์ในศูนย์ข้อมูลส่วนบุคคล แต่ก็จำเป็นต้องย้ายทั้งหมดมาที่ระบบคลาวด์โดยไม่ก่อให้เกิดการขัดจังหวะการทำงาน แอปพลิเคชันที่ใช้ Amazon SWF สามารถผสมผสานหน่วยปฏิบัติงานซึ่งรวมส่วนประกอบที่รันอยู่ในศูนย์ข้อมูลเข้ากับหน่วยปฏิบัติงานที่รันอยู่บนระบบคลาวด์ เพื่อเปลี่ยนผ่านหน่วยปฏิบัติงานในศูนย์ข้อมูลอย่างไร้รอยต่อ จึงเลือกนำหน่วยปฏิบัติงานใหม่ประเภทเดียวกันมาติดตั้งใช้จริงก่อนในระบบคลาวด์ หน่วยปฏิบัติงานในศูนย์ข้อมูลจะยังคงรันอย่างต่อเนื่องตามปกติพร้อมกับหน่วยปฏิบัติงานใหม่ที่ใช้ระบบคลาวด์ หน่วยปฏิบัติงานที่ใช้ระบบคลาวด์จะได้รับการทดสอบและตรวจสอบความถูกต้องโดยการจัดเส้นทางปริมาณงานส่วนหนึ่งผ่านหน่วยเหล่านี้ ในระหว่างการทดสอบนี้ แอปพลิเคชันจะไม่ถูกขัดจังหวะการทำงานเนื่องจากหน่วยปฏิบัติงานในศูนย์ข้อมูลยังคงรันอย่างต่อเนื่อง หลังจากที่ทดสอบสำเร็จ หน่วยปฏิบัติงานในศูนย์ข้อมูลก็จะค่อยๆ หยุดทำงาน และหน่วยปฏิบัติงานในระบบคลาวด์จะปรับเพิ่มขนาดเพื่อย้ายทั้งหมดไปยังแอปพลิเคชันการจัดการโฟลว์กระบวนการบนระบบคลาวด์ ขั้นตอนของโฟลว์กระบวนการบนระบบคลาวด์นี้สามารถดำเนินการซ้ำให้กับหน่วยปฏิบัติงานอื่นๆ ทั้งหมดในศูนย์ข้อมูลได้ เพื่อให้แอปพลิเคชันย้ายไปยังระบบคลาวด์โดยสมบูรณ์ หากเป็นเพราะเหตุผลทางธุรกิจบางประการ บางขั้นตอนการประมวลผลจะต้องดำเนินการอย่างต่อเนื่องในศูนย์ข้อมูลส่วนบุคคล หน่วยปฏิบัติงานเหล่านั้นก็ยังคงสามารถรันได้ต่อไปในศูนย์ข้อมูลส่วนบุคคลและยังคงมีส่วนร่วมในแอปพลิเคชันอยู่

การประมวลผลแค็ตตาล็อกผลิตภัณฑ์ขนาดใหญ่โดยใช้ Amazon Mechanical Turk แม้ว่าจะมีการตรวจสอบความถูกต้องของข้อมูลในแค็ตตาล็อกขนาดใหญ่ แต่ผลิตภัณฑ์ในแค็ตตาล็อกก็จะประมวลผลแบบกลุ่ม สามารถประมวลผลกลุ่มต่างๆ พร้อมกันได้ สำหรับแต่ละกลุ่ม ข้อมูลผลิตภัณฑ์จะดึงมาจากเซิร์ฟเวอร์ในศูนย์ข้อมูลและแปลงเป็นไฟล์ CSV (Comma Separated Values) ที่กำหนดให้ใช้โดย Requester User Interface (RUI) ของ Amazon Mechanical Turk จะอัปโหลด CSV เพื่อใส่ข้อมูลและรัน HIT (Human Intelligence Task) เมื่อรัน HIT เสร็จ ก็จะแปลงไฟล์ CSV ที่ได้มาแบบผันกลับเพื่อให้ได้ข้อมูลกลับมาเป็นรูปแบบเดิม จากนั้น ผลที่ได้ก็จะได้รับการประเมินและผู้ปฏิบัติงานของ Amazon Mechanical Turk ก็จะได้รับเงินสำหรับผลลัพธ์ที่ยอมรับได้ ผลที่ล้มเหลวจะถูกคัดออกและประมวลผลซ้ำ ในขณะที่ผลลัพธ์ของ HIT ที่ยอมรับได้จะนำมาใช้เพื่ออัปเดตแค็ตตาล็อก ในขณะที่ประมวลผลเป็นกลุ่ม ระบบจำเป็นต้องติดตามคุณภาพผู้ปฏิบัติงานของ Amazon Mechanical Turk และปรับการชำระเงินให้สอดคล้อง HIT ที่ล้มเหลวจะมีการจัดชุดใหม่อีกครั้งและส่งมาผ่านขั้นตอนนั้นอีกครั้ง

AWS Flow Framework

AWS Flow Framework เป็นคอลเลกชันของไลบรารีที่ใช้งานได้สะดวกสบายที่ทำให้สร้างแอปพลิเคชันได้เร็วและง่ายขึ้นด้วย Amazon Simple Workflow

วิธีทำงาน

AWS Flow Framework มีโมเดลการเขียนโปรแกรมที่ตรงไปตรงไปตรงมาซึ่งทำให้สามารถสร้างแอปพลิเคชันที่ทำงานบนเครื่องหลายเครื่องได้ง่าย ด้วยเฟรมเวิร์กนี้ คุณสามารถสร้างงาน ประสานงานงาน และแสดงให้เห็นว่างานเหล่านี้ขึ้นอยู่กันอย่างไรได้อย่างรวดเร็ว เช่นเดียวกับที่คุณทำในโปรแกรมทั่วไป ตัวอย่างเช่น คุณสามารถเรียกใช้วิธีการในแอปพลิเคชันบนคอมพิวเตอร์ "ระยะไกล" เพียงแค่เรียกใช้วิธีการในตรรกะแอปพลิเคชันของคุณที่โฮสต์อยู่บนคอมพิวเตอร์ "ท้องถิ่น" ที่แยกจากกัน AWS Flow Framework ช่วยจัดการกับการโต้ตอบไปมาที่ซับซ้อนซึ่งจำเป็นในการดำเนินการวิธีการระยะไกล และส่งผลลัพธ์กลับไปยังแอปพลิเคชันภายในท้องถิ่นโดยใช้ข้อมูลที่เก็บไว้โดยบริการ Amazon Simple Workflow เอาต์พุตของวิธีการที่ดำเนินการใด ๆ สามารถใช้เพื่อเชื่อมต่อส่วนต่าง ๆ ที่แยกจากกันของตรรกะของคุณที่ขึ้นอยู่ซึ่งกันและกันได้ นี้ช่วยให้คุณใช้รูปแบบไวยากรณ์ตรงไปตรงมาเพื่อแสดงความสัมพันธ์ระหว่างวิธีการด้วยแนวทาง "บล็อกและรอการเรียกกลับ" ที่เรียบง่าย เฟรมเวิร์กนี้ยังช่วยให้คุณจัดการความล้มเหลวบนเครื่องระยะไกลได้ราวกับว่าเป็นข้อผิดพลาดในท้องถิ่น และให้วิธีง่าย ๆ ในการกำหนดว่าคุณต้องการลองใช้วิธีการสำคัญในแอปพลิเคชันของคุณอีกครั้งอย่างไร หากเกิดความล้มเหลว

หมายเหตุ

AWS Flow Framework สำหรับ Ruby ไม่ได้อยู่ภายใต้การพัฒนาอย่างต่อเนื่องอีกต่อไป แม้ว่าโค้ดที่มีอยู่จะยังคงทำงานได้ตลอดเวลา แต่จะไม่มีฟีเจอร์หรือเวอร์ชันใหม่ ซอร์สโค้ดของ Flow Framework สำหรับ Ruby จะยังคงมีอยู่ใน คลังเก็บ AWS SWF GitHub หากคุณกำลังพัฒนาและเปลี่ยนแปลงแอปพลิเคชัน Simple Workflow ที่ใช้ Ruby ของคุณ มีตัวเลือกที่คุณอาจต้องการพิจารณา รวมถึงการย้ายไปยัง AWS Step Functions หรือใช้ API ของ Simple Workflow แบบเนทีฟ สำหรับรายละเอียด โปรดดู คู่มือ AWS Simple Workflow

การใช้ AWS Flow Framework คุณเขียนโค้ดง่าย ๆ และปล่อยให้วัตถุและคลาสที่สร้างไว้ล่วงหน้าของเฟรมเวิร์กจัดการรายละเอียดของ API ของ Amazon Simple Workflow AWS Flow Framework ดูแลการสร้างและดำเนินการตามขั้นตอนของแอปพลิเคชันของคุณ ติดตามความคืบหน้า ให้คุณกำหนดกฎการลองใหม่เมื่อขั้นตอนล้มเหลว และอื่น ๆ อีกมากมาย ในขณะเดียวกัน Amazon Simple Workflow Service จะรักษาสถานะการดำเนินการของแอปพลิเคชันของคุณ มอบงานให้กับโปรแกรมทำงานที่มีอยู่ และเก็บประวัติการตรวจสอบของงานทั้งหมดของคุณ

AWS Flow Framework เป็นโอเพ่นซอร์ส Java และพัฒนาและจัดการโดย AWS คุณสามารถใช้ลิงก์ด้านล่างเพื่อรับไลบรารี ซอร์สโค้ด เอกสารประกอบ ตัวอย่าง และอื่น ๆ