Dev Env 101: ทำความเข้าใจ Environment ของการพัฒนา (PVT, SIT, UAT, PROD)

·

ทำไมต้องแยก Environment ในการพัฒนาซอฟต์แวร์ 🤔

เวลา dev ระบบจริง เราไม่สามารถมีแค่ Production ได้ ลองนึกภาพ push code ใหม่แล้วปล่อยตรงไปให้ user ใช้เลย… โอกาสพังสูงมาก 🥲

เลยต้องมีการ แยก environment หลายชั้น เพื่อให้การพัฒนา → ทดสอบ → ขึ้นตลาดจริง มีความปลอดภัยและควบคุมได้ง่ายขึ้น


1. Local Environment

  • รันบนเครื่องของ dev แต่ละคน
  • ใช้ config และ database ส่วนตัว
  • ปรับแต่งได้อิสระ ไม่กระทบทีมอื่น

ใครใช้: developer แต่ละคน


2. Development (DEV) Environment

  • รวมโค้ดล่าสุดจากทุกคน
  • ใช้สำหรับ debug และลอง feature
  • ไม่เสถียร เพราะโค้ดเปลี่ยนตลอด

ใครใช้: developer ทีมทั้งหมด


3. PVT (Private Test / Pre-validation Test)

  • บางองค์กรจะมี env นี้เพิ่มมา
  • เป็นเหมือน buffer zone ระหว่าง DEV → UAT
  • ใช้ตรวจสอบ feature ที่เสร็จแล้วภายในทีมก่อนส่งให้ business

ใครใช้: QA / Dev lead / Tester

📌 Note: PVT ไม่ใช่มาตรฐานสากล แต่ทีมใหญ่ ๆ มักเพิ่มไว้เพื่อลดบั๊กหลุดไป UAT


4. SIT (System Integration Test)

  • ใช้ทดสอบการรวมระบบ: API, service, module ต่าง ๆ
  • เช็กว่า component คุยกันได้จริง
  • บางที่ merge เข้ากับ DEV/UAT เลยก็มี

ใครใช้: QA / DevOps


5. UAT (User Acceptance Test)

  • จำลองตลาดจริงให้ user/business มาทดสอบ
  • ใกล้เคียง production ที่สุด
  • ถ้า UAT ผ่าน = พร้อมขึ้น PROD

ใครใช้: QA / Business / Key users


6. Staging Environment

  • Pre-production ที่ replicate production เกือบ 100%
  • ใช้ regression test, performance test, load test
  • เหมือนซ้อมใหญ่ก่อนปล่อยจริง

ใครใช้: QA / DevOps / Stakeholders


7. Production (PROD) Environment

  • ระบบจริงที่ลูกค้าใช้งาน
  • ต้องเสถียร ปลอดภัย และ monitor ได้ตลอด

ใครใช้: end-user จริง ๆ


8. Sandbox Environment

  • ใช้ตอนเชื่อม API ภายนอก เช่น Payment, Banking, OAuth, LINE, Facebook
  • เป็น env ที่ partner เปิดให้ลองโดยไม่กระทบของจริง

ใครใช้: Developer / Partner


9. Preview หรือ Ephemeral Environment

  • Env ที่สร้างอัตโนมัติสำหรับ branch หรือ Pull Request
  • เอาไว้ preview feature ชั่วคราว เช่น web ก่อน merge
  • ใช้เสร็จแล้วก็ลบทิ้งได้

ใครใช้: Developer / Reviewer / QA


Flow ของ Environment

โดยทั่วไปการไหลจะเป็นแบบนี้:

Local → DEV → PVT → SIT → UAT/Staging → PROD

(บางทีมไม่มี PVT หรือ Staging แล้วแต่ process ของทีม)


Checklist เวลาออกแบบ Environment

  • ห้ามใช้ database ของ PROD ใน DEV/UAT
  • Config ต้องแยกชัด เช่น .env หรือ secret manager
  • PROD ต้องมี monitoring + logging
  • ทีมต้องตกลงกันว่า PVT หมายถึงอะไร (บางที่ใช้ = Private Test, บางที่ใช้ = Product Validation Test)
  • UAT/Staging ต้อง replicate production ให้มากที่สุด

สรุปสั้น ๆ

  • DEV → โค้ดล่าสุดสำหรับ dev ใช้
  • PVT → เช็กงานภายในก่อน UAT
  • SIT → ทดสอบ integration ของระบบ
  • UAT → ให้ user/business ยืนยันการทำงาน
  • Staging → pre-production, ซ้อมใหญ่
  • PROD → ตลาดจริง ลูกค้าใช้จริง
  • Sandbox/Preview → เสริม สำหรับเชื่อม API ภายนอกหรือทดสอบ branch

การมี environment ที่ชัดเจน จะช่วยให้ทีม dev ทำงานได้มั่นใจ ลดบั๊ก ลด downtime และส่งมอบระบบที่เสถียรให้ user ทุกครั้ง 🚀