Workshop: สร้าง Staging Environment บน Cloud VPS ให้ทีม QA ทดสอบอัตโนมัติ

บทความนี้จะแนะนำการสร้าง Staging Environment สำหรับ QA Team บน Cloud VPS โดยจะครอบคลุมการตั้งค่าเซิร์ฟเวอร์ที่เหมือนกับ Production เพื่อให้ QA สามารถทดสอบได้อย่างมั่นใจก่อนการ Deploy ไปยัง Production

ทำไมจึงต้องมี Staging Environment

Staging Environment คือสภาพแวดล้อมที่มีลักษณะเหมือนกับ Production แต่ใช้สำหรับทดสอบก่อนการ Deploy จริง ทำให้:

  • ทดสอบ Features ใหม่ก่อนไปยัง Production
  • ตรวจสอบ Performance และ Load Balancing
  • ตรวจสอบ Database Migration
  • ทดสอบ Integration ระหว่าง Services
  • ลดความเสี่ยงของ Down Time

สิ่งที่ต้องเตรียม

  • Cloud VPS 2 เครื่อง (สำหรับ Staging + Production)
  • Docker และ Docker Compose สำหรับ Container
  • CI/CD Tool (GitHub Actions, Jenkins, GitLab CI)
  • Load Balancer (Nginx)
  • Git Repository

1. ตั้งค่า Cloud VPS สำหรับ Staging

สร้าง VPS ใหม่ที่มี Spec เดียวกับ Production และติดตั้ง OS เดียวกัน (Ubuntu 20.04 LTS หรือ 22.04 LTS)

2. ติดตั้ง Docker และ Docker Compose

บนเซิร์ฟเวอร์ Staging ให้ติดตั้ง Docker และ Docker Compose เพื่อให้สามารถรัน Container เหมือน Production

3. ตั้งค่า CI/CD Pipeline

ตั้งค่า GitHub Actions หรือ CI/CD Tool อื่นให้ Deploy โค้ดไปยัง Staging ทุกครั้งที่มี Commit ไปยัง Branch staging

4. ตั้งค่า Database Staging

สร้าง Database ที่เป็นสำเนาของ Production เพื่อให้ QA สามารถทดสอบ Data Scenarios ต่างๆได้

5. ตั้งค่า Load Balancer

ใช้ Nginx เป็น Load Balancer สำหรับกระจายโหลด HTTP requests ไปยัง Backend Servers หลายตัว

Docker Compose สำหรับ Staging

สร้าง docker-compose.yml ที่กำหนด Services ต่างๆ:

version: '3.8'
services:
  web:
    image: node:18-alpine
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=staging
      - DATABASE_URL=postgresql://user:pass@db:5432/app_staging
    depends_on:
      - db
    volumes:
      - ./app:/app
    working_dir: /app
    command: npm start

  db:
    image: postgres:15-alpine
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=app_staging
    volumes:
      - staging_db_data:/var/lib/postgresql/data

volumes:
  staging_db_data:

สรุป

การสร้าง Staging Environment เป็นสิ่งสำคัญในการ Deploy Application ที่ปลอดภัย โดยช่วยให้ QA Team สามารถทดสอบได้อย่างสมบูรณ์ก่อนการ Deploy ไปยัง Production จากบริการ Cloud VPS ของ ผู้ให้บริการโฮสติ้ง คุณสามารถสร้างสภาพแวดล้อมนี้ได้ง่ายและปลอดภัย