เช้าเดียวบนขบวนปล่อยงานที่ AI เดินเอง: หกครั้งที่ขึ้นระบบจริง และห้าเรื่องที่สะดุด

เช้าเดียวบนขบวนปล่อยงานที่ AI เดินเอง

เช้าวันที่ 10 ตุลาคม ห้อง AI ที่ดูแลการปล่อยงานของเรารวมงานเข้าสายหลักหลายสิบชิ้นและขึ้นระบบจริงหกครั้งก่อนบ่ายสอง บทความนี้ไม่ได้เล่าว่ามันเร็วแค่ไหน แต่เล่าห้าเรื่องที่สะดุดระหว่างทาง และกติกาที่เกิดขึ้นจากเรื่องเหล่านั้นในวันเดียวกัน

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

ขบวนหน้าตาเป็นอย่างไร

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

เช้านั้นตอน 09:09 คิวยาว 53 รายการ ชั่วโมงถัดมา (10:09 ถึง 11:09) รวมงานได้ 14 ชิ้น ชั่วโมงต่อมารวมได้ 16 ชิ้นจากตัววิ่ง บวกอีก 2 ชิ้นที่รวมด้วยมือ และมี 11 ชิ้นที่ตัววิ่งตัวเดียวตีกลับไปจอดไว้ คิวเหลือ 19 พอ 13:09 คิวกลับขึ้นไปที่ 27 เพราะงานใหม่เข้ามาเร็วกว่าที่ระบายออก และ 14:09 อยู่ที่ 20

ระหว่างนั้นมีการขึ้นระบบจริงหกครั้ง ที่ 11:05, 12:15, 13:08, 13:31, 13:42 และ 13:45 ครอบคลุมสี่แอป

ตัวเลขที่เราอยากให้ดูไม่ใช่จำนวนงานที่รวม แต่คือ 11 ชิ้นที่ถูกตีกลับในชั่วโมงเดียว ขบวนที่ไม่เคยตีอะไรกลับเลยคือขบวนที่ไม่มีด่าน

แผนภาพขบวนปล่อยงาน จากคิวถึงระบบจริง

เรื่องที่หนึ่ง: แก้ไฟล์คิวชนกับการปล่อยงานที่กำลังวิ่ง

คิวของเราเป็นไฟล์ข้อความธรรมดา ระหว่างที่มีการปล่อยงาน บรรทัดแรกของคิวจะถูกติดป้ายพักไว้ เมื่อปล่อยเสร็จ ตัวปล่อยงานจะแกะป้ายออกเอง

ช่วงเที่ยง ห้องปล่อยงานจัดลำดับคิวใหม่ด้วยวิธีเขียนไฟล์ชั่วคราวแล้วเปลี่ยนชื่อทับ ซึ่งเป็นวิธีที่ปกติถือว่าปลอดภัย แต่จังหวะนั้นการปล่อยงานจบพอดี ป้ายที่ควรถูกแกะจึงค้างอยู่ในไฟล์ฉบับที่เขียนทับลงไป การปล่อยงานจบ 12:48 ห้องมาเจอป้ายค้างและแกะออกเองตอน 12:52

เสียหายสี่นาที แต่บทเรียนถูกเขียนลงบันทึกทันที และรอบปล่อยงานถัดไปตอน 13:26 ก็มีบรรทัดกำกับไว้ชัดว่า ระหว่างที่ปล่อยงานอยู่ ห้ามเขียนไฟล์คิวใหม่ทั้งไฟล์ ให้เพิ่มต่อท้ายได้อย่างเดียว การย้ายลำดับให้ทำหลังปล่อยเสร็จ

เรื่องที่สอง: ด่านหลังปล่อยงานแดง เพราะตัวทดสอบตามโค้ดไม่ทัน

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

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

เรื่องที่สาม: การอนุมัติหนึ่งใบมาถึงหลังปล่อยงานไปแล้ว

รอบใหญ่ของเช้านั้นพางานขึ้นไปเก้าชิ้น ทุกชิ้นมีบันทึกว่าใครอนุมัติเมื่อไร บางชิ้นต้องมีสองห้องอนุมัติ ก่อนปล่อย ชุดทดสอบเต็มชุดวิ่งกับโค้ดตัวที่จะขึ้นจริง ผลคือผ่าน 1,022 ตก 0 ข้าม 27 และมีหนึ่งรายการที่ไม่ได้วิ่ง ซึ่งถูกเขียนชื่อไว้และผู้อนุมัติรับทราบ ชุดทดสอบเริ่ม 12:38 ระบบขึ้นจริง 13:08

แต่มีการตรวจหนึ่งรายการที่เป็นของห้องบัญชี ซึ่งรอบนั้นห้องตรวจงานเป็นผู้รับรองแทน ห้องบัญชีมารับรองย้อนหลังตอน 13:28 หลังระบบขึ้นไปแล้วยี่สิบนาที ผลคือไม่ต้องถอยงานกลับ

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

เรื่องที่สี่: ตัวตรวจที่ตรวจตัวเอง

ตัวตรวจสุขภาพตัวที่สองมีหน้าที่หลีกทางเมื่อเครื่องกำลังยุ่งกับงานจริง ตอน 11:35 มันรายงานว่าหลีกทาง ห้องไล่ดูแล้วพบว่า "งานจริง" ที่มันหลีกให้ คือการซ้อมด่านที่ห้องเปิดทิ้งไว้เอง บันทึกเขียนต่อท้ายตรงๆ ว่าถึงตอนนั้นตัวตรวจตัวนี้ยังไม่เคยวิ่งจบจริงสักรอบ

เราชอบประโยคหลังมากกว่าประโยคแรก ตัวตรวจที่ติดตั้งแล้วแต่ยังไม่เคยวิ่งจบ ยังไม่ใช่ตัวตรวจ และห้องไม่ได้นับมันเป็นด่าน

เรื่องที่ห้า: ทางลัดที่ใช้แล้วหมด

มีงานกลุ่มหนึ่งติดด่านตรวจขนาดของงาน ห้าชิ้นถูกจอดเพราะเหตุนี้ ห้องตรวจงานอนุมัติทางยกเว้นตอน 11:24 โดยเขียนเงื่อนไขไว้ครบ: ด่านอื่นต้องผ่านทั้งหมด ข้ามได้เฉพาะด่านขนาด ระบุรหัสของโค้ดตัวที่อนุมัติ และต้องตรวจซ้ำว่าโค้ดยังเป็นตัวเดิมก่อนรวม

สิ่งที่น่าสนใจคือตอนจบ ตอน 13:55 ห้องรวมงานชิ้นสุดท้ายในรายการยกเว้น แล้วเขียนลงบันทึกเองว่า รายการยกเว้นใช้ครบแล้ว จะไม่รวมด้วยมืออีกจนกว่าจะได้บรรทัดอนุมัติใหม่ ห้านาทีต่อมามีคำขอยกเว้นแบบกว้างเข้ามา (ยกเว้นไฟล์ทุกไฟล์ที่ตรงรูปแบบหนึ่ง) ห้องตรวจงานปฏิเสธ และอนุญาตเพียงตำแหน่งเดียวที่ระบุชื่อ โดยต้องมีหลักฐานว่าด่านยังแดงได้จริงเมื่อควรแดง

ทางยกเว้นที่ไม่มีวันหมดคือด่านที่ถูกถอดออกแล้ว

สิ่งที่เรายังไม่รู้

ข้อคิดที่เอาไปใช้ได้

  1. นับของที่ถูกตีกลับด้วย จำนวนงานที่รวมบอกความเร็ว จำนวนที่ตีกลับบอกว่าด่านยังทำงาน
  2. สะดุดหนึ่งครั้ง ต้องได้กติกาหนึ่งบรรทัดในวันเดียวกัน และกติกานั้นต้องไปโผล่ในงานรอบถัดไปจริง เหมือนบรรทัดห้ามเขียนไฟล์คิวที่ไปอยู่ในรอบ 13:26
  3. การอนุมัติย้อนหลังที่จบดี ยังเป็นลำดับที่ผิด แก้ลำดับ ไม่ใช่ฉลองผล
  4. ทางยกเว้นต้องมีจำนวนจำกัดและมีชื่อ เมื่อใช้หมดต้องขอใหม่
  5. ตัวตรวจที่ยังไม่เคยวิ่งจบ ยังไม่นับเป็นด่าน