ข้ามไปที่เนื้อหาหลัก

ทำไมจึงต้องใช้ SWF

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

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

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

ประโยชน์

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

การใช้บริการนี้ของคุณเป็นไปตามข้อตกลงของลูกค้า 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 มีโมเดลการเขียนโปรแกรมที่ตรงไปตรงไปตรงมาซึ่งทำให้สามารถสร้างแอปพลิเคชันที่ทำงานบนเครื่องหลายเครื่องได้ง่าย ด้วยเฟรมเวิร์กนี้ คุณสามารถสร้าง Task, ประสานงาน Task และแสดงให้เห็นว่า Task เหล่านี้พึ่งพากันอย่างไรได้อย่างรวดเร็ว เช่นเดียวกับที่คุณทำในโปรแกรมทั่วไป ตัวอย่างเช่น คุณสามารถเรียกใช้วิธีการในแอปพลิเคชันบนคอมพิวเตอร์ "ระยะไกล" เพียงแค่เรียกใช้วิธีการในตรรกะแอปพลิเคชันของคุณที่โฮสต์อยู่บนคอมพิวเตอร์ "ในพื้นที่" ที่แยกจากกัน 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 จะรักษาสถานะการดำเนินการของแอปพลิเคชันของคุณ มอบ Task ให้กับโปรแกรมทำงานที่มีอยู่ และเก็บประวัติการตรวจสอบของ Task ทั้งหมดของคุณ

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