ถ้าคุณทำระบบควบคุมเอกสาร ISO 9001 ให้เป็นอัตโนมัติ idempotency คือสิ่งที่ป้องกันไม่ให้เหตุการณ์อนุมัติที่ถูกเล่นซ้ำสร้างรายการซ้ำในทะเบียน หมายความว่าเหตุการณ์อนุมัติเดียวกัน ถ้าถูกประมวลผลสองครั้ง จะได้ผลลัพธ์เหมือนกับประมวลผลครั้งเดียว ไม่มีรายการซ้ำในทะเบียน ไม่มีบันทึกการแจกจ่ายซ้ำสอง ไม่มีแถวซ้ำในทะเบียนการเปลี่ยนแปลง นี่คือความต่างระหว่างทะเบียนที่คุณเชื่อถือได้ตอนตรวจประเมิน กับทะเบียนที่คุณต้องมานั่งอธิบายด้วยมือว่าทำไมเลขแก้ไขเดียวกันถึงปรากฏสองครั้ง
ทำไม "การเล่นซ้ำเหตุการณ์" ถึงเกิดขึ้นจริง
นี่คือหนึ่งในคำถามแรก ๆ ที่ควรถามผู้ขายระบบทุกราย ถ้าการอนุมัติเดียวกันยิงซ้ำสองครั้งจะเกิดอะไรขึ้น ไม่ใช่กรณีสมมติที่ไม่มีวันเกิด ระบบมีการลองใหม่อยู่แล้ว การเรียกผ่านเครือข่ายหมดเวลาแล้วสคริปต์ส่งซ้ำ คนรีเฟรชแบบฟอร์มแล้วส่งซ้ำ เครื่องมือ workflow สะดุดแล้วประมวลผลเหตุการณ์ที่ค้างอยู่ซ้ำ ไม่มีข้อไหนแปลกประหลาด นี่คือพฤติกรรมปกติของระบบใดก็ตามที่คุยกับระบบอื่น
สำหรับ QMR คำถามที่ใช้งานจริงไม่ใช่ "เรื่องนี้จะเกิดไหม" แต่คือ "ทะเบียนของฉันจะเป็นอย่างไรเมื่อมันเกิด" ถ้า automation ของคุณไม่ได้ถูกสร้างมาให้รองรับเหตุการณ์ที่เกิดซ้ำ คำตอบคือคุณจะได้แถวที่สอง บันทึกในทะเบียนแก้ไขเอกสารรอบที่สองสำหรับการเปลี่ยนแปลงที่อนุมัติแค่ครั้งเดียว การอัปเดตการแจกจ่ายที่ซ้ำ ตอนนี้บัญชีรายชื่อเอกสารหลักของคุณขัดแย้งกับตัวเอง และคุณต้องมานั่งเคลียร์ด้วยมือ ในบันทึกที่ควรจะเป็นแหล่งข้อมูลจริงเพียงแหล่งเดียว
Idempotency แปลว่าอะไรจริง ๆ แบบไม่ต้องใช้ศัพท์เทคนิค
ลองนึกถึงปุ่มเรียกลิฟต์ กดห้าครั้งเพราะไม่แน่ใจว่าปุ่มรับคำสั่งหรือยัง ลิฟต์ก็ยังส่งตู้มาแค่ตู้เดียว เพราะระบบรู้ว่า "มีคนอยากขึ้นจากชั้น 3" คือคำขอเดียวกัน ไม่ว่าจะกดกี่ครั้งก็ตาม การออกแบบแบบ idempotent ใช้ตรรกะเดียวกันนี้กับ workflow ด้าน compliance เหตุการณ์อนุมัติแต่ละครั้งมีรหัสประจำตัว ถ้ารหัสนั้นถูกประมวลผลไปแล้ว ระบบจะจำได้และไม่เขียนบันทึกซ้ำเป็นครั้งที่สอง
นี่ต่างจากแค่ "ไม่ทำผิดพลาด" ระบบที่สร้างมาดีก็ยังประมวลผลเหตุการณ์เดียวกันซ้ำสองครั้งได้ เพราะเครือข่ายไม่น่าเชื่อถือร้อยเปอร์เซ็นต์ ไม่ใช่เพราะใครทำผิด idempotency คือสิ่งที่ทำให้ความไม่แน่นอนนั้นไม่เป็นอันตราย แทนที่จะเป็นสิ่งที่คุณต้องคอยสังเกตแล้วมาแก้ด้วยมือ
ทำไมเรื่องนี้สำคัญในงาน compliance มากกว่าที่อื่นแทบทุกแบบ
ในซอฟต์แวร์ธุรกิจส่วนใหญ่ รายการซ้ำเป็นแค่เรื่องน่ารำคาญ แต่ในทะเบียนควบคุมเอกสาร มันคือปัญหาความสมบูรณ์ของข้อมูล ในระบบเดียวกับที่ผู้ตรวจประเมินภายนอกจะเปิดดูและเชื่อถือ ถ้าทะเบียนแก้ไขเอกสารของคุณโชว์การเปลี่ยนแปลงถูกบันทึกสองครั้ง หรือบัญชีรายชื่อเอกสารหลักมีสองแถวสำหรับเลขแก้ไขเดียวกัน นั่นไม่ใช่ความผิดพลาดในการแสดงผล แต่เป็นความคลาดเคลื่อนในบันทึกที่มีไว้พิสูจน์ว่ากระบวนการของคุณอยู่ในการควบคุม
และนี่คือจุดที่เส้นแบ่งระหว่าง automation กับวิจารณญาณของคนสำคัญ จุดตัดสินใจของคนในกระบวนการของคุณ ผู้ทบทวนตรวจสอบเนื้อหา ผู้อนุมัติลงนาม เกิดขึ้นครั้งเดียวโดยคน และการตัดสินใจนั้นถือเป็นที่สุด idempotency ปกป้องทุกอย่างที่เกิดขึ้นหลังการตัดสินใจของคนครั้งนั้น คืองานเขียนเชิงเสมียนที่ตามมา รับประกันว่าการเขียนนั้นเกิดขึ้นครั้งเดียวต่อการอนุมัติหนึ่งครั้งเท่านั้น ไม่ว่าเหตุการณ์เบื้องหลังจะถูกเล่นซ้ำโดยระบบที่นำพามันกี่ครั้งก็ตาม
หน้าตาในระบบจริง
ระบบควบคุมเอกสารที่เราสร้างให้ผู้ผลิตไทยแห่งหนึ่งถูกออกแบบด้วย idempotency key เหตุการณ์อนุมัติแต่ละครั้งมีคีย์ประจำตัว และการเล่นซ้ำเหตุการณ์อนุมัติเดิมจะไม่สร้างรายการซ้ำในทะเบียน การป้องกันนี้อยู่ใต้ข้อมูลแปดช่องที่ถูกเขียนทุกครั้งที่จุดตัดสินใจปิดลง เลขแก้ไข วันที่มีผลบังคับใช้ บันทึกในทะเบียนแก้ไขเอกสาร แถวในบัญชีรายชื่อเอกสารหลัก รายการในทะเบียนการเปลี่ยนแปลง เลขคำขอ จำนวนหน้า และวันเก็บรักษา การเขียนข้อมูลทั้งแปดรายการเกิดขึ้นครั้งเดียวต่อการอนุมัติหนึ่งครั้ง บันทึกแยกกันทุกรายการ ไม่ว่าเหตุการณ์ต้นทางจะถูกลองใหม่กี่ครั้งโดยระบบที่นำพามันก็ตาม
นี่คือคุณสมบัติเชิงโครงสร้างของการออกแบบ workflow ไม่ใช่การตรวจสอบด้วยมือที่ต้องมีคนจำไว้ว่าต้องรัน ผู้ทบทวนหรือผู้อนุมัติไม่ต้องคิดถึงเรื่องนี้เลย เพราะการป้องกันทำงานทั้งหมดอยู่ในชั้นงานเสมียน หลังการตัดสินใจของพวกเขาเกิดขึ้นแล้ว
สถานการณ์จริง
QMR อนุมัติการแก้ไขคำแนะนำการทำงานฉบับหนึ่ง เวลา 16:45 น. วันศุกร์ การอนุมัตินี้กระตุ้น workflow ที่เขียนเลขแก้ไข อัปเดตทะเบียนแก้ไขเอกสาร และแจ้งรายชื่อผู้รับ การเชื่อมต่อเครือข่ายระหว่างสองระบบนั้นหลุดไปสี่วินาทีขณะกำลังเขียนข้อมูล เครื่องมือ workflow ที่ถูกสร้างมาให้เชื่อถือได้ จึงลองส่งเหตุการณ์เดิมซ้ำอีกครั้งในอีกหนึ่งนาทีต่อมา
ถ้าไม่มี idempotency การลองซ้ำครั้งนี้จะสร้างบันทึกในทะเบียนแก้ไขเอกสารรอบที่สองสำหรับการอนุมัติเดียวกัน เอกสารเดียวกัน เลขแก้ไขเดียวกัน ผู้อนุมัติคนเดียวกัน แต่บันทึกสองครั้งห่างกันสามนาที วันจันทร์ ใครก็ตามที่เปิดทะเบียนจะเห็นสองแถวสำหรับการเปลี่ยนแปลงเดียว แล้วต้องมานั่งหาว่าอนุมัติซ้ำจริงหรือแค่บันทึกซ้ำ นั่นคือหนึ่งชั่วโมงของการสืบสวนเพื่อแก้เรื่องที่ไม่ควรเป็นเรื่องเลยตั้งแต่แรก
แต่ถ้ามี idempotency การลองซ้ำจะมีคีย์เหตุการณ์เดียวกับความพยายามครั้งแรก workflow จำได้ว่าคีย์นี้ถูกประมวลผลไปแล้ว จึงไม่เขียนอะไรซ้ำเป็นครั้งที่สอง และทะเบียนจะโชว์บันทึกเดียวเท่านั้น เพราะมีการอนุมัติเกิดขึ้นแค่ครั้งเดียวจริง การลองซ้ำในวันศุกร์นั้นจะไม่มีใครเห็นเลย นอกจากในบันทึกกิจกรรมที่บอกว่าได้รับเหตุการณ์นี้แล้วและถูกละไว้อย่างถูกต้อง
ทำไมเรื่องนี้สำคัญเกินกว่าแค่ความสะดวก
ทะเบียนควบคุมเอกสารของคุณไม่ใช่แค่ความสะดวกภายใน แต่คือหลักฐานที่คุณนำเสนอเพื่อพิสูจน์ว่า QMS ของคุณอยู่ในการควบคุม ทะเบียนที่มีแถวซ้ำโดยไม่มีคำอธิบาย ไม่ใช่แค่ดูไม่เรียบร้อย แต่ชวนให้เกิดคำถามว่าการควบคุมวงจรชีวิตเอกสารของคุณแน่นหนาตามที่ SOP อ้างไว้จริงหรือไม่ ผู้ตรวจประเมินไม่จำเป็นต้องเจอคำตอบที่ผิดถึงจะยกเป็นข้อบกพร่อง ทะเบียนที่ไม่สอดคล้องกันเองก็เป็นข้อบกพร่องอยู่แล้ว ไม่ว่าเอกสารต้นเรื่องจะถูกต้องหรือไม่ก็ตาม
นี่คือเหตุผลที่ idempotency ต้องอยู่ในการออกแบบพื้นฐานของ workflow ตั้งแต่ต้น ไม่ใช่แปะเพิ่มทีหลัง การพยายามเพิ่มระบบตรวจจับรายการซ้ำเข้าไปในระบบที่ไม่ได้ถูกสร้างมาให้ป้องกันรายการซ้ำตั้งแต่แรก มักหมายถึงต้องเขียนสคริปต์เคลียร์ข้อมูลแล้วหวังว่าจะจับได้ครบทุกกรณี ซึ่งแย่กว่าการไม่ทำ automation เลยด้วยซ้ำ เพราะตอนนี้ทะเบียนที่เสียหายกลับดูน่าเชื่อถือ
คำถามที่ควรถามก่อนทำ ISO 9001 ให้เป็นอัตโนมัติ
ถ้าคุณกำลังประเมินเครื่องมือหรือ workflow ใดก็ตามเพื่อทำการควบคุมเอกสาร ISO 9001 ให้เป็นอัตโนมัติ ไม่ว่าจะเป็นของเราหรือของใครก็ตาม คำถามเหล่านี้ควรถามตรง ๆ
- ถ้าเหตุการณ์อนุมัติเดียวกันถูกประมวลผลสองครั้ง จะสร้างแถวซ้ำในทะเบียนหรือไม่
- การป้องกันนั้นถูกสร้างไว้ในการออกแบบ workflow ตั้งแต่ต้น หรือต้องพึ่งให้มีคนสังเกตเห็นแล้วลบรายการซ้ำด้วยมือ
- ทุกการเขียนข้อมูลลงทะเบียนถูกบันทึกแยกกันหรือไม่ เพื่อให้รายการซ้ำ ถ้าเกิดขึ้นจริง มองเห็นได้แทนที่จะเงียบหาย
- ระบบเคยตัดสินใจอนุมัติเองหรือไม่ หรือทำงานหลังจากคนลงนามแล้วเท่านั้น
ผู้ขายระบบที่ตอบสองข้อแรกให้ชัดเจนไม่ได้ กำลังขอให้คุณเชื่อว่าระบบของเขาไม่เคยเจอเครือข่ายสะดุด ไม่เคยลองซ้ำ ไม่เคยส่งซ้ำเลยสักครั้ง ไม่ใช่การพนันที่คุ้มค่ากับทะเบียน compliance ของคุณ
คำถามที่พบบ่อย
Idempotency คือการไม่มีบั๊กเลยใช่ไหม
ไม่ใช่ idempotency คือคุณสมบัติการออกแบบเฉพาะ คือการทำเหตุการณ์เดียวกันซ้ำแล้วได้ผลลัพธ์เดิม ระบบเป็น idempotent ได้ทั้งที่ยังมีบั๊กอื่นที่ไม่เกี่ยวข้องอยู่ ประเด็นคือเหตุการณ์ซ้ำ ซึ่งแทบจะเกิดขึ้นแน่นอนเมื่อเวลาผ่านไปในระบบที่เชื่อมต่อกัน จะไม่ทำให้ทะเบียนของคุณเสียหาย
จะรู้ได้อย่างไรว่ากระบวนการปัจจุบันมีปัญหานี้
ตรวจทะเบียนแก้ไขเอกสารและทะเบียนการเปลี่ยนแปลงของคุณ กับตัวอย่างการเปลี่ยนแปลงที่อนุมัติแล้ว ถ้าคุณเคยเห็นสองบันทึกสำหรับเลขแก้ไขที่ควรมีแค่รายการเดียว นั่นคืออาการที่ idempotency ป้องกันไว้
Idempotency ทำให้การประมวลผลช้าลงหรือไม่
ไม่ การตรวจว่าเหตุการณ์นี้เคยถูกประมวลผลไปแล้วหรือยัง คือการค้นหาแบบเร็วเทียบกับคีย์ ไม่ใช่ความล่าช้าที่มีนัยสำคัญต่อ workflow
ใครรับผิดชอบคีย์ idempotency เราหรือผู้ขายระบบ
ควรเป็นคุณสมบัติของตัว workflow เอง ไม่ใช่สิ่งที่ทีมของคุณต้องสร้างหรือดูแลเอง ขอให้ผู้ขายระบบแสดงให้เห็นชัด ๆ ว่าคีย์นี้ถูกสร้างจากเหตุการณ์อนุมัติอย่างไร
เรื่องนี้แทนที่จุดอนุมัติของคนหรือไม่
ไม่ idempotency ปกป้องบันทึกที่ถูกเขียนหลังจากคนอนุมัติการเปลี่ยนแปลงแล้ว ไม่เกี่ยวข้องและไม่แทนที่การตัดสินใจของผู้ทบทวนและผู้อนุมัติที่ ISO 9001 กำหนดให้ต้องเกิดขึ้นก่อนจุดนั้น
ถ้าอยากเห็นว่าเรื่องนี้ยืนหยัดได้จริงกับเอกสารประเภทของคุณเองอย่างไร นัดดูระบบทำงานจริงกับ 1% EVO เราจะแสดงกลไกให้ดู ไม่ใช่แค่เล่าให้ฟัง