Back to notes
mastery-platform-devops
Featured

CI/CD Pipeline Mastery: ป้อมปราการของการส่งมอบซอฟต์แวร์

หลุดพ้นจากวงจร 'Works on my machine' ด้วยระบบอัตโนมัติ เจาะลึกการสร้าง Pipeline ตั้งแต่ด่านตรวจบั๊ก (CI) ไปจนถึงการปล่อยของขึ้น Production (CD)

January 30, 20262 min read readNNexis by Seereen

🛑 1. The Problem First: "ความประมาทคือบ่อเกิดของบั๊ก" (The Manual Fear)

ลองนึกถึงวันที่ทุุกคนในทีมเร่งรีบทำฟีเจอร์ส่งลูกค้าในวันศุกร์ตอนเย็น:

HLJS BASH
# ❌ สถานการณ์: การ Deploy แบบใช้มือ (Manual Deployment)
$ git push origin main
$ ssh master@production-server
$ cd my-app && git pull
$ npm install && npm run build
# 🌋 พัง! คุณลืมรัน 'npm test' ก่อนพุชโค้ด และปรากฏว่าบั๊กที่แก้ไปเมื่อเช้า
# ไปทำลายระบบจ่ายเงิน แต่คุณพึ่งมารู้ตัวตอนลูกค้าโทรหาในคืนวันเสาร์!

ปัญหา: การเชื่อใจในความรอบคอบของมนุษย์ 100% คือความเสี่ยงที่สูงที่สุดในการทำซอฟต์แวร์ ยิ่งทีมใหญ่ขึ้น จำนวน Error ที่เกิดจาก "การเดินทับรอยเท้ากัน" หรือ "การลืมขั้นตอนบางอย่าง" จะทวีคูณขึ้นเรื่อยๆ จนระบบของคุณกลายเป็นแก้วที่พร้อมจะแตกทุุกเมื่อครับ


💡 2. Real-Life Analogy: ด่านตรวจคนเข้าเมือง (Passport Control)

  • Continuous Integration (CI): เหมือน "ด่านตรวจคนเข้าเมือง". ทุุกคนที่ต้องการเข้าประเทศ (Merge Code) ต้องผ่านการเช็คพาสปอร์ต (Linting), ตรวจกระเป๋า (Unit Test), และสอบถามประวัติ (Build Check) ถ้าไม่ผ่านแม้แต่ข้อเดียว ห้ามเข้าเมืองเด็ดขาด!
  • Continuous Deployment (CD): เหมือน "รถไฟนำเที่ยวอัตโนมัติ". เมื่อคุณผ่านด่านตรวจมาได้แล้ว รถไฟจะพาคุณไปยังโรงแรม (Staging) หรือสถานที่ท่องเที่ยว (Production) โดยอัตโนมัติทันที โดยที่คุณไม่ต้องเดินเท้าหรือขับรถเอง
  • Pipeline: คือ "สายพานการผลิตในโรงงาน". ทุุกขั้นตอนถูกกำหนดไว้ชัดเจนและทำหน้าที่ของตัวเองอย่างแม่นยำ

🚀 3. Execution Journey: ขั้นตอนการสร้างอาวุธลับอัตโนมัติ

เราจะใช้ GitHub Actions เป็นหุ่นยนต์คอยทำงานแทนเรา

🛠 Step-by-step:

  1. The Trigger: ตั้งค่าให้หุ่นยนต์เริ่มทำงานทันทีที่มีการ Push หรือเปิด Pull Request
  2. The Environment: สร้างเซิร์ฟเวอร์จำลอง (Ubuntu) ขึ้นมาเพื่อลง Node.js และจัดการ Dependencies
  3. The Quality Control: รันคำสั่ง Lint เพื่อเช็คความสะอาด และ Test เพื่อเช็คความถูกต้อง
  4. The Safe Gate: ถ้าทุุกอย่างเขียว (Success) จึงจะอนุญาตให้ส่งโค้ดไปยังเซิร์ฟเวอร์จริง
HLJS YAML
# ✅ Best Practice: GitHub Actions Pipeline พื้นฐาน
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node
        uses: actions/setup-node@v4
        with: { node-version: "20" }
      - run: npm ci # 🛠 ใช้ 'ci' แทน 'install' เพื่อความแม่นยำและความเร็ว
      - run: npm run lint
      - run: npm test

🪤 4. The Junior Trap: โรค "Trust the Green Checkmark"

จูเนียร์มักจะคิดว่าถ้า GitHub Actions ขึ้นสีเขียว ✅ แปลว่าโค้ดนั้นสมบูรณ์แบบ:

HLJS YAML
# ❌ Junior Trap: เขียน Test แบบหลอกตัวเอง
test:
  run: npm test || true # 🌋 พัง! การใส่ '|| true' จะทำให้ Pipeline เขียวเสมอ
  # แม้ว่าโค้ดจะบั๊กแค่ไหนก็ตาม นี่คือการสร้างความอุ่นใจปลอมๆ ที่อันตรายมาก

ระวัง: Pipeline จะมีค่าเท่ากับศูนย์ถ้าการทดสอบ (Tests) ของคุณไม่มีคุณภาพ ✅ การแก้ไข: จงเขียน Test ที่ครอบคลุมเคสสำคัญ และห้ามปล่อยให้ Pipeline ผ่านถ้ามีจุดผิดพลาดแม้แต่นิดเดียวครับ


⚖️ 5. The Why Matrix: ทำมือ vs ทำอัตโนมัติ

หัวข้อDeploy มือ (Old School)CI/CD Pipeline (Senior)
ความมั่นใจต่ำ (ลุ้นทุุกครั้งที่ Push)⚡⚡⚡ สูงมาก (มีหุ่นยนต์รับประกัน)
ความเร็วในการส่งของช้า (ต้องมีคนรอสั่งรัน)⚡⚡⚡ ทันทีที่ Merge Code
การทำงานเป็นทีมติดขัด ต้องถามกันตลอด🚀 ลื่นไหล (ทุุกคนเห็นผลลัพธ์เดียว)
ราคาที่ต้องจ่ายเวลาของมนุษย์ (แพง)ทรัพยากร Cloud (ถูกเมื่อเทียบกับเวลา)

🎓 6. Senior Mindset Summary

การเป็น Senior คือการมองว่า "เราไม่ได้เขียน Pipeline เพื่อที่จะเขียนน้อยลง แต่เพื่อให้เรากล้าส่งมอบงานที่มีคุณภาพสูงขึ้น". ระบบอัตโนมัติที่ดีคือระบบที่ทำงานเงียบๆ อยู่เบื้องหลัง และส่งเสียงเตือนเฉพาะเมื่อบ้านกำลังจะถูกไฟไหม้เท่านั้นครับ!

Share this note

© 2026 My Notes by Seereen