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:
- Developer membuat fitur di branch masing-masing (feature branch)
- Developer push ke repository branch pribadi
- Developer melakukan merge ke branch
development - Merge ke
developmentotomatis trigger CI/CD build - 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:
- Setelah fitur stabil di Development, developer melakukan merge dari branch
developmentkestaging - Merge ke
stagingotomatis trigger CI/CD build - 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:
- Setelah pengujian akhir berhasil di Staging
- Developer/DevOps melakukan merge dari branch
stagingkeproduction - Merge ke
productionotomatis trigger CI/CD build - 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
| Branch | Environment | Trigger | Purpose |
|---|---|---|---|
feature/* | Local | Manual push | Development fitur baru |
development | Development Server | Auto on merge | Testing awal & integrasi |
staging | Staging Server | Auto on merge | UAT & pengujian akhir |
production | Production Server | Auto on merge | Aplikasi live untuk end-user |
Best Practices
Development
- Setiap developer bekerja di feature branch terpisah
- Naming convention:
feature/nama-fiturataubugfix/nama-bug - Selalu pull latest dari
developmentsebelum 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