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

ข้อมูลที่ลูกค้ากรอกเข้ามาหายเกลี้ยง เพียงเพราะคุณแก้ข้อความบนปุ่มนิดเดียว แล้วกด deploy แอปขึ้นระบบจริงเป็นรอบที่สอง พอเปิดหน้าเว็บดู ทุกอย่างก็ยังแสดงผลครบ ฟอร์มยังกรอกได้ ปุ่มยังกดได้ แต่สิ่งเดียวที่ไม่กลับมาคือรายชื่อลูกค้าที่สะสมไว้ก่อนหน้านั้น หายไปหมดไม่เหลือแม้แต่รายการเดียว
อาการนี้ไม่ได้แปลว่าระบบพัง และไม่ได้แปลว่า AI เขียนโค้ดผิด แต่เป็นเพราะข้อมูลเหล่านั้นไปอยู่ใน "ที่เก็บชั่วคราว" ไม่ได้ลงใน database ซึ่งเป็นที่เก็บถาวรแยกต่างหากจากตัวโค้ด ตอนที่เรานั่งทดสอบคนเดียว ที่เก็บทั้งสองแบบนี้ให้ผลลัพธ์เหมือนกันทุกอย่าง เราจึงมองไม่เห็นความต่าง จนกระทั่ง deploy รอบที่สอง
อาการแบบนี้ไม่ใช่โค้ดพัง
ก่อนจะหาสาเหตุ ลองเช็กว่าอาการที่คุณเจอตรงกับข้อเหล่านี้หรือไม่
- ฟอร์มยังใช้งานได้ปกติ กรอกข้อมูลใหม่แล้วบันทึกได้ทันที
- ข้อมูลใหม่ที่เพิ่งกรอกจะยังอยู่ปกติ จนกว่าจะ deploy ใหม่อีกรอบ
- ข้อมูลเก่าไม่ได้ทยอยหาย แต่หายเกลี้ยงพร้อมกันทันทีหลัง deploy
ถ้าตรงทั้ง 3 ข้อ แปลว่าโค้ดไม่มีบั๊กและแอปก็ไม่ได้พัง ทุกอย่างทำงานถูกต้องตามคำสั่ง เพียงแต่ที่เก็บข้อมูลที่โค้ดใช้นั้นเป็นที่เก็บชั่วคราว ไม่ได้มีไว้สำหรับเก็บข้อมูลระยะยาว
สิ่งที่ทำให้เราสับสนคือคำว่า "บันทึกเรียบร้อยแล้ว" เพราะตอนที่หน้าจอขึ้นแจ้งเตือน มันบอกแค่ว่าระบบได้รับข้อมูลเข้าไปแล้วจริงๆ แต่ไม่ได้บอกว่าข้อมูลนั้นไปเก็บไว้ที่ไหน และไม่ได้บอกว่าจะยังอยู่ข้ามวันหรือไม่ หน้าจอเดียวกันนี้ตอบได้แค่ว่าระบบรับข้อมูลแล้ว แต่ไม่ได้รับประกันว่าข้อมูลจะอยู่ถาวร
ที่เก็บชั่วคราวอยู่ได้แค่ระหว่างที่แอปรัน

ที่เก็บชั่วคราวจะคงอยู่เฉพาะในรอบที่แอปกำลังรัน ตราบใดที่แอปยังรันรอบเดิม ข้อมูลก็ยังอยู่ครบ แต่พออัปเดตแล้วเริ่มรันรอบใหม่ ข้อมูลที่ค้างอยู่ในรอบเดิมไม่ได้ตามมาด้วย รอบใหม่จึงเริ่มต้นจากศูนย์
ส่วน database อยู่แยกจากโค้ด การอัปเดตโค้ดหรือ deploy ใหม่จึงไม่กระทบข้อมูลที่เก็บไว้ในนั้น ต่อให้คุณ deploy กี่ครั้ง ข้อมูลเดิมก็ยังคงอยู่ที่เดิม
สรุปให้เห็นภาพง่ายๆ คือ การ deploy จะเข้าไปแทนที่ "ตัวโค้ด" ไม่ใช่ "ข้อมูล" ข้อมูลจะอยู่หรือหายจึงขึ้นอยู่กับว่า ข้อมูลนั้นเก็บไว้ที่เดียวกับโค้ดหรือไม่ ถ้าเก็บไว้ที่เดียวกับโค้ด เมื่อโค้ดถูกแทนที่ ข้อมูลก็หายไปพร้อมกัน
ตอนทดสอบมีรอบเดียว เลยมองไม่เห็นปัญหา
ตอนที่คุณทำแอป คุณรันแอปแค่รอบเดียวแล้วทดสอบต่อเนื่อง ทั้งกรอกข้อมูล กดดูผลลัพธ์ และปรับแก้หน้าตาของแอป ตราบใดที่ยังเป็นการรันรอบเดิม ที่เก็บชั่วคราวกับ database ก็ให้ผลเหมือนกันทุกอย่าง ข้อมูลยังอยู่ครบ ปิดหน้าต่างแล้วเปิดใหม่ ข้อมูลก็ยังไม่หาย
นั่นหมายความว่าการทดสอบของคุณไม่เคยมีรอบที่สองเลย จึงไม่มีจังหวะให้เห็นความต่างนี้ ทุกอย่างที่คุณทดสอบจึงผ่านฉลุย ไม่ใช่เพราะเลือกวิธีเก็บข้อมูลถูกต้อง แต่เป็นเพราะยังไม่ได้ทดสอบในสถานการณ์ที่จะทำให้เห็นข้อผิดพลาด
ทำไม AI ถึงไม่เตือนเราตั้งแต่แรก
ในเมื่อ AI เป็นคนเขียนโค้ดส่วนนี้ให้ ทำไมมันถึงไม่บอกตั้งแต่แรกว่าข้อมูลจะไม่รอดหลัง deploy
เพราะเป้าหมายของ AI คือ "ทำให้ระบบทำงานได้ในตอนนี้" ซึ่งมันก็ทำสำเร็จตามนั้นจริงๆ ทุกสิ่งที่คุณทดสอบในแชตทำงานได้ทั้งหมด กรอกได้ บันทึกได้ แสดงผลได้ และไม่มีอะไรในการทดสอบที่ฟ้องว่าที่เก็บนี้มีอายุจำกัด ปัญหานี้จะปรากฏก็ต่อเมื่อ deploy รอบที่สอง ซึ่งเป็นสิ่งที่เกิดขึ้นทีหลัง อยู่นอกบทสนทนา และ AI จะไม่รู้เลยถ้าเราไม่ได้ระบุไว้
ถ้าพูดให้เป็นธรรม AI สามารถเชื่อมต่อ database ให้เก็บข้อมูลถาวรได้สบายมากถ้าเราสั่ง แต่สิ่งที่ AI เดาแทนเราไม่ได้คือข้อมูลชิ้นนั้นสำคัญแค่ไหน ถ้าเราไม่บอก โจทย์ที่ AI ได้รับก็มีแค่ "ทำให้ใช้งานได้" ซึ่งไม่ใช่โจทย์เดียวกับ "ทำให้ข้อมูลอยู่ถาวร" เรื่องนี้ตรงกับหลักการพื้นฐานของการให้ AI เขียนโค้ดให้ทั้งแอป นั่นคือ คำสั่งที่เราป้อนเข้าไปจะเป็นตัวกำหนดผลลัพธ์ที่ได้กลับมาเสมอ
คำถามที่ควรถามก่อนเริ่มทุกฟีเจอร์ที่มีการเก็บข้อมูล
ทุกครั้งที่กำลังจะให้ AI ทำฟีเจอร์ที่ต้องบันทึกข้อมูล ให้ถามคำถามนี้ก่อนเริ่มเสมอ
"หลัง deploy แล้ว ระบบจะเก็บข้อมูลนี้ไว้ที่ไหน"
ควรถามให้ชัดเจนตั้งแต่ก่อนเริ่มเขียนโค้ด ไม่ใช่รอให้เขียนเสร็จแล้วค่อยถาม เพราะถ้าต้องมาย้ายที่เก็บข้อมูลทีหลัง อาจต้องรื้อโค้ดใหม่ทั้งก้อน แต่ถ้าถามตั้งแต่แรก มันเป็นแค่ประโยคสั้นๆ บรรทัดเดียวที่เพิ่มเข้าไปในโจทย์
ถ้าต้องการคำตอบที่เจาะจงขึ้น มีอีกสองคำถามที่เลือกใช้ได้ตามสถานการณ์
- "ถ้าพรุ่งนี้ deploy ใหม่อีกรอบ ข้อมูลที่กรอกวันนี้จะยังอยู่ไหม" เหมาะกับตอนที่ต้องการคำตอบสั้นๆ ชัดเจนว่าอยู่หรือไม่อยู่ โดยไม่ต้องอธิบายยาว
- "ตอนนี้ข้อมูลเก็บไว้ที่ไหน เป็นแบบชั่วคราวหรือถาวร" เหมาะกับตอนที่ตรวจเช็กโค้ดเดิมที่มีอยู่แล้ว เพื่อดูสถานะก่อนจะทำฟีเจอร์ต่อไป
วิธีทดสอบง่ายๆ ด้วยการ deploy สองรอบ
การถามก่อนช่วยป้องกันได้ตั้งแต่ต้นทาง แต่สำหรับโค้ดที่ทำไปแล้ว วิธีพิสูจน์ที่ดีที่สุดคือลองทดสอบด้วยตัวเอง โดยจำลองสถานการณ์ที่จะทำให้ข้อมูลหาย ตั้งแต่ตอนที่ยังไม่มีข้อมูลจริงของใครอยู่ในระบบ
- Deploy รอบแรกขึ้นระบบจริง แล้วเปิดหน้าเว็บจริง ไม่ใช่หน้ารันทดสอบบนเครื่อง
- กรอกข้อมูลทดสอบเข้าไปสักชุดหนึ่ง ตั้งชื่อให้ชัดเจนและจำง่าย
- แก้ไขโค้ดเล็กๆ น้อยๆ ที่ไม่กระทบส่วนอื่น เช่น เปลี่ยนข้อความสักบรรทัด แล้วกด deploy เป็นรอบที่สอง
- กลับไปเปิดหน้าเว็บเดิม แล้วตรวจดูว่าข้อมูลทดสอบที่ตั้งชื่อไว้ยังอยู่ครบหรือไม่
ถ้าข้อมูลยังอยู่ครบ แปลว่าข้อมูลชุดนี้รอดการ deploy ได้จริง แต่ถ้าหายไป แปลว่ามันไม่รอด และคุณเพิ่งรู้ตอนที่ยังไม่มีความเสียหายเกิดขึ้น จากนั้นค่อยเอาคำตอบนี้ไปถามต่อว่าตอนนี้ข้อมูลเก็บไว้ที่ไหน
ถ้าเราไม่ทดสอบตั้งแต่วันนี้ คนที่จะมาทดสอบแทนเราคือผู้ใช้งานจริงคนแรก และข้อมูลที่หายไปรอบนั้นจะเป็นข้อมูลจริงของลูกค้า ไม่ใช่ข้อมูลทดสอบที่เราสร้างขึ้น เมื่อถึงเวลานั้น นอกจากจะต้องตามแก้โค้ดแล้ว ยังต้องไปอธิบายกับลูกค้าอีกว่าข้อมูลของเขาหายไปไหน
เส้นแบ่งที่ AI ยังตัดสินใจแทนเราไม่ได้

การเชื่อมต่อ database เป็นงานที่ AI ทำได้ดีอยู่แล้ว ถ้าบอกโจทย์ครบ มันก็จัดการเก็บข้อมูลแบบถาวรให้ได้ตั้งแต่แรก แต่งานที่ AI ทำแทนเราไม่ได้ คือการรู้ว่า ข้อมูลชิ้นไหนในแอปที่ห้ามหายเด็ดขาด
ข้อมูลอย่าง "รายชื่อลูกค้าที่ลงทะเบียนเข้ามา" กับ "ตัวเลือกที่ผู้ใช้กดค้างไว้ระหว่างกรอกฟอร์ม" สำคัญไม่เท่ากัน รายชื่อลูกค้าถ้าหายคือเสียโอกาสทางธุรกิจ ส่วนตัวเลือกในฟอร์มถ้าหายผู้ใช้ก็แค่กดเลือกใหม่ได้ เรื่องความสำคัญนี้ไม่ได้มีบอกไว้ในโค้ดหรือบนหน้าจอ แต่มีเพียงคุณเท่านั้นที่รู้ในฐานะคนสร้างแอป นี่คือเหตุผลว่าทำไมการตัดสินใจจึงยังเป็นหน้าที่ของคนทำ ไม่ใช่ของเครื่องมือ
การ deploy รอบที่สองจึงไม่ใช่ตัวการที่ทำให้ข้อมูลหาย แต่มันคือรอบแรกที่บอกความจริงว่าข้อมูลเก็บไว้ที่ไหนตั้งแต่ต้น และเราสามารถกดทดสอบได้ตั้งแต่วันนี้ ก่อนจะมีข้อมูลจริงของผู้ใช้งานอยู่ในระบบ
ชอบเรื่องแนวนี้ มีอีบุ๊คฟรีให้อ่านต่อ
NotebookLM ฉบับเข้าใจง่าย โยนเอกสารให้ AI อ่าน แล้วได้สรุป พอดแคสต์ และคลังความรู้ส่วนตัว
กดสมัครแล้วเราจะส่งเทคนิค AI และของแจกใหม่ๆ ให้ทางอีเมล เลิกรับได้ตลอด
Claude Cowork · The Business Playbook

ฉบับภาษาไทย 15 บท เรียนรู้ผ่านโปรเจกต์จำลองต่อเนื่องทั้งเล่ม ตั้งแต่ตั้งค่า Workspace จัดการไฟล์ เชื่อมแอป ตั้งระบบอัตโนมัติ จนถึงสร้าง Plugin


