Quality Gates and Environment Promotion
Quality gate คือเงื่อนไขที่ต้องผ่านก่อน change จะไป environment ถัดไป เป้าหมายคือจับปัญหาเร็วและปล่อย production อย่างมีหลักฐาน
IaC validation
สำหรับ Terraform pipeline ควรมี fmt, validate, module tests ตามความเหมาะสม และ plan
ที่ถูกแนบใน Pull Request หรือ approval record เพื่อให้ reviewer เห็น resource changes จริง
terraform fmt -check -recursive
terraform init -backend=false
terraform validate
terraform plan -out tfplan
Security scanning
- Dependency scan สำหรับ application packages
- Container image scan ก่อน push/deploy
- IaC scan เช่น public S3, open Security Group, missing encryption
- Secret scan เพื่อกัน credentials หลุดเข้า repository
Environment separation
แยก dev, staging และ production ด้วย account, role, state backend, secrets และ approval policy Artifact ควรถูก promote จาก environment ก่อนหน้า ไม่ใช่ rebuild ใหม่ด้วย code เดิม เพราะ rebuild อาจได้ dependency version ต่างกัน
Production approval
Approval ควรเป็นการตรวจหลักฐาน ไม่ใช่แค่กดปุ่ม ควรเห็น diff, test result, risk, rollback plan, owner, deployment window และ expected metrics
Common mistakes
- ให้ pipeline ไป production ได้ทันทีจากทุก branch
- ใช้ environment variables production ใน CI logs หรือ test output
- ไม่เก็บ Terraform plan/result ไว้ตรวจย้อนหลัง
Review questions
- Quality gate ที่ดีควรตรวจอะไรบ้าง?
- ทำไมควร promote artifact แทน rebuild ก่อน production?
- Production approval ควรดูหลักฐานอะไร?