Skip to main content
Case Studies

เว็บไซต์ Deploy แต่ไม่อัปเดต? — เบื้องหลังการไล่จับบั๊กที่ Dashboard บอกว่า "สำเร็จ" แต่จริง ๆ ไม่ใช่

เมื่อระบบ CI/CD รายงานว่า deploy สำเร็จทุกครั้ง แต่เว็บไซต์กลับแสดงข้อมูลเก่า 3 วัน — บันทึกกระบวนการไล่หาสาเหตุแบบ step-by-step ที่ DevOps ทุกคนควรรู้

17 มี.ค. 20268 นาที
DevOpsKubernetesCI/CDDebuggingInfrastructureCase Study

เกิดอะไรขึ้น?

วันหนึ่ง เราเพิ่มบทความใหม่ลงเว็บไซต์ ระบบ CI/CD build สำเร็จ ✅ deploy สำเร็จ ✅ Dashboard สีเขียวทุกอย่าง — แต่พอเปิดเว็บไซต์ดู ข้อมูลเก่า 3 วันยังอยู่ บทความใหม่หายไปหมด

ไม่ใช่แค่ครั้งเดียว — ย้อนกลับไปดูพบว่า deploy 3 ครั้งติดต่อกัน ถูกรายงานว่า "สำเร็จ" ทั้งหมด แต่ไม่มีครั้งไหนที่อัปเดตจริง

นี่คือบันทึกกระบวนการไล่หาสาเหตุ ตั้งแต่สิ่งที่เราเห็น → สิ่งที่เราคิด → สิ่งที่เราพบ


ขั้นที่ 1 — ยืนยันว่า "สำเร็จ" จริงหรือ?

สิ่งแรกที่ทำคือตรวจสอบ pipeline ทุกขั้นตอน:

  • Build — image ถูกสร้างและ push ขึ้น registry ✅
  • Deploy — ระบบ apply configuration เข้า cluster สำเร็จ ✅
  • Rolloutค้าง! timeout หลัง 2 นาที แต่ถูกจัดการด้วย fallback message แทนที่จะเป็น error ❌

จุดสำคัญ: ระบบรายงานว่า "สำเร็จ" เพราะ timeout ถูกจัดการเป็น warning ไม่ใช่ error — pipeline ผ่านหมดแม้ว่าขั้นตอนสุดท้ายจะล้มเหลว

บทเรียนแรก: "ไม่มี error" ไม่ได้แปลว่า "สำเร็จ" — Silent failure อันตรายกว่า loud failure เสมอ


ขั้นที่ 2 — ตรวจสอบสมมติฐานที่เห็นได้ชัดก่อน

เมื่อรู้ว่า rollout ค้าง คำถามต่อไปคือ "ทำไม?" เราเริ่มจากสมมติฐานที่พบบ่อยที่สุด:

สมมติฐาน A: ทรัพยากรไม่พอ?

เปิด monitoring dashboard ดู — CPU ใช้แค่ 7%, Memory ใช้แค่ 38%, Load Average ต่ำมาก

❌ ตัดออก — ทรัพยากรเหลือเฟือ

สมมติฐาน B: Health check ล้มเหลว?

ตรวจสอบ configuration — endpoint ที่ใช้ตรวจสุขภาพถูกตั้งค่าไว้ถูกต้อง เคยทำงานได้ในเวอร์ชันก่อนหน้า

❌ ตัดออก — configuration ไม่มีอะไรเปลี่ยน

สมมติฐาน C: Image ดึงไม่ได้?

ตรวจ registry — image ถูก push สำเร็จและดึงได้ปกติ

❌ ตัดออก — ไม่ใช่ปัญหา image


ขั้นที่ 3 — ย้อนเวลาหาจุดที่ "พัง"

เมื่อสมมติฐานแรก ๆ ตกหมด เราเปลี่ยนมุม — ย้อนกลับไปหาครั้งสุดท้ายที่สำเร็จจริง แล้วเปรียบเทียบ:

เวอร์ชัน ผลลัพธ์ เวลาที่ใช้
v1.1.195 ✅ สำเร็จ ~14 วินาที
v1.1.196 ❌ timeout >120 วินาที
v1.1.197 ❌ timeout >120 วินาที
v1.1.198 ❌ timeout >120 วินาที

แพทเทิร์นชัดเจน: v1.1.195 สำเร็จปกติ ตั้งแต่ v1.1.196 เป็นต้นมาค้างทุกครั้ง

ตรวจสอบว่ามีอะไรเปลี่ยนระหว่าง 2 เวอร์ชันนี้ — ไม่มีอะไรเปลี่ยนเลย ในส่วน infrastructure มีแต่การเพิ่มเนื้อหาใหม่


ขั้นที่ 4 — Root Cause: "โดมิโน" ที่ล้มต่อกัน

เมื่อวิเคราะห์ลึกขึ้น จึงเข้าใจว่าเกิดอะไรขึ้น:

กลไกของ Rolling Update

ระบบ container orchestration ใช้กลยุทธ์ rolling update เพื่อ zero-downtime deployment:

  1. สร้าง container ใหม่ ก่อน (surge)
  2. รอจนใหม่พร้อม (readiness check ผ่าน)
  3. ค่อยปิดเก่า (terminate)

ด้วยการตั้งค่า "ห้ามลดจำนวนที่ทำงานได้" — container เก่าจะถูกปิดได้ก็ต่อเมื่อ container ใหม่พร้อมแล้วเท่านั้น

ปัญหา: Chain Reaction

  1. v1.1.196 timeout — rollout ไม่เสร็จภายในเวลาที่กำหนด ระบบทิ้ง rollout ไว้ใน "สถานะกำลังดำเนินการ" (in-progress)
  2. v1.1.197 มา deploy ทับ — แต่ระบบยังประมวลผล rollout เก่าอยู่ ทำให้ใหม่ก็ค้างตาม
  3. v1.1.198 มาอีก — ซ้อนอีกชั้น เหมือน โดมิโนที่ล้มต่อกัน

บทเรียนที่สอง: Rollout ที่ timeout ไม่ได้หายไป — มันค้างรอจนกว่าจะมีคนมาแก้


ขั้นที่ 5 — ทำไม Pipeline ไม่แจ้งเตือน?

นี่คือส่วนที่ "เจ็บ" ที่สุด: pipeline ทำงานเสร็จทุกครั้ง เพราะ timeout ถูกจัดการเป็นแค่ warning

กลไกมันทำงานแบบนี้:

  • ถ้า rollout สำเร็จ → แสดง "สำเร็จ"
  • ถ้า rollout timeout → แสดง "⚠️ timeout" แต่ pipeline ยังถือว่าผ่าน

ผลลัพธ์: Dashboard สีเขียว ✅ ทุกครั้ง ไม่มีใครรู้ว่าเว็บค้างอยู่ที่เวอร์ชันเก่ามา 3 วัน

บทเรียนที่สาม: ทุก warning ที่ถูกเพิกเฉยคือ error ในอนาคต — timeout ควรเป็น failure ไม่ใช่ warning


วิธีแก้ — 3 ระดับ

ระดับ 1: แก้ไขเฉพาะหน้า

บังคับ restart ให้ระบบล้าง rollout ที่ค้างทิ้ง แล้วเริ่ม deploy ใหม่สะอาด

ระดับ 2: ป้องกันไม่ให้เกิดซ้ำ

  • เปลี่ยน pipeline ให้ rollout timeout = failure ไม่ใช่ warning
  • เพิ่มขั้นตอน "ล้าง rollout เก่า" ก่อนเริ่ม deploy ใหม่ทุกครั้ง
  • Deploy ทีละ service — ไม่ deploy web + API พร้อมกัน

ระดับ 3: Monitoring & Alerting

  • ตั้ง alert เมื่อ "เวอร์ชันที่ deploy ≠ เวอร์ชันที่ serve อยู่"
  • ตรวจสอบ response header หลัง deploy ว่าตรงกับ version ล่าสุด
  • ใช้ smoke test หลัง deploy — ถ้าเนื้อหาไม่ตรง ให้ rollback อัตโนมัติ

5 บทเรียนสำหรับทุกทีม

1. อย่าเชื่อ Dashboard สีเขียว

"Build สำเร็จ" ≠ "Deploy สำเร็จ" ≠ "ใช้งานได้จริง" — ต้อง verify ถึงขั้นตอนสุดท้ายเสมอ

2. Silent Failure อันตรายกว่า Loud Failure

ข้อผิดพลาดที่ส่งเสียงดังจะถูกแก้ทันที ข้อผิดพลาดที่เงียบจะสะสมจนกลายเป็นวิกฤต

3. ย้อนเวลาก่อนเดาสาเหตุ

แทนที่จะเดาว่า "น่าจะเป็นเรื่องนั้น" — หาจุดที่ระบบทำงานได้ปกติครั้งสุดท้าย แล้วเปรียบเทียบ วิธีนี้ตัดสมมติฐานที่ผิดออกได้เร็วที่สุด

4. ทุก Warning ควรมี Escalation Path

warning ที่เกิดซ้ำ 3 ครั้งติดต่อกันไม่ใช่ warning อีกต่อไป — มันคือ incident

5. ออกแบบ Pipeline ให้ "Fail Fast, Fail Loud"

ระบบที่ดีควรส่งเสียงดังเมื่อมีปัญหา ไม่ใช่ซ่อนปัญหาไว้ใต้ status สีเขียว


สรุป

ปัญหานี้ไม่ได้เกิดจากโค้ดพัง ไม่ได้เกิดจากเซิร์ฟเวอร์ล่ม และไม่ได้เกิดจากทรัพยากรไม่พอ — แต่เกิดจาก "ช่องว่าง" ระหว่าง build สำเร็จ กับ deploy จริง ที่ไม่มีใครมอนิเตอร์

ในโลกของ DevOps สิ่งที่คุณไม่ได้วัด คือสิ่งที่คุณไม่รู้ และสิ่งที่คุณไม่รู้ คือสิ่งที่จะกลับมากัดคุณในวันที่คุณคาดไม่ถึง


หากองค์กรของคุณกำลังเผชิญปัญหาคล้ายกัน — deploy ดูเหมือนสำเร็จแต่ระบบไม่อัปเดต, pipeline เงียบเกินไป, หรือต้องการวาง infrastructure ที่มั่นคง ปรึกษาทีม Enersys เราช่วยออกแบบและแก้ไขระบบ DevOps ให้ทำงานได้จริง


แหล่งข้อมูล

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

ซื้อ AI + ERP แพงหูฉี่ แต่ได้แค่ 10% ของ Value — ปัญหา "Last Mile" ที่ไม่มีใครพูดถึง

90% ของโปรเจกต์ AI ในองค์กรล้มเหลว ไม่ใช่เพราะเทคโนโลยีห่วย แต่เพราะคนไม่ยอมเปลี่ยน — HBR และ erp.today เปิดโปงปัญหา Last Mile ที่ทำให้บริษัทเสียเงินฟรีปีละหลายล้าน

ธุรกิจ Analog ตายสนิท — UTCC เปิดลิสต์ Rising Stars vs Falling Stars เศรษฐกิจไทย 2026

หอการค้าไทยชี้ชัด: ร้านเน็ต สิ่งพิมพ์ ร้านหนังสือ กำลังจมหาย ขณะที่ Cloud, Cybersecurity, Creator Economy พุ่งทะยาน GDP ดิจิทัลโต 4.2% เร็วกว่า GDP ประเทศ 2 เท่า — ธุรกิจคุณอยู่ฝั่งไหน?

พาทัวร์ Enersys — เปิดประตูทุกห้องของ software house ไทย: ใครทำอะไร อยู่ตรงไหน และ AI ช่วยแต่ละ role อย่างไรในยุค 2026

ลูกค้าและพาร์ทเนอร์ถามบ่อย — Enersys ทำอะไรกันแน่ และคนในบริษัทมีหน้าที่อะไรบ้าง บทความนี้พาทัวร์ทั้ง 14 ห้อง (เลขมงคล) ของ software house เปิดประตูทีละแผนก ตั้งแต่ front desk, engineering floor จนถึง Executive Office บอกว่าใครรับผิดชอบอะไร AI ตัวไหนเข้ามาช่วย และทำไม mix ของคนกับ AI ในยุค 2026 ทำให้ส่งงานคุณภาพได้เร็วและคุ้มขึ้น

"Empowering Innovation,
Transforming Futures."

ติดต่อเราเพื่อทำให้โปรเจกต์ของคุณเป็นจริง