Dalam pengembangan aplikasi modern, proses deployment tidak harus selalu dilakukan secara manual. Developer bisa membuat aplikasi yang secara otomatis diterapkan ke server setiap kali perubahan kode sudah melewati proses pemeriksaan.
Konsep tersebut dikenal sebagai Continuous Deployment (CD).
Continuous Deployment merupakan salah satu bagian penting dalam CI/CD Pipeline yang dapat membantu tim developer bekerja lebih cepat, konsisten, dan efisien. Dengan penerapan yang tepat, perubahan kode dari repository dapat melewati proses build dan testing, lalu langsung dideploy ke production tanpa harus menjalankan proses secara manual.
Lalu, bagaimana cara menerapkan Continuous Deployment dengan CI/CD Pipeline? Mari kita bahas dari konsep dasar sampai contoh alurnya.
Apa Itu Continuous Deployment?
Continuous Deployment adalah proses otomatis untuk menerapkan perubahan kode ke environment production setelah perubahan tersebut berhasil melewati seluruh pemeriksaan yang ditentukan dalam pipeline.
Misalnya developer memperbaiki fitur login. Setelah kode di-push ke repository, pipeline akan menjalankan beberapa proses:
Push Code
↓
Build
↓
Testing
↓
Security Check
↓
Deploy Production
Jika semua tahap berhasil, aplikasi akan diperbarui secara otomatis.
Developer tidak perlu lagi masuk ke server dan melakukan deployment secara manual.
Continuous Deployment vs Continuous Delivery
Continuous Deployment sering dianggap sama dengan Continuous Delivery, padahal keduanya memiliki perbedaan.
Continuous Delivery
Pada Continuous Delivery, aplikasi selalu disiapkan dalam kondisi siap untuk dirilis.
Namun, deployment ke production masih dapat membutuhkan persetujuan manual.
Code
↓
Build
↓
Test
↓
Staging
↓
Manual Approval
↓
Production
Continuous Deployment
Pada Continuous Deployment, deployment ke production dilakukan secara otomatis setelah semua syarat pipeline terpenuhi.
Code
↓
Build
↓
Test
↓
Security Check
↓
Production
Jadi, perbedaan utamanya terletak pada otomatisasi proses deployment ke production.
Mengapa Continuous Deployment Penting?
Continuous Deployment memberikan beberapa manfaat bagi proses pengembangan software.
1. Deployment Lebih Cepat
Developer dapat mengirim perubahan ke pengguna tanpa harus melakukan deployment secara manual setiap saat.
2. Mengurangi Pekerjaan Manual
Proses seperti build, testing, dan deployment dapat dijalankan oleh pipeline.
3. Mengurangi Human Error
Kesalahan seperti salah menjalankan command atau salah memilih file dapat dikurangi karena proses deployment mengikuti konfigurasi yang sudah dibuat.
4. Feedback Lebih Cepat
Jika terdapat masalah pada kode, pipeline dapat langsung memberikan informasi bahwa proses gagal.
Developer bisa segera memperbaikinya.
5. Rilis Fitur Lebih Konsisten
Setiap perubahan melewati proses yang sama sehingga deployment menjadi lebih terstruktur.
Bagaimana Cara Kerja Continuous Deployment?
Secara sederhana, Continuous Deployment dapat bekerja melalui beberapa tahapan.
Developer
↓
Git Repository
↓
CI/CD Pipeline
↓
Build
↓
Automated Testing
↓
Security Check
↓
Deployment
↓
Production
↓
Monitoring
Setiap tahap memiliki fungsi masing-masing.
Tahap 1: Developer Melakukan Perubahan Kode
Proses dimulai ketika developer mengubah source code.
Misalnya developer menambahkan fitur baru pada aplikasi.
Setelah selesai, perubahan dikirim ke repository menggunakan Git.
Contohnya:
git add .
git commit -m "Tambah fitur login"
git push
Perintah git push akan mengirim perubahan ke remote repository.
Repository tersebut kemudian dapat digunakan sebagai pemicu untuk menjalankan pipeline.
Tahap 2: Pipeline Terpicu Otomatis
Setelah kode masuk ke repository, sistem CI/CD akan mendeteksi perubahan.
Pipeline kemudian mulai berjalan.
Trigger dapat dikonfigurasi berdasarkan kondisi tertentu, misalnya ketika:
- Developer melakukan push
- Pull request digabungkan
- Branch tertentu mengalami perubahan
- Tag release dibuat
Contohnya:
git push
↓
Pipeline Trigger
↓
CI/CD Started
Dengan cara ini, developer tidak perlu menjalankan pipeline secara manual.
Tahap 3: Install Dependency
Sebelum aplikasi dibuild, pipeline biasanya perlu memasang dependency yang dibutuhkan.
Contohnya pada project Node.js:
npm install
Atau jika menggunakan PHP Composer:
composer install
Dependency tersebut harus tersedia agar aplikasi dapat dibuild dan dites dengan benar.
Tahap 4: Build Aplikasi
Setelah dependency tersedia, pipeline menjalankan proses build.
Contohnya:
npm run build
Pada tahap ini, sistem akan memastikan aplikasi dapat dibuat tanpa error.
Jika build gagal, proses Continuous Deployment harus berhenti.
Build ❌
↓
Pipeline Stop
Aplikasi tidak boleh langsung dikirim ke production jika proses build saja sudah gagal.
Tahap 5: Automated Testing
Setelah build berhasil, pipeline menjalankan testing.
Testing dapat berupa:
- Unit testing
- Integration testing
- API testing
- End-to-end testing
Contoh sederhana:
Build
↓
Unit Test
↓
Integration Test
↓
E2E Test
Jika salah satu test gagal:
Testing ❌
↓
Deployment dibatalkan
Hal ini penting karena Continuous Deployment tidak berarti semua kode harus langsung dideploy.
Kode tetap harus melewati quality gate terlebih dahulu.
Tahap 6: Security Check
Setelah testing, pipeline dapat menjalankan pemeriksaan keamanan.
Contohnya:
- Dependency vulnerability scanning
- Secret scanning
- Static application security testing
- Container security scanning
Tujuannya adalah menemukan potensi masalah keamanan sebelum aplikasi digunakan di production.
Contohnya:
Testing
↓
Security Scan
↓
Pass
↓
Deployment
Jika ditemukan masalah kritis, pipeline dapat dibuat gagal secara otomatis.
Tahap 7: Deployment ke Production
Jika seluruh pemeriksaan berhasil, pipeline menjalankan proses deployment.
Misalnya aplikasi menggunakan server Linux, proses deployment dapat berupa:
Build
↓
Upload Artifact
↓
Connect Server
↓
Update Application
↓
Restart Service
Untuk aplikasi berbasis container, prosesnya dapat menggunakan Docker:
Source Code
↓
Build Docker Image
↓
Push Image
↓
Pull Image di Server
↓
Run Container
Dengan demikian, deployment dapat berjalan tanpa perlu dilakukan satu per satu secara manual.
Tahap 8: Monitoring
Continuous Deployment sebaiknya tidak berhenti setelah aplikasi berhasil dideploy.
Aplikasi yang sudah berjalan harus tetap dipantau.
Monitoring dapat digunakan untuk melihat:
- Error aplikasi
- CPU usage
- Memory usage
- Response time
- Status server
- Application logs
- Jumlah request
Contohnya:
Deployment
↓
Production
↓
Monitoring
↓
Error?
↙ ↘
Ya Tidak
↓ ↓
Rollback Selesai
Monitoring membantu tim mengetahui apakah deployment terbaru benar-benar berjalan dengan baik.
Contoh Continuous Deployment dengan GitHub Actions
Salah satu cara menerapkan Continuous Deployment adalah menggunakan GitHub Actions.
Misalnya project menggunakan Node.js.
Struktur sederhananya:
.github/
└── workflows/
└── deploy.yml
Contoh konfigurasi sederhana:
name: Deploy Application
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Dependency
run: npm ci
- name: Run Test
run: npm test
- name: Build Application
run: npm run build
- name: Deploy
run: echo "Deploy ke production"
Contoh tersebut menunjukkan konsep dasar pipeline.
Ketika ada perubahan pada branch main, pipeline akan:
- Mengambil source code
- Menyiapkan Node.js
- Menginstall dependency
- Menjalankan testing
- Melakukan build
- Menjalankan proses deployment
Bagian Deploy nantinya dapat diganti dengan konfigurasi deployment sesuai server atau platform yang digunakan.
Menggunakan Environment dalam Continuous Deployment
Continuous Deployment tidak selalu berarti developer harus langsung mengirim semua perubahan ke production.
Penggunaan beberapa environment tetap sangat disarankan.
Contohnya:
Development
↓
Staging
↓
Production
Development
Digunakan untuk pengembangan dan pengujian awal.
Staging
Digunakan untuk menguji aplikasi dalam kondisi yang mendekati production.
Production
Digunakan oleh pengguna sebenarnya.
Dengan environment yang terpisah, risiko perubahan kode bermasalah masuk ke production dapat dikurangi.
Menggunakan Secrets pada CI/CD
Deployment biasanya membutuhkan informasi sensitif seperti:
- Password database
- API key
- SSH key
- Token
- Credential server
Jangan menuliskannya langsung di file konfigurasi yang disimpan di repository.
Contoh yang tidak disarankan:
password: "password123"
Lebih baik gunakan secret yang disediakan oleh platform CI/CD.
Contohnya secara konsep:
password: ${{ secrets.DB_PASSWORD }}
Dengan cara tersebut, nilai sebenarnya tidak perlu ditulis secara langsung di source code.
Apa yang Terjadi Jika Deployment Gagal?
Deployment otomatis bukan berarti bebas dari kegagalan.
Misalnya versi baru aplikasi mengalami error:
Version 1.0
↓
Deploy Version 1.1
↓
Error
↓
Rollback
↓
Version 1.0
Karena itu, rollback strategy penting dalam Continuous Deployment.
Rollback memungkinkan aplikasi kembali ke versi sebelumnya jika deployment terbaru menyebabkan masalah.
Deployment Strategy yang Bisa Digunakan
Untuk project yang lebih besar, Continuous Deployment dapat menggunakan strategi deployment tertentu.
Blue-Green Deployment
Terdapat dua environment:
Blue → Versi lama
Green → Versi baru
Versi baru diuji terlebih dahulu. Jika aman, traffic dapat dialihkan ke environment baru.
Canary Deployment
Versi baru diberikan kepada sebagian kecil pengguna terlebih dahulu.
Contohnya:
5% pengguna
↓
20% pengguna
↓
50% pengguna
↓
100% pengguna
Jika tidak ada masalah, deployment dilanjutkan secara bertahap.
Rolling Deployment
Server atau instance diperbarui secara bertahap.
Misalnya terdapat empat instance:
Server 1 → Update
Server 2 → Update
Server 3 → Update
Server 4 → Update
Dengan cara ini, layanan dapat tetap berjalan selama proses deployment.
Best Practice Continuous Deployment
Agar Continuous Deployment berjalan dengan aman, beberapa praktik berikut dapat diterapkan.
1. Selalu Gunakan Automated Testing
Jangan membuat deployment otomatis tanpa testing.
2. Gunakan Branch Protection
Batasi perubahan langsung ke branch production.
3. Gunakan Secrets Management
Jangan menyimpan password, token, atau API key di repository.
4. Terapkan Quality Gate
Tentukan kondisi yang harus dipenuhi sebelum deployment.
5. Gunakan Staging
Untuk project penting, lakukan pengujian di staging sebelum production.
6. Siapkan Rollback
Pastikan versi sebelumnya dapat dikembalikan jika deployment gagal.
7. Gunakan Monitoring
Pantau aplikasi setelah deployment untuk mengetahui error lebih cepat.
8. Buat Pipeline Sesederhana Mungkin
Pipeline yang terlalu rumit justru dapat sulit dirawat. Tambahkan proses sesuai kebutuhan project.
Kelebihan dan Kekurangan Continuous Deployment
| Kelebihan | Kekurangan |
|---|---|
| Deployment lebih cepat | Membutuhkan konfigurasi yang baik |
| Mengurangi pekerjaan manual | Risiko deployment otomatis jika pipeline buruk |
| Proses lebih konsisten | Testing harus benar-benar dapat diandalkan |
| Feedback lebih cepat | Membutuhkan monitoring |
| Cocok untuk pengembangan berkelanjutan | Setup awal bisa cukup kompleks |
Continuous Deployment sangat membantu, tetapi otomatisasi harus dibangun di atas pipeline yang memiliki testing dan kontrol yang baik.
Kesimpulan
Continuous Deployment dengan CI/CD Pipeline memungkinkan perubahan kode dikirim ke production secara otomatis setelah melewati serangkaian pemeriksaan.
Alur sederhananya adalah:
Code → Build → Testing → Security Check → Deployment → Monitoring
Keuntungan utamanya adalah proses deployment menjadi lebih cepat, konsisten, dan mengurangi pekerjaan manual.
Namun, otomatisasi deployment harus tetap diimbangi dengan automated testing, security scanning, secrets management, monitoring, dan rollback strategy.
Dengan menerapkan komponen tersebut secara bertahap, developer dapat membangun pipeline yang bukan hanya cepat, tetapi juga lebih aman dan mudah dikelola.
Continuous Deployment juga menjadi salah satu kemampuan penting untuk dipelajari jika kamu ingin mendalami DevOps dan pengembangan software modern.


