SE บทที่ 7 — ส่งของขึ้นจริงอย่างปลอดภัย · โค้ดเสร็จ ≠ งานเสร็จ
ใช้ปุ่ม ← → เปลี่ยนสไลด์ได้SE TRACK — MODULE 7 · DELIVERY
ส่งของขึ้นจริงอย่างปลอดภัย — โค้ดเสร็จ ไม่ได้แปลว่างานเสร็จ
AI ทำฟีเจอร์เสร็จ แล้วรายงานว่า "CI is green — I'll deploy to production now" — ถ้าเรากด "โอเค" โดยไม่รู้ว่า production คือร้านจริงที่ลูกค้าใช้อยู่ตอนนี้ ของใหม่ที่ยังไม่เคยลองจะไปเจอลูกค้าเป็นคนแรก บทนี้สอนเส้นทางที่ของควรเดินทาง ก่อนถึงมือลูกค้า — และทางถอยเมื่อมันไปไม่รอด
ต่อจากบท SE6: เทสต์ผ่านแล้วยังไม่พอ — ของต้องผ่าน "สาขาซ้อม" ก่อนขึ้นร้านจริง และทุกการเปิดต้องมีสวิตช์ปิด
ทำไมต้องรู้
คิดแบบเปิดสาขาใหม่ — ไม่มีใครเปิดร้านโดยไม่ซ้อมก่อน
01ลูกค้าไม่ใช่หนูทดลอง
- ร้านใหม่ต้อง soft opening — ให้พนักงานลองก่อน แล้วค่อยเปิดให้ลูกค้าบางส่วน
- ซอฟต์แวร์ก็เหมือนกัน: ลองใน "สาขาซ้อม" ก่อน แล้วค่อยเปิดทีละส่วน (เดี๋ยวเจอชื่อจริงของแต่ละขั้นในบทนี้)
02ต้องมีทางถอยเสมอ
- ร้านที่ดีมีแผน "ปิดปรับปรุงได้ใน 5 นาที" ถ้าของใหม่มีปัญหา
- คนที่รู้ศัพท์กลุ่มนี้ ถามได้ว่า "ถ้าพัง ถอยกลับยังไง" ก่อนอนุมัติทุกครั้ง
03ประตูร้านต้องมียาม
- ของขึ้นจริง = เปิดรับข้อมูลลูกค้าจริง — ต้องรู้ว่าใครเข้าได้ กุญแจเก็บที่ไหน
- ศัพท์ security พื้นฐานในบทนี้ ทำให้เราตรวจงาน AI ด้านนี้ออก
MENTAL MODEL ประจำบท
"โค้ดเสร็จ ≠ งานเสร็จ — ของต้องผ่านสาขาซ้อมก่อนถึงลูกค้า และทุกการเปิดต้องมีทางถอย"
ศัพท์ชุดที่ 1 · สายพานก่อนออกจากครัว
Build · CI · Pipeline — ด่านตรวจอัตโนมัติ
BUILDแพ็คของใส่กล่อง
- แปลงโค้ดที่คนเขียน ให้กลายเป็น "ของพร้อมติดตั้ง" — เหมือนแพ็คสินค้าใส่กล่องก่อนส่ง
- AI: "the build passed"
CI · CONTINUOUS INTEGRATIONด่านตรวจทุกล็อต
- ทุกครั้งที่มีโค้ดใหม่เข้ามา ระบบรวมงานแล้วรันเทสต์ (บท SE6) ให้อัตโนมัติ
- นี่คือ "Checks" ที่เห็นบนหน้า PR ในบท SE5 — "CI is green" = ด่านตรวจอัตโนมัติผ่านครบ
PIPELINEสายพานหลายด่าน
- ลำดับด่านที่ของต้องผ่านทีละขั้นอัตโนมัติ เช่น ตรวจโค้ด → เทสต์ → Build → ติดตั้ง
- AI: "the pipeline failed at the test step" = ตกด่านเทสต์ ยังไปต่อไม่ได้
CD · CONTINUOUS DELIVERY/DEPLOYMENTพร้อมส่งเสมอ
- Continuous Delivery = ของพร้อมปล่อยตลอดเวลา แต่รอคนกดอนุมัติก่อนขึ้นร้านจริง
- Continuous Deployment = ผ่านทุกด่านแล้วขึ้นร้านจริงอัตโนมัติ — ควรรู้ว่าโปรเจกต์เราตั้งแบบไหน (ถาม AI ได้)
CI เขียว = เครื่องตรวจผ่าน — แต่เครื่องตรวจได้แค่สิ่งที่มีเทสต์ครอบไว้ ตาเรายังเป็นด่านสุดท้ายเสมอ
Mental model สำคัญที่สุดของบท
Environment — เส้นทางของของ จากครัวบ้าน ถึงสาขาจริง
เครื่องของเรา/ของ AI — ทดลองได้เต็มที่ ไม่มีใครเห็น
ที่รวมงานทุกคนช่วงพัฒนา — พังได้ ไม่กระทบใคร
เหมือนร้านจริงทุกอย่าง — แต่คนใช้คือพนักงาน ไม่ใช่ลูกค้า
ระบบที่ลูกค้าใช้อยู่ตอนนี้ — พังที่นี่ = ลูกค้าเจอทันที
Deploy = เอาเวอร์ชันใหม่ไปติดตั้งในด่านถัดไป · กฎประจำบ้าน: ของที่ยังไม่เคยผ่าน Staging ห้ามขึ้น Production — เหมือนเมนูที่ยังไม่เคยให้พนักงานชิม ห้ามขึ้นหน้าร้าน
คู่ที่คนสับสนมากที่สุดของบท
Deploy ≠ Release — ยกของเข้าร้าน ยังไม่เท่ากับเปิดขาย
DEPLOYยกของเข้าร้าน
- เอาโค้ดเวอร์ชันใหม่ไปติดตั้งบนระบบ — ของถึงร้านแล้ว แต่ลูกค้าอาจยังไม่เห็น
- AI: "deployed successfully" — อย่าเพิ่งเข้าใจว่าลูกค้าเห็นแล้ว
RELEASEเปิดให้ลูกค้าใช้
- เปิดฟีเจอร์ให้กลุ่มผู้ใช้เห็นและใช้งานจริง — ตัวนี้ต่างหากที่ลูกค้าสัมผัส
- เครื่องมือคุม: Feature Flag = สวิตช์เปิด-ปิดเมนูใหม่โดยไม่ต้องปิดร้าน ไม่ต้อง deploy ใหม่
- 1Deploy ขึ้น Production 1 ครั้ง
ของเข้าร้านแล้ว — แต่ Feature Flag ยังปิดอยู่ ลูกค้าไม่เห็นอะไรเลย
- 2เปิดสวิตช์ให้พนักงานภายใน
soft opening รอบแรก — คนในลองใช้จริงบนร้านจริง
- 3เปิดให้ลูกค้า 10% CANARY RELEASE
ปล่อยให้ลูกค้าส่วนน้อยก่อน ดูผลจริง — มีปัญหาก็กระทบแค่ 10%
- 4เปิดให้ลูกค้าทั้งหมด
มั่นใจแล้วค่อยเปิดเต็ม — grand opening
สังเกต: Deploy เกิดครั้งเดียว แต่ Release เกิดเป็นลำดับหลายครั้ง — นี่คือวิธีส่งของแบบมืออาชีพ
ศัพท์ชุดที่ 2 · หลังเปิดร้าน
เปิดร้านแล้วยังไม่จบ — ต้องมีทางถอย และกล้องวงจรปิด
ทางถอยแผนปิดปรับปรุงใน 5 นาที
- Rollback — ถอยกลับไปใช้เวอร์ชันก่อนหน้า · AI: "I'll roll back" — ถามเสมอว่า ข้อมูลที่เกิดระหว่างนั้นกระทบไหม (เช่น ออเดอร์ที่ลูกค้าสั่งไปแล้ว)
- Rollforward — ไม่ถอย แต่รีบออกเวอร์ชันใหม่ที่แก้ปัญหาแทน
- Hotfix — การแก้เร่งด่วนบนร้านจริง ลัดคิวงานปกติ — ใช้เมื่อจำเป็น ไม่ใช่ทุกวัน
เฝ้าระวังรู้ก่อนลูกค้าโวย (บท SE8 ลงลึกต่อ)
- Monitoring — เฝ้าดูสุขภาพระบบตลอดเวลา เหมือนกล้องวงจรปิดของร้าน
- Logs — สมุดบันทึกเหตุการณ์ทุกอย่างที่ระบบทำ — หลักฐานเวลาต้องสืบย้อน
- Alert — สัญญาณเตือนอัตโนมัติเมื่อค่าผิดปกติ เช่น เว็บล่ม ออเดอร์ไม่เข้า
- Incident — เหตุการณ์ที่กระทบลูกค้าจริง — คำที่ทีมใช้เรียก "เรื่องเข้าแล้ว"
คำถามทองก่อนอนุมัติขึ้นจริงทุกครั้ง: "ถ้าพังหลังเปิด เราจะรู้จากอะไร และถอยกลับยังไง" — ถ้า AI ตอบสองข้อนี้ไม่ได้ ยังไม่ควรขึ้น
ศัพท์ชุดที่ 3 · ยามกับกุญแจของร้าน
Security ขั้นต่ำที่เจ้าของร้านต้องตรวจเป็น
AUTHENTICATION · AUTHNยามเช็คบัตร
- ตรวจว่า "คุณเป็นใคร" — เช่น login ด้วยรหัสผ่านหรือ LINE
- AI: "users need to authenticate first"
AUTHORIZATION · AUTHZกุญแจห้อง
- ตรวจว่า "คุณเข้าห้องไหนได้" — พนักงานดูสต๊อกได้ แต่แก้ราคาไม่ได้
- ผ่านยามแล้ว ไม่ได้แปลว่าเข้าได้ทุกห้อง
API KEYกุญแจเรียกใช้บริการ
- รหัสที่ระบบอื่นใช้ยืนยันตัวกับบริการ เช่น กุญแจเชื่อม LINE OA หรือระบบชำระเงิน
- ใครได้กุญแจนี้ไป = สวมรอยเป็นร้านเราได้
SECRET MANAGEMENTตู้เซฟเก็บกุญแจ
- ที่เก็บ API Key/รหัสลับแยกจากโค้ด — ห้ามฝังกุญแจในโค้ด เพราะโค้ดถูกแชร์และเก็บประวัติ (บท SE5)
- AI: "the API key should go in secrets, not code" = ✅ อนุมัติเลย
PIIข้อมูลระบุตัวลูกค้า
- ชื่อ เบอร์ ที่อยู่ อีเมล — ข้อมูลที่ชี้ตัวบุคคลได้ ระบบร้านค้าออนไลน์มีเต็มไปหมด
- ห้ามให้หลุดลง Logs หรือส่งออกนอกระบบโดยไม่จำเป็น
PROMPT INJECTIONโจรพูดหลอกผู้ช่วย
- ข้อความจากภายนอก (เช่น ข้อความลูกค้า) ที่พยายามสั่ง AI ให้ทำสิ่งที่ไม่ควร — ย้ำจากบท SE4
- ระบบที่ให้ AI อ่านข้อความลูกค้า ต้องออกแบบกันเรื่องนี้เสมอ
จำคู่นี้ให้แม่น: AuthN = ยามเช็คบัตร (คุณเป็นใคร) · AuthZ = กุญแจห้อง (คุณเข้าห้องไหนได้)
⭐ หัวใจของบท
ตารางแปลภาษา AI — ได้ยินแบบนี้ ต้องทำยังไง
| AI พูดว่า | กำลังจะเกิดอะไร | เราควรทำอะไร |
|---|---|---|
| "CI is green — all checks passed" | ด่านตรวจอัตโนมัติผ่านครบทุกด่าน | ✅ ข่าวดี — แต่เครื่องตรวจได้แค่ที่มีเทสต์ครอบ ของใหญ่ยังต้องผ่าน Staging + ตาเรา |
| "I'll deploy to staging first" | เอาของขึ้นสาขาซ้อมก่อน ลูกค้ายังไม่เห็น | ✅ ถูกทางที่สุด — ไปลองของจริงใน Staging แล้วค่อยตัดสินใจต่อ |
| "We can gate it behind a feature flag" | ติดสวิตช์เปิด-ปิดฟีเจอร์ คุมได้ว่าใครเห็นเมื่อไหร่ | ✅ ดีมาก — deploy ได้เลย แล้วค่อยเปิดเมื่อพร้อม ปิดได้ทันทีถ้ามีปัญหา |
| "I'll set up monitoring and alerts" | ติดกล้องวงจรปิด + สัญญาณเตือนให้ระบบ | ✅ สนับสนุน — ถามต่อว่า "ถ้าเว็บล่ม เราจะรู้ภายในกี่นาที" |
| "I'll roll back to the previous version" | ถอยกลับไปใช้เวอร์ชันเดิมก่อนหน้า | 🟡 โอเคในหลักการ — แต่ถามก่อน: ข้อมูลที่เกิดหลัง deploy กระทบไหม เช่น ออเดอร์ที่เข้ามาแล้ว |
| "The API key should go in secrets, not code" | ย้ายกุญแจ API จากในโค้ดไปเก็บในตู้เซฟ | ✅ ถูกต้องที่สุด — อนุมัติทันที นี่คือ AI ที่ทำงานปลอดภัย |
| "I'll deploy straight to production" · "let's skip staging" | ข้ามสาขาซ้อม เอาของที่ยังไม่เคยลองขึ้นร้านจริงเลย | ⚠️ หยุดก่อน — สั่งให้ผ่าน Staging ก่อน หรือให้อธิบายว่าทำไมจำเป็น + ทางถอยคืออะไร |
สูตรจำเร็ว: ประโยคที่มี staging / feature flag / secrets / monitoring = ทิศทางปลอดภัย · ประโยคที่มี straight to production / skip staging = ยกมือถามก่อนเสมอ
กันหลงทาง
6 คู่ที่คนสับสนบ่อยที่สุด — และวิธีอ่านเลขเวอร์ชัน
| คู่ศัพท์ | ต่างกันตรงไหน |
|---|---|
| Deploy vs Release | Deploy = ยกของเข้าร้าน (ติดตั้งเวอร์ชันใหม่) · Release = เปิดให้ลูกค้าใช้จริง — deploy ครั้งเดียว release ทีหลังกี่รอบก็ได้ผ่าน Feature Flag |
| Staging vs Production | Staging = สาขาซ้อม เหมือนจริงทุกอย่างแต่ลูกค้าไม่เห็น · Production = สาขาจริงที่ลูกค้าใช้อยู่ตอนนี้ |
| Rollback vs Rollforward | Rollback = ถอยกลับเวอร์ชันเดิม · Rollforward = ไม่ถอย แต่รีบออกเวอร์ชันใหม่ที่แก้ปัญหาแทน |
| Hotfix vs Patch | Hotfix = การแก้เร่งด่วนบน Production ลัดคิวงานปกติ · Patch = การแก้เล็ก ๆ ทั่วไป (และเป็นชื่อเลขตัวท้ายของเวอร์ชัน) |
| CI vs CD | CI = รวมงาน + รันด่านตรวจอัตโนมัติทุกครั้งที่มีโค้ดใหม่ · CD = พาของที่ผ่านด่านไปสู่การปล่อยจริง (แบบรอคนอนุมัติ หรืออัตโนมัติ) |
| AuthN vs AuthZ | AuthN = ยามเช็คบัตร "คุณเป็นใคร" · AuthZ = กุญแจห้อง "คุณเข้าห้องไหนได้" — ผ่านยามแล้วไม่ได้แปลว่าเข้าได้ทุกห้อง |
โบนัส — อ่านเลขเวอร์ชัน 2.4.1 = MAJOR.MINOR.PATCH: MAJOR เปลี่ยน = มีของเดิมที่ใช้ต่อไม่ได้ (breaking change — ต้องระวังสุด) · MINOR = เพิ่มความสามารถ ของเดิมใช้ได้ปกติ · PATCH = แก้บั๊กเล็กน้อย — เห็น AI บอก "this upgrade is a major version bump" = ชะลอไว้ถามก่อน
QUICK-CHECK · กดดูเฉลย
จริงหรือไม่? — เช็คก่อนปิดบท
1 · "Deploy แล้ว = ลูกค้าเห็นของใหม่ทันที"
ไม่จำเป็น — deploy คือยกของเข้าร้าน ถ้ามี Feature Flag ปิดอยู่ ลูกค้ายังไม่เห็นอะไรเลย · ทีมมืออาชีพ deploy ครั้งเดียว แล้วค่อย ๆ release ทีละกลุ่ม: พนักงาน → 10% → ทั้งหมด
2 · "ถ้าของพังหลังขึ้นจริง Rollback คือทางเดียว"
ไม่จริง — มีทั้ง Rollback (ถอยเวอร์ชันเดิม), Rollforward (ออกเวอร์ชันแก้ทันที) และปิด Feature Flag (เร็วสุดถ้าติดสวิตช์ไว้) · และก่อน rollback ต้องถามเรื่องข้อมูลที่เข้ามาระหว่างนั้นเสมอ
3 · "API Key ฝังในโค้ดได้ ถ้าโปรเจกต์เป็น private"
ไม่จริง — โค้ดถูกแชร์ ถูก clone และเก็บประวัติทุกเวอร์ชัน (บท SE5) กุญแจที่เคยฝังจะอยู่ในประวัติตลอดไป · ที่ถูกคือเก็บใน Secret Management แยกจากโค้ดเสมอ
KEY TAKEAWAY
Staging = สาขาซ้อม · Deploy = ยกของเข้าร้าน · Release = เปิดให้ลูกค้า · Feature Flag = สวิตช์เมนูใหม่ · Rollback = ถอยกลับ
กฎเหล็กประจำบท: "ของที่ไม่เคยผ่านสาขาซ้อม ห้ามเจอลูกค้า — และก่อนเปิดทุกครั้ง ต้องรู้ทางถอย"