CI/CD untuk Proyek Backend Modern — Dari Git Push hingga Produksi
Mengirim fitur dengan cepat memang bagus—tapi mengirimnya dengan andal jauh lebih penting. Pipeline CI/CD membantu tim backend untuk merilis kode dengan percaya diri, meminimalkan kesalahan manusia, dan mendeteksi masalah lebih awal.
Berikut panduan membangun pipeline CI/CD modern untuk proyek backend.
1. Filosofi CI/CD
- Continuous Integration: Setiap commit langsung diuji otomatis
- Continuous Delivery: Otomatis deploy ke staging
- Continuous Deployment: Otomatis deploy ke production (jika semua tes lolos)
Pilih level yang sesuai dengan toleransi risiko dan kematangan tim kamu.
2. Anatomi Pipeline CI/CD
Alur umum backend CI/CD:
-
Developer push ke
main
atau buka PR -
Pipeline berjalan:
- Linting & analisis statis
- Unit & integration testing
- Build artifacts
-
Setelah merge:
- Image Docker dibangun & diberi tag
- Dikirim ke registry
- Deploy ke staging/production
3. Contoh GitHub Actions
# .github/workflows/backend.yml
name: Pipeline CI/CD Backend
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Instal dependensi
run: npm ci
- name: Jalankan tes
run: npm test
docker:
needs: build-and-test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker image
run: docker build -t backend-ku .
- name: Push ke registry
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
docker tag backend-ku ghcr.io/username/backend-ku:latest
docker push ghcr.io/username/backend-ku:latest
4. Strategi Deployment
- Manual Approval untuk produksi
- Blue-Green Deployment untuk zero-downtime
- Canary Release untuk rilis bertahap
Gunakan GitHub Environments atau Argo CD dengan approval gate.
5. Manajemen Secrets
Hindari menaruh secrets di kode. Sebaiknya:
- Gunakan GitHub Secrets saat CI
- Gunakan Vault, Doppler, atau SOPS saat runtime
env:
DATABASE_URL: ${{ secrets.DATABASE_URL }}
6. Observability Setelah Deploy
Setelah deploy bukan akhir:
- Tandai versi dengan tag atau label
- Kirim metadata deploy ke Grafana atau Datadog
- Pantau latency, error, dan traffic spike
7. Rollback
Selalu siapkan rollback:
- Simpan image Docker versi sebelumnya
- Gunakan Git revert atau Helm rollback
helm rollback backend-app 42
8. Tips Optimasi Pipeline
- Cache dependensi untuk build lebih cepat
- Jalankan tes secara paralel
- Gunakan matrix build untuk berbagai versi runtime
strategy:
matrix:
node: [16, 18, 20]
Penutup
Pipeline CI/CD modern bukan cuma otomasi—tapi bagian dari kontrak keandalan sistemmu. Bangun pipeline yang cepat, terukur, dan aman untuk rollback.
Gimana cara kamu deploy backend saat ini? Diskusi yuk di LinkedIn.