← กลับไปหน้าบทความ
ขั้นสูง (MarTech)

3 ชั่วโมงของงานที่ Agent รันอยู่หายวับไปกับ Server ที่รีสตาร์ทกะทันหัน ป้องกันได้ไหม

ทีมบรรณาธิการ linli12 ส.ค. 04:52อัปเดต 12 ส.ค. 04:52อ่าน 4 นาที
3 ชั่วโมงของงานที่ Agent รันอยู่หายวับไปกับ Server ที่รีสตาร์ทกะทันหัน ป้องกันได้ไหม
บทความนี้จัดทำเพื่อความรู้ ชื่อธุรกิจ ตัวเลข หรือบทสนทนาที่ไม่มีแหล่งอ้างอิงกำกับเป็นกรณีตัวอย่างเพื่ออธิบายแนวคิด ดูรายละเอียดที่ นโยบายกองบรรณาธิการ

สรุปสั้น ๆ

Durable AI Agents คือ Agent ที่ออกแบบให้ทำงานที่ใช้เวลานาน เช่น หลายชั่วโมงหรือหลายวัน สามารถ Resume งานต่อจากจุดที่ค้างได้เมื่อ Server รีสตาร์ท Deploy ใหม่ หรือ Provider หลุดกลางทาง แทนที่จะต้องเริ่มงานใหม่ตั้งแต่ต้นทุกครั้ง หัวใจของการทำได้แบบนี้คือการบันทึก State เป็น Checkpoint สม่ำเสมอ และออกแบบทุก Step ให้เป็น Idempotent เพื่อให้ Retry ซ้ำได้โดยไม่สร้างผลข้างเคียงซ้ำซ้อน

ทีมที่เริ่มสร้าง AI Agent ให้ทำงานที่ซับซ้อนขึ้น เช่น ประมวลผลเอกสารหลายพันไฟล์ต่อเนื่อง หรือทำ Research หลายขั้นตอนที่ต้องรอผลจากขั้นก่อนหน้า มักเจอปัญหาเดียวกันคือ งานที่รันมาหลายชั่วโมงหายไปทั้งหมดทันทีที่ Server รีสตาร์ทหรือ Deploy Code เวอร์ชันใหม่ระหว่างที่ Agent กำลังทำงานอยู่

ปัญหานี้ต่างจากระบบ Web Application ทั่วไปที่แต่ละ Request ใช้เวลาไม่กี่วินาที เพราะ Agent ที่ทำงานยาวมี State สะสมอยู่ระหว่างทางจำนวนมาก ถ้าไม่มีกลไกบันทึก State นั้นไว้ที่ไหนสักแห่งนอกเหนือจาก Memory ของ Process ที่กำลังรันอยู่ งานทั้งหมดจะหายไปพร้อมกับ Process นั้น

บทความนี้จะพาดูว่า Durable AI Agents ทำงานอย่างไรให้รอดจากเหตุการณ์แบบนี้ ตั้งแต่แนวคิดเรื่อง State และ Checkpoint ไปจนถึง Idempotency ที่เป็นเงื่อนไขจำเป็นสำหรับการ Retry อย่างปลอดภัย

Durable AI Agents คืออะไรกันแน่ ต่างจาก Agent ทั่วไปตรงไหน

Durable AI Agent คือ Agent ที่ออกแบบให้สถานะการทำงานระหว่างทางถูกเก็บไว้ในที่ที่รอดจากการรีสตาร์ทของ Process ที่กำลังรันอยู่ เช่น ฐานข้อมูล หรือระบบ Queue เฉพาะทาง แทนที่จะเก็บไว้ใน Memory ของ Process เพียงอย่างเดียว ทำให้เมื่อ Process นั้นตายไปไม่ว่าด้วยเหตุผลใด งานสามารถ Resume ต่อจากจุดล่าสุดที่บันทึกไว้ได้

Agent ทั่วไปที่ไม่ได้ออกแบบให้ Durable มักเขียนเป็น Loop ต่อเนื่องในโค้ดเดียว เก็บผลลัพธ์แต่ละ Step ไว้ใน Memory แล้วส่งต่อให้ Step ถัดไปทันที วิธีนี้ง่ายและเร็วสำหรับงานที่ใช้เวลาสั้น แต่พอใช้เวลานานขึ้นความเสี่ยงที่ Process จะถูกขัดจังหวะระหว่างทางก็สูงขึ้นตามไปด้วย

ความแตกต่างสำคัญจึงไม่ใช่เรื่อง Agent ฉลาดกว่าหรือไม่ แต่เป็นเรื่องสถาปัตยกรรมล้วน ๆ ว่า State ของงานถูกเก็บไว้ที่ไหน และระบบรู้วิธี Resume จากจุดนั้นได้อย่างไรเมื่อเกิดเหตุขัดข้อง

ทำไม Agent ที่ทำงานนานหลายชั่วโมงถึงพังง่ายกว่าที่คิด

ยิ่ง Agent ใช้เวลาทำงานนานเท่าไร โอกาสที่จะเจอเหตุการณ์ขัดจังหวะระหว่างทางก็ยิ่งสูงขึ้นตามสัดส่วนของเวลา งาน 5 นาทีมีโอกาสเจอ Server รีสตาร์ทระหว่างทางน้อยกว่างานที่ใช้เวลา 5 ชั่วโมงอย่างชัดเจน และในระบบ Production จริง Server ไม่ได้รีสตาร์ทเฉพาะตอนมีปัญหาเท่านั้น แต่ยังรีสตาร์ทตามรอบ Deploy ปกติของทีมด้วย

อีกสาเหตุที่พบบ่อยคือ Provider ของโมเดลเองก็มีโอกาส Timeout หรือ Error กลางทางเมื่อเรียกใช้ต่อเนื่องหลายครั้ง ถ้า Agent ไม่มีกลไกจัดการ Error เหล่านี้แยกจากกัน ความล้มเหลวของ Request เดียวอาจทำให้ทั้ง Workflow ที่ทำมาหลายชั่วโมงต้องล้มไปด้วย ซึ่งเชื่อมโยงกับหลักการออกแบบ Fallback ที่ดี ดูรายละเอียดเพิ่มเติมได้ที่ แนวทางออกแบบ LLM Fallback Strategy

นอกจากนี้ Agent ที่ทำงานหลายขั้นตอนต่อเนื่องมักมีการเรียก Tool หรือ API ภายนอกหลายจุด แต่ละจุดคือความเสี่ยงที่จะ Fail เพิ่มขึ้นทีละนิด เมื่อคูณจำนวนจุดที่อาจ Fail กับระยะเวลาที่ยาวนาน โอกาสที่งานทั้งหมดจะเจอปัญหาสักจุดหนึ่งก่อนเสร็จจึงสูงกว่าที่ทีมส่วนใหญ่ประเมินไว้ตอนออกแบบระบบ

State กับ Checkpoint คืออะไร ทำไมถึงเป็นหัวใจของความทนทาน

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

Checkpoint คือการบันทึก State นั้นลงในที่เก็บข้อมูลที่รอดจากการตายของ Process เช่น ฐานข้อมูล หรือระบบ Queue ที่รองรับ Persistence โดยทำเป็นจังหวะสม่ำเสมอตลอดการทำงาน ไม่ใช่บันทึกแค่ตอนจบงานเท่านั้น เพราะถ้าบันทึกแค่ตอนจบ Agent ที่ตายกลางทางก็จะไม่มี Checkpoint ให้ Resume เหมือนไม่มีกลไกนี้เลย

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

ออกแบบ Resume อย่างไรให้ Agent กลับมาทำงานต่อได้จริง

  1. แบ่ง Workflow ของ Agent ออกเป็น Step ย่อยที่ชัดเจน แต่ละ Step ควรมีจุดเริ่มและจุดจบที่ระบุได้แน่นอน ไม่ใช่ Loop ยาวต่อเนื่องที่แยกจุดไม่ออกว่าทำถึงไหนแล้ว
  2. บันทึก Checkpoint พร้อม Step ID และผลลัพธ์ของ Step นั้นทุกครั้งที่ Step เสร็จสมบูรณ์ เพื่อให้ระบบรู้ได้ทันทีว่า Step ไหนทำสำเร็จแล้วบ้างเมื่อต้อง Resume
  3. เมื่อ Process เริ่มทำงานใหม่หลังถูกขัดจังหวะ ให้ตรวจสอบ Checkpoint ล่าสุดก่อนเสมอ แล้วเริ่ม Resume จาก Step ถัดจากที่บันทึกไว้ ไม่ใช่เริ่มจาก Step แรกใหม่ทุกครั้ง
  4. ออกแบบ Timeout และ Retry Policy ของแต่ละ Step แยกจากกัน เพราะบาง Step อาจต้องใช้เวลานานกว่าปกติโดยไม่ได้แปลว่าล้มเหลว ขณะที่บาง Step ควร Timeout เร็วเพื่อไม่ให้ทั้งระบบค้างรอนานเกินไป
  5. ทดสอบสถานการณ์ Kill Process กลางทางจริงในสภาพแวดล้อมทดสอบ ไม่ใช่แค่อ่านโค้ดแล้วเชื่อว่า Resume จะทำงานถูกต้อง เพราะบั๊กเรื่อง State มักโผล่มาเฉพาะตอนเกิดเหตุการณ์จริงเท่านั้น

Idempotency คืออะไร ทำไมการ Retry โดยไม่มี Idempotency ถึงอันตราย

Idempotency หมายถึงคุณสมบัติที่ทำให้การทำ Action ซ้ำหลายครั้งได้ผลลัพธ์เหมือนกับทำครั้งเดียว เมื่อ Agent ต้อง Resume งานหลังถูกขัดจังหวะ มีความเป็นไปได้ว่า Step ที่เพิ่งทำไปสำเร็จแล้วจริง แต่ Checkpoint ยังไม่ทันบันทึกก่อน Process จะตาย ทำให้เมื่อ Resume ระบบอาจเผลอทำ Step เดิมซ้ำอีกครั้ง

ถ้า Step นั้นเป็น Action ที่ไม่ Idempotent เช่น การส่งอีเมล การเรียกเก็บเงิน หรือการสร้างรายการในฐานข้อมูลโดยไม่มีการตรวจสอบซ้ำ การ Retry จะสร้างผลข้างเคียงซ้ำซ้อนที่ไม่ควรเกิดขึ้น เช่น ลูกค้าได้รับอีเมลซ้ำสองฉบับ หรือถูกเรียกเก็บเงินสองครั้งจาก Action เดียวกัน

แนวทางที่ใช้กันทั่วไปคือกำหนด Idempotency Key ให้แต่ละ Action ก่อนเรียกจริง แล้วให้ระบบปลายทางตรวจสอบว่า Key นี้เคยถูกประมวลผลไปแล้วหรือยังก่อนดำเนินการ ถ้าเคยทำไปแล้วให้คืนผลลัพธ์เดิมแทนที่จะทำซ้ำ วิธีนี้ทำให้ Retry ปลอดภัยไม่ว่าจะเกิดจาก Resume หลัง Process ตาย หรือจากเหตุผลอื่นก็ตาม

เปรียบเทียบสามแนวทางที่ใช้ทำให้ Agent ทนต่อการขัดจังหวะ

ทีมที่ต้องการทำ Durable Agent มีทางเลือกหลายระดับ ตั้งแต่เขียนกลไก Checkpoint เองไปจนถึงใช้เครื่องมือสำเร็จรูปที่ออกแบบมาสำหรับ Workflow ระยะยาวโดยเฉพาะ แต่ละทางเลือกมีข้อแลกเปลี่ยนต่างกันชัดเจน

แนวทางข้อดีข้อจำกัด
บันทึก State ลงฐานข้อมูลเองควบคุมได้เต็มที่ ไม่ต้องพึ่ง Dependency ใหม่ต้องออกแบบและดูแล Logic การ Resume เองทั้งหมด
ใช้ Queue/Job System ที่รองรับ Retryจัดการ Retry และ Failure พื้นฐานให้ระดับหนึ่งยังต้องออกแบบ State ของ Agent เองเพิ่มเติม
ใช้ Durable Workflow Framework เฉพาะทางมีกลไก Checkpoint, Resume, Retry ให้พร้อมใช้ต้องเรียนรู้เครื่องมือใหม่ และผูก Dependency กับ Framework นั้น

Monitoring อย่างไรให้รู้ทันทีว่า Agent ค้างอยู่ตรงไหน

Agent ที่ทำงานยาวและออกแบบให้ Resume ได้ ยังต้องการ Monitoring ที่ดีควบคู่ไปด้วย เพราะการที่ระบบ Resume ได้ไม่ได้แปลว่างานจะเดินหน้าต่อเสมอ บาง Step อาจติดค้างซ้ำ ๆ ทุกครั้งที่ Resume ด้วยสาเหตุเดียวกัน จนกลายเป็น Loop ที่ไม่มีวันจบโดยไม่มีใครรู้ตัว

สัญญาณที่ควรจับตาคือระยะเวลาที่ Step หนึ่งใช้เทียบกับเวลาปกติ จำนวนครั้งที่ Step เดียวกันถูก Retry ซ้ำ และจำนวนงานที่ค้างอยู่ในสถานะ 'กำลังทำ' นานเกินกว่าที่ควรจะเป็น ถ้ามีงานจำนวนมากค้างอยู่ในสถานะนี้พร้อมกัน มักหมายถึงมีปัญหาเชิงระบบไม่ใช่แค่เคสเดี่ยวที่โชคร้าย

ทีมที่ดูแลระบบควรตั้ง Alert แยกสำหรับ Agent ที่ค้างนานผิดปกติ ไม่ใช่รอให้ผู้ใช้มาแจ้งว่างานไม่เสร็จ เพราะกว่าจะรู้ตัวมักผ่านไปนานพอที่จะกระทบผู้ใช้จำนวนมากแล้ว การตั้งจุดให้คนเข้ามาตรวจสอบ Agent ที่ค้างผิดปกติก็เป็นอีกรูปแบบหนึ่งของการออกแบบให้คนเข้ามาช่วยตัดสินใจ ดูแนวคิดที่เกี่ยวข้องได้ที่ แนวทางออกแบบ Human in the Loop สำหรับ AI Agent

ต้นทุนของการทำ Durable Agent คุ้มกับทุกงานจริงไหม

การทำ Agent ให้ Durable มีต้นทุนทั้งเวลาพัฒนาและความซับซ้อนของระบบที่เพิ่มขึ้น ไม่ใช่ทุกงานที่คุ้มค่ากับการลงทุนนี้ งานที่ใช้เวลาสั้นและ Retry จากศูนย์ได้ง่ายโดยไม่มีต้นทุนสูง เช่น Query ข้อมูลง่าย ๆ ที่ใช้เวลาไม่กี่วินาที มักไม่จำเป็นต้องมีกลไก Checkpoint ที่ซับซ้อนขนาดนี้

งานที่คุ้มค่าที่สุดกับการทำ Durable คืองานที่ใช้เวลานาน มีต้นทุนสูงถ้าต้องเริ่มใหม่ เช่น เรียกโมเดลราคาแพงหลายรอบ หรือประมวลผลข้อมูลจำนวนมากที่ใช้เวลานับชั่วโมง เพราะการเสียงานที่ทำไปแล้วทั้งหมดเมื่อเจอปัญหาเล็กน้อยกลางทางถือเป็นต้นทุนที่สูงเกินไปเมื่อเทียบกับการลงทุนทำ Checkpoint ตั้งแต่แรก

ทีมที่กำลังตัดสินใจควรประเมินทั้งความยาวของ Workflow ต้นทุนต่อ Step และความถี่ของเหตุการณ์ขัดจังหวะในระบบของตัวเอง ก่อนเลือกลงทุนสร้างกลไก Durable แบบเต็มรูปแบบ บางทีมอาจเริ่มจากการทำ Checkpoint เฉพาะจุดที่ต้นทุนสูงที่สุดก่อน แล้วค่อยขยายความครอบคลุมเมื่อเห็นความจำเป็นชัดเจนขึ้น

ข้อผิดพลาดที่ทีมมักทำเมื่อเริ่มออกแบบ Durable Agent

ทำแบบนี้แล้วพัง เพราะบันทึก Checkpoint แค่ตอนจบ Workflow เท่านั้น ทำให้เมื่อ Agent ตายกลางทาง ไม่มี Checkpoint ให้ Resume เลย ต้องเริ่มงานใหม่ทั้งหมดเหมือนไม่มีกลไกนี้อยู่ในระบบ

ทำแบบนี้แล้วพัง เพราะออกแบบ Step ที่มีผลข้างเคียงสำคัญโดยไม่ทำ Idempotency Key ทำให้เมื่อเกิดการ Retry ซ้ำ Action นั้นถูกทำซ้ำสองครั้งโดยไม่มีใครรู้ตัวจนลูกค้าร้องเรียนเข้ามา

ทำแบบนี้แล้วพัง เพราะไม่มี Monitoring แยกสำหรับ Agent ที่ค้างนานผิดปกติ ปล่อยให้งานค้างอยู่ในสถานะกำลังทำเป็นวัน ๆ โดยไม่มีใครสังเกตเห็น จนผู้ใช้ต้องมาแจ้งเองว่างานไม่เคยเสร็จ

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

สรุป

Durable AI Agents แก้ปัญหาที่งานยาวหลายชั่วโมงหายไปทั้งหมดเมื่อ Server รีสตาร์ทหรือ Provider หลุดกลางทาง ด้วยการบันทึก State เป็น Checkpoint สม่ำเสมอ และออกแบบทุก Step ให้เป็น Idempotent เพื่อให้ Retry ซ้ำได้อย่างปลอดภัยโดยไม่สร้างผลข้างเคียงซ้ำซ้อน

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

  • State และ Checkpoint คือกลไกที่ทำให้ Agent Resume งานต่อจากจุดที่ค้างได้ แทนที่จะเริ่มใหม่ทั้งหมด
  • Idempotency คือเงื่อนไขจำเป็นที่ทำให้การ Retry ปลอดภัย ไม่สร้าง Action ซ้ำซ้อนโดยไม่ตั้งใจ
  • ประเมินความยาว Workflow และต้นทุนต่อ Step ก่อนตัดสินใจลงทุนทำ Durable Agent เต็มรูปแบบ ไม่ใช่ทุกงานที่คุ้มค่า

คำถามที่พบบ่อย

Durable AI Agents ต่างจากการทำ Retry ธรรมดาอย่างไร

Retry ธรรมดามักหมายถึงการลองเรียกซ้ำทั้ง Request เดิมเมื่อ Fail ส่วน Durable Agent ครอบคลุมกว้างกว่านั้น คือการบันทึก State ระหว่างทางไว้ให้ Resume ต่อจากจุดที่ค้างได้ ไม่ต้องเริ่มทั้ง Workflow ใหม่ตั้งแต่ต้นทุกครั้งที่มีปัญหา

ทุก AI Agent จำเป็นต้องทำให้ Durable ไหม

ไม่จำเป็นเสมอไป งานที่ใช้เวลาสั้นและ Retry จากศูนย์ได้ง่ายโดยต้นทุนไม่สูง มักไม่คุ้มกับความซับซ้อนที่เพิ่มขึ้น ควรพิจารณาความยาวของ Workflow และต้นทุนต่อ Step ก่อนตัดสินใจลงทุนทำกลไกนี้

ควรทำ Checkpoint ถี่แค่ไหนถึงจะพอดี

ไม่มีตัวเลขตายตัว หลักทั่วไปคือบันทึกหลังจบทุก Step ที่มีผลข้างเคียงสำคัญหรือต้นทุนสูง บันทึกถี่เกินไปเพิ่มภาระระบบ บันทึกห่างเกินไปทำให้งานที่ต้องทำซ้ำเมื่อเกิดปัญหามีมากขึ้น

Idempotency Key ต้องออกแบบเองทุกครั้งหรือมีเครื่องมือช่วย

ทำได้ทั้งสองทาง หลาย Framework และ API ภายนอกรองรับการส่ง Idempotency Key มาให้ในตัว แต่ถ้าระบบปลายทางไม่รองรับ ทีมต้องออกแบบกลไกตรวจสอบ Key ซ้ำเองฝั่งแอปพลิเคชัน

จำเป็นต้องใช้ Durable Workflow Framework เฉพาะทางไหม หรือเขียนเองได้

เขียนเองได้ถ้าความซับซ้อนของ Workflow ยังไม่มาก แต่เมื่อ Workflow มีหลาย Step ที่ต้องประสานกันซับซ้อนขึ้น เครื่องมือสำเร็จรูปมักช่วยลดเวลาพัฒนาและลดบั๊กเรื่อง State ที่มักเกิดเมื่อเขียนกลไกนี้เอง

จะรู้ได้อย่างไรว่า Agent ที่ Resume แล้วทำงานถูกต้องจริง ไม่ใช่แค่ไม่ Error

ต้องมีการทดสอบที่จำลอง Kill Process กลางทางจริงและตรวจผลลัพธ์สุดท้ายเทียบกับกรณีที่ไม่ถูกขัดจังหวะเลย ไม่ใช่ดูแค่ว่า Agent ทำงานจนจบโดยไม่มี Error ปรากฏ เพราะบางบั๊กอาจทำให้ Step ถูกข้ามหรือทำซ้ำโดยไม่มี Error ให้เห็น

วัด Conversion LINE ทุกแบรนด์ รวมศูนย์ที่เดียว

องค์กรที่มีหลายแบรนด์ หลายสาขา หลาย LINE OA — linli รวม Tracking และส่ง Conversion กลับทุกแพลตฟอร์ม พร้อม Custom Limit เริ่มฟรี 14 วัน

ติดต่อทีม Sales

บทความที่เกี่ยวข้อง

ใช้ Vercel Functions กับ Supabase Edge Functions ตรงไหนควรเป็น Backend Logic ของแอปจริง

ใช้ Vercel Functions กับ Supabase Edge Functions ตรงไหนควรเป็น Backend Logic ของแอปจริง

แอปเดียวมี backend logic ได้หลายจุด แต่ถ้าไม่แบ่งให้ชัดว่าอะไรอยู่ Vercel อะไรอยู่ Supabase Edge Functions ทีมจะเจอปัญหา maintain ยากและ debug สับสนภายหลัง
Deploy Next.js บน Cloudflare Workers เหมาะกับโปรเจกต์แบบไหน แล้วแบบไหนควรมองข้าม

Deploy Next.js บน Cloudflare Workers เหมาะกับโปรเจกต์แบบไหน แล้วแบบไหนควรมองข้าม

Cloudflare Workers รัน Next.js ได้จริงผ่าน adapter เฉพาะ แต่ runtime ที่ต่างจาก Node ทำให้บาง feature ใช้ไม่ได้ตรง ๆ บทความนี้ชี้ว่าโปรเจกต์แบบไหนควรใช้ แบบไหนควรรอก่อน
รับ Webhook 200 ครั้งต่อนาทีจากผู้ให้บริการภายนอก แต่มั่นใจได้ยังไงว่าไม่ประมวลผลซ้ำ

รับ Webhook 200 ครั้งต่อนาทีจากผู้ให้บริการภายนอก แต่มั่นใจได้ยังไงว่าไม่ประมวลผลซ้ำ

สร้าง Webhook Receiver ด้วย Cloudflare Workers ทำได้เร็ว แต่การรองรับ Retry จริงและตรวจ Signature ให้ปลอดภัยต้องออกแบบไว้ตั้งแต่ต้น ไม่ใช่แค่รับ POST แล้วตอบ 200