Lesson 1Release safety

CI/CD Concepts and Deployment Strategies

CI/CD คือระบบลดความเสี่ยงของการเปลี่ยนแปลง ไม่ใช่แค่สคริปต์ deploy อัตโนมัติ ทุก stage ต้องช่วยตอบว่า change นี้ปลอดภัยพอจะไปต่อหรือไม่

Continuous Integration และ Continuous Delivery

Continuous Integration หรือ CI คือการรวม code บ่อย ๆ แล้วตรวจด้วย automated checks เช่น lint, unit test, build และ security scan Continuous Delivery คือการทำให้ artifact พร้อม deploy ไป environment ถัดไปได้อย่าง repeatable โดยยังอาจมี manual approval ก่อน production

Build, Test, Deploy และ Rollback

  • Build: สร้าง artifact เช่น binary, container image หรือ Terraform plan
  • Test: ตรวจ correctness, security, policy และ compatibility
  • Deploy: ส่ง artifact version ที่ระบุชัดไป environment เป้าหมาย
  • Rollback: กลับไป version ก่อนหน้าหรือสภาพ infrastructure ที่ปลอดภัยเมื่อ release มีปัญหา

Artifact และ Container Image versioning

Artifact ต้อง trace ได้จาก production ย้อนกลับไป source commit, pipeline run และ approval record สำหรับ container image ควรใช้ immutable tag เช่น Git SHA หรือ release version แทน latest

Deployment strategies

StrategyเหมาะกับTradeoff
Rollingservice ที่รองรับ version เก่า/ใหม่ทำงานร่วมกันrollback อาจต้อง deploy version เก่ากลับ
Blue/Greenต้องการ switch traffic ระหว่าง environment ชัดเจนใช้ resource เพิ่มและต้องดูแล data compatibility
Canaryต้องการปล่อย traffic ทีละน้อยและวัด metrics ก่อนขยายต้องมี metrics, alarms และ rollback automation ดี
แนวคิดสำคัญ: deployment strategy ที่ดีต้องเข้ากับ observability ถ้าไม่มี health metrics และ alarms การทำ Canary หรือ Blue/Green จะปลอดภัยน้อยกว่าที่คิด

Common mistakes

  • Pipeline deploy ได้ แต่ไม่มี rollback path ที่ทดสอบจริง
  • ใช้ artifact ที่ rebuild ระหว่าง environment ทำให้ staging และ production ไม่ใช่ binary/image เดียวกัน
  • ไม่มี database migration strategy สำหรับ backward compatibility

Review questions

  1. CI ต่างจาก Continuous Delivery อย่างไร?
  2. ทำไม artifact ต้อง trace กลับไป commit ได้?
  3. Canary ต้องพึ่ง metrics และ alarms อะไรบ้าง?