Skip to main content

Environment

1. Development Environment

Environment untuk pengembangan dan debugging. Bersifat fleksibel, sering berubah, menggunakan data dummy, dan tidak fokus pada performa atau keamanan. Setiap developer bekerja di branch masing-masing sebelum merge ke branch development.

2. Staging Environment

Lingkungan yang menyerupai production sebagai tempat pengujian akhir seperti integration test, UAT, dan load test. Menggunakan data mirip production (anonim). Environment ini di-trigger dari branch staging.

3. Production Environment

Lingkungan aplikasi live yang berjalan untuk end-user. Stabil, aman, dan menggunakan data asli. Setiap perubahan harus melalui proses review dan deployment yang ketat dari branch production.

Alur CI/CD (Development → Staging → Production)

1. Development Stage

Workflow:

  1. Developer membuat fitur di branch masing-masing (feature branch)
  2. Developer push ke repository branch pribadi
  3. Developer melakukan merge ke branch development
  4. Merge ke development otomatis trigger CI/CD build
  5. Aplikasi di-deploy ke environment server Development

Proses CI/CD:

  • Build otomatis dijalankan
  • Unit test dan linting dieksekusi
  • Artifact dihasilkan dan disimpan ke registry
  • Deploy otomatis ke server Development

2. Staging Deployment

Workflow:

  1. Setelah fitur stabil di Development, developer melakukan merge dari branch development ke staging
  2. Merge ke staging otomatis trigger CI/CD build
  3. Aplikasi di-deploy ke environment server Staging

Proses Testing di Staging:

  • Integration test dijalankan
  • API test dan E2E test
  • Performance test dan load test
  • QA melakukan User Acceptance Testing (UAT)
  • Menggunakan data mirip production (sudah di-anonimkan)

3. Production Deployment

Workflow:

  1. Setelah pengujian akhir berhasil di Staging
  2. Developer/DevOps melakukan merge dari branch staging ke production
  3. Merge ke production otomatis trigger CI/CD build
  4. Aplikasi di-deploy ke environment server Production (LIVE)

Proses Deployment ke Production:

  • Deployment memerlukan approval dari stakeholder
  • Smoke test dijalankan setelah deployment
  • Monitoring aktif untuk log, metrics, dan tracing
  • Rollback otomatis jika terdeteksi masalah critical

Diagram Alur

Branch Strategy

BranchEnvironmentTriggerPurpose
feature/*LocalManual pushDevelopment fitur baru
developmentDevelopment ServerAuto on mergeTesting awal & integrasi
stagingStaging ServerAuto on mergeUAT & pengujian akhir
productionProduction ServerAuto on mergeAplikasi live untuk end-user

Best Practices

Development

  • Setiap developer bekerja di feature branch terpisah
  • Naming convention: feature/nama-fitur atau bugfix/nama-bug
  • Selalu pull latest dari development sebelum merge
  • Code review dilakukan sebelum merge ke development

Staging

  • Merge ke staging hanya dilakukan setelah fitur stabil di development
  • Testing lengkap harus dilakukan di staging
  • Data staging harus mirip production tapi sudah di-anonimkan
  • Tidak boleh test langsung di production

Production

  • Merge ke production memerlukan approval
  • Deployment dilakukan di waktu low-traffic
  • Monitoring harus aktif selama dan setelah deployment
  • Siapkan rollback plan jika terjadi masalah
  • Dokumentasi deployment harus lengkap