ในตอนสอง เรื่องมีแพลตฟอร์มแล้ว ควรปรับอะไรต่อ ทีมสมมติยังไม่เพิ่มชนิดฐานข้อมูล แต่เลือกทำสถานะคำขอ การรับช่วงงาน และการเลิกใช้ให้ตรวจได้ก่อน คราวนี้ผมอยากต่อให้ถึงวันที่มีคนถามว่า แล้วเมื่อไรเราจึงควรขยายบริการ?
ผมจะไม่รอให้ของเดิมสมบูรณ์ทุกจุด แต่ก็ไม่ใช้จำนวนคำขอใหม่เป็นเหตุให้ข้ามปัญหาที่รู้อยู่แล้ว สิ่งที่ต้องตัดสินใจคือ งานที่เพิ่มขึ้นช่วยผู้ใช้เรื่องใด และเรารับผิดชอบสิ่งที่ตามมาได้หรือยัง คำตอบอาจเป็นแก้ของเดิม ทดลองเพิ่มในวงจำกัด หรือยังไม่ทำในรอบนี้
บทความนี้ใช้บริการฐานข้อมูลทดสอบสมมติเดิมต่อจากสองตอนแรก ตัวอย่างและข้อเสนอทั้งหมดเป็นวิธีคิดสำหรับนำไปปรับใช้ ไม่ใช่ผลการทดลองขององค์กรจริงหรือเกณฑ์รับรองความพร้อม
กลับไปดูว่าปัญหาที่เลือกแก้เปลี่ยนไปหรือยัง
ถ้ารอบก่อนเลือกแก้คำขอค้าง รอบนี้ควรลองตามคำขอที่ค้างจริงในขอบเขตทดลอง ผู้ใช้เห็นสถานะหรือไม่ คนรับเรื่องรู้หรือยังว่าสร้างอะไรไปแล้ว และคนอื่นรับช่วงต่อได้แค่ไหน การเปลี่ยนข้อความบนหน้าจอยังไม่พอ หากสุดท้ายทุกคนต้องรอคนเดิมมาตรวจให้
เรื่องการเลิกใช้ก็เช่นกัน ควรตามจากคำขอยุติไปถึงสิทธิ ทรัพยากร และข้อมูลที่ยังต้องเก็บตามเงื่อนไข ถ้าตกลงว่าต้องมีผู้ยืนยันก่อนยุติ ก็ต้องตรวจขั้นตอนนั้นด้วย ไม่ใช้การกดลบสำเร็จเป็นหลักฐานแทนงานทั้งหมด
ผมจะดูทั้งงานที่ผู้ใช้ทำจบ เวลาที่รอ และงานที่ผู้ดูแลต้องช่วย เมื่อเทียบก่อนกับหลังแก้ควรเลือกงานที่ใกล้เคียงกัน แล้วถามคนที่ลองใช้ประกอบด้วย เวลาที่เร็วขึ้นอาจเกิดจากมีคนคอยช่วยอยู่หลังบ้าน จึงยังสรุปไม่ได้ว่าภาระรวมลดลง
แยกปัญหาที่ต้องจัดการก่อน ออกจากสิ่งที่ทยอยปรับได้
สมมติว่าบริการยังบอกไม่ได้ว่าใครเข้าถึงข้อมูลได้ หรือยุติแล้วไม่รู้ว่ามีอะไรเหลืออยู่ ผมจะจัดการเรื่องนี้ก่อนรับผู้ใช้เพิ่ม เพราะขอบเขตความเสียหายยังไม่ชัด ส่วนข้อปรับปรุงที่ยังไม่กระทบความถูกต้องหรือความปลอดภัยของงาน อาจวางแผนแก้ต่อระหว่างการทดลองที่จำกัดไว้ได้ ต้องประเมินตามความเสี่ยงจริง ไม่ใช้รายการเดียวตัดสินทุกบริการ
- ของเดิมดูแลได้หรือยังถ้ายังควบคุมปัญหาสำคัญไม่ได้ ให้แก้หรือจำกัดส่วนที่เสี่ยงก่อน เมื่อดูแลขอบเขตเดิมได้จึงพิจารณาคำขอใหม่
- คำขอใหม่แก้งานอะไรถ้ายังบอกงานที่ต้องใช้ไม่ได้ ให้คุยกับผู้ใช้และตรวจทางเลือกก่อน เมื่อความต้องการชัดจึงดูภาระที่เพิ่ม
- ภาระเพิ่มมีคนรับหรือไม่ถ้ายังไม่มีเวลา คน หรืองบที่ตกลงไว้ ให้เลื่อนหรือเลือกทางอื่น เมื่อรับภาระได้จึงออกแบบการทดลอง
- จะทดลองและหยุดอย่างไรถ้ายังรับมือเมื่อต้องหยุดไม่ได้ ให้เตรียมวิธีดูแลผู้ใช้และข้อมูลก่อน เมื่อตกลงขอบเขตได้จึงเริ่มทดลอง
คำขอใหม่ควรอธิบายได้มากกว่าอยากมีฐานข้อมูลอีกชนิด ตัวอย่างสมมติคือทีมต้องทดสอบตัวเชื่อมข้อมูลกับฐานข้อมูลอีกชนิด ตรวจทั้งการอ่าน การเขียน และการแจ้งปัญหาเมื่อเชื่อมต่อไม่ได้ โดยใช้ข้อมูลที่สร้างขึ้นสำหรับทดสอบ การลองกับฐานข้อมูลเดิมอย่างเดียวจึงตอบไม่ได้ว่าตัวเชื่อมทำงานกับชนิดใหม่นั้นถูกต้องหรือไม่ ผมจะคุยกับคนที่ต้องใช้ พร้อมดูว่าบริการที่มีอยู่หรือผู้ให้บริการภายนอกรองรับงานนั้นได้หรือไม่ ก่อนรับภาระดูแลของใหม่เอง
คำขอเหมือนกัน แต่คำตอบอาจต่างกัน
ลองแยกเป็นสองสถานการณ์สมมติ ทั้งคู่ได้รับคำขอให้รองรับฐานข้อมูลอีกชนิด แต่มีหลักฐานของบริการเดิมต่างกัน นี่เป็นทางเลือกคนละกรณี ไม่ใช่ผลก่อนและหลังที่เกิดขึ้นกับทีมจริง
กรณี ก แก้ของเดิมก่อน
ผู้ใช้ยังถามหาสถานะคำขอ คนรับช่วงไม่รู้ว่ามีทรัพยากรใดสร้างไปแล้ว และรายการเลิกใช้ยังไม่มีผลตรวจครบ
ผมจะทำให้ตรวจสถานะ รับช่วง และปิดงานเดิมได้ก่อน ยังไม่เพิ่มชนิดฐานข้อมูลในรอบนี้
กรณี ข ทดลองขยายในวงจำกัด
สมมติว่าคนรับช่วงตรวจปัญหาได้ และตรวจขั้นตอนเลิกใช้ครบตามเงื่อนไขแล้ว มีผู้ใช้ต้องทดสอบตัวเชื่อมกับฐานข้อมูลอีกชนิด พร้อมผู้รับผิดชอบงานดูแลที่เพิ่ม
ผมจะเสนอให้ทดลองกับงานทดสอบที่ตกลงไว้ แล้วทบทวนผลก่อนเปิดกว้างขึ้น
สำหรับกรณี ก การยังไม่เพิ่มบริการไม่จำเป็นต้องแปลว่าทุกงานต้องหยุด ทีมอาจให้ผู้ใช้เดิมทำงานต่อในขอบเขตที่ควบคุมได้ พร้อมเร่งจัดการปัญหาที่พบ หากปัญหากระทบสิทธิ ข้อมูล หรือความปลอดภัย ก็ต้องจำกัดหรือหยุดส่วนที่ได้รับผลตามความจำเป็น และแจ้งผู้ใช้ให้รู้ว่าจะทำงานต่ออย่างไร
ส่วนกรณี ข ผมจะยังแยกคำขอสำหรับระบบงานจริงออกไปพิจารณาต่างหาก การทดสอบรับช่วงหรือยุติบริการได้ ไม่ได้แทนการประเมินข้อมูลที่ใช้ ความเสียหายเมื่อระบบหยุด การสำรองและกู้คืน หรือหน้าที่ของผู้ให้บริการในระบบงานจริง
นับงานหลังเปิดใช้ ก่อนตัดสินว่าคุ้ม
ก่อนทดลองกรณี ข คนเสนอและคนดูแลควรช่วยกันระบุงานที่จะเพิ่ม เช่น การตั้งค่าและทดสอบแม่แบบ การอัปเดต การรับปัญหา การตรวจสิทธิ และการเลิกใช้ มีอะไรที่ผู้ให้บริการรับดูแลให้ และมีอะไรที่ทีมยังต้องทำเอง ตรวจจากขอบเขตบริการจริง ไม่เดาจากชื่อว่าเป็นบริการสำเร็จรูป
ค่าใช้บริการภายนอกกับเวลาคนควรเห็นแยกกัน เพื่อไม่ให้การลดค่าระบบดูคุ้มทั้งที่งานดูแลเพิ่มจนคนไม่มีเวลารับปัญหา อีกด้านหนึ่ง เวลาที่ผู้ใช้ได้คืนก็มีคุณค่า แต่ยังไม่ใช่เงินสดที่ประหยัดได้ทั้งหมดโดยอัตโนมัติ ต้องดูว่าจะนำเวลานั้นไปทำงานใด และมีค่าใช้จ่ายอะไรเปลี่ยนจริง
สำหรับทีมที่มีคนจำกัด คำถามที่ผมอยากให้ตอบคือ ถ้ารับดูแลบริการใหม่นี้ งานใดจะเลื่อนออกไป และใครตกลงรับผลของการเลื่อนนั้น ถ้ายังไม่มีคำตอบ ผมจะยังไม่รับปากวันเปิดใช้ แม้ความต้องการใหม่จะมีเหตุผลก็ตาม อาจเลือกใช้บริการภายนอกในขอบเขตที่เหมาะกว่า หรือเก็บคำขอนี้ไว้พิจารณารอบถัดไป
ทดลองให้ได้คำตอบ ไม่ใช่เปิดแล้วค่อยหาว่าจะวัดอะไร
การทดลองกรณี ข ควรเริ่มจากผู้ใช้และงานทดสอบที่ตกลงไว้ ใช้ข้อมูลที่สร้างขึ้นสำหรับทดสอบ และกำหนดข้อจำกัดเรื่องสิทธิ ทรัพยากร และค่าใช้บริการตามสิ่งที่ทีมดูแลได้ ก่อนเริ่มให้ตกลงว่าจะกลับมาดูอะไรเมื่อจบรอบงานนั้น แทนการปล่อยให้คำว่าทดลองยืดไปเรื่อย ๆ
ตัวอย่างหลักฐานที่อยากได้คือ ผู้ใช้ทำงานทดสอบที่ระบุไว้สำเร็จหรือไม่ ต้องให้คนช่วยตรงไหน คนรับช่วงตามปัญหาได้หรือยัง และเมื่องานจบตรวจการยุติได้ครบตามเงื่อนไขหรือไม่ ควรเก็บค่าใช้บริการกับงานดูแลที่เกิดขึ้นจริงด้วย แล้วเทียบกับสิ่งที่ตกลงไว้ก่อนเปิดทดลอง
ถ้าพบว่าการควบคุมสิทธิผิดจากที่ตกลง หรือไม่รู้ว่าจะจัดการทรัพยากรและข้อมูลเมื่อยุติอย่างไร ให้หยุดรับคำขอเพิ่มในส่วนที่ได้รับผลแล้วตรวจปัญหา การหยุดขยายไม่ใช่คำสั่งให้ลบฐานข้อมูลที่มีคนใช้อยู่ ต้องมีคนรับผิดชอบติดต่อผู้ใช้ ตรวจข้อมูลที่ต้องเก็บ และตกลงวิธีย้าย ย้อนกลับ หรือยุติตามความเสี่ยงของแต่ละกรณี
จบการคุยด้วยการตัดสินใจที่รับผิดชอบต่อได้
ผมอยากให้การทบทวนจบด้วยบันทึกสั้น ๆ ที่กลับมาอ่านแล้วรู้ว่าตกลงอะไร ตัวอย่างต่อไปนี้เติมจากกรณี ข เพื่อให้เห็นว่าต้องตอบเรื่องใด ไม่ใช่แบบฟอร์มที่ต้องใช้เหมือนกันทุกองค์กร
| เรื่องที่ต้องบันทึก | ตัวอย่างคำตอบของทีมสมมติ |
|---|---|
| ตัดสินใจอะไร | ทดลองรองรับฐานข้อมูลอีกชนิด เฉพาะงานทดสอบที่ตกลงกับกลุ่มผู้ใช้ ยังไม่เปิดสำหรับระบบงานจริง |
| เหตุผลที่เลือก | ต้องตรวจการอ่าน เขียน และปัญหาการเชื่อมต่อกับฐานข้อมูลอีกชนิด โดยงานรับช่วงและยุติของบริการเดิมตรวจได้ตามขอบเขตแล้ว |
| ใครรับผิดชอบ | ผู้ดูแลบริการรับงานอัปเดตและปัญหา โดยมีคนรับช่วง ทีมผลิตภัณฑ์รับผิดชอบชุดข้อมูลและผลทดสอบ ต้องใส่ชื่อผู้รับผิดชอบจริงในแผน |
| รับภาระเพิ่มอย่างไร | กันเวลาสำหรับตั้งค่า ทดสอบ และดูแล พร้อมตกลงข้อจำกัดค่าใช้บริการและงานปรับปรุงอื่นที่ต้องเลื่อนก่อนเริ่ม |
| เมื่อไรต้องหยุดรับเพิ่ม | เมื่อสิทธิหรือการจัดการข้อมูลผิดจากขอบเขตที่ตกลง หรืองานดูแลเกินกำลังที่จัดไว้ ให้ผู้รับผิดชอบประเมินผลกระทบและแจ้งผู้ใช้ |
| กลับมาทบทวนเมื่อไร | เมื่องานทดสอบที่ตกลงไว้จบรอบ ดูผลใช้งาน งานช่วยเหลือ ค่าใช้บริการ และการยุติ ต้องกำหนดวันนัดจริงให้ทุกฝ่ายรู้ก่อนเริ่ม |
เมื่อทบทวนแล้วอาจเลือกขยายต่อ แก้อีกจุดก่อน หรือเลิกทำส่วนที่ไม่คุ้มดูแล หากจะเลิกบริการ ต้องมีแผนแจ้งผู้ใช้และรับช่วงงานค้างด้วย การมีทางเลือกให้หยุดหรือใช้ของที่มีอยู่แล้ว ช่วยให้ทีมไม่ต้องรักษาทุกบริการไว้เพียงเพราะเคยลงทุนทำไป
ที่มาและขอบเขต
อ่านกรอบความพร้อมที่ใช้เป็นพื้นของเรื่องได้ในตอนสอง ซึ่งอ้างอิง CNCF Platform Engineering Maturity Model ส่วนลำดับคำถาม ภาพ ตัวอย่างสองสถานการณ์ และบันทึกการตัดสินใจในตอนนี้เป็นข้อเสนอจากกรณีสมมติ ไม่ใช่เกณฑ์หรือผลวิจัยของ CNCF และไม่ได้ใช้แทนการประเมินระบบจริง