Belajar Java - CI/CD & Deployment Produksi
Series/Belajar Java/Episode 21
Episode 21 of 24

Belajar Java - CI/CD & Deployment Produksi

Episode ini membahas CI/CD dan deployment produksi: Continuous Integration dan Continuous Delivery dengan GitHub Actions, build dan release management dengan semantic versioning, deployment ke server dan Kubernetes, serta strategi rollback dan blue-green deployment.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Kode yang hanya ada di laptop tidak bernilai — ia bernilai saat berjalan di produksi. Episode 21 membahas CI/CD dan deployment produksi: Continuous Integration dan Continuous Delivery dengan GitHub Actions, release management, deployment ke server dan Kubernetes, serta strategi rollback yang aman.

Otomasi build, test, dan deployment membuat rilis cepat, konsisten, dan dapat diulang. Kalian akan membangun pipeline yang mengantar kode dari commit menuju produksi dengan percaya diri.

Continuous Integration dan Continuous Delivery

Continuous Integration (CI)

CI adalah praktik mengintegrasikan perubahan kode secara terus-menerus ke branch utama, dengan build dan test otomatis di setiap push. Tujuannya: mendeteksi konflik dan regresi lebih awal.

Continuous Delivery (CD)

CD memperpanjang CI dengan memastikan artefak selalu siap dirilis — deployment ke produksi tinggal satu langkah. Continuous Deployment mengotomasi langkah itu sepenuhnya. Perbedaan kunci: CD menjaga "deployable state", CI hanya menjaga "testable state".

GitHub Actions untuk Java

Struktur Workflow

GitHub Actions adalah platform CI/CD terintegrasi. Workflow didefinisikan dalam YAML:

Workflow CI Java
name: Java CI
 
on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
 
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          distribution: temurin
          java-version: '21'
      - name: Build dengan Maven
        run: mvn clean verify

actions/setup-java@v4 memasang JDK 21 Temurin, dan mvn clean verify menjalankan seluruh build serta test.

Build dan Release Management dengan Semantic Versioning

Semantic Versioning

Semantic versioning memakai format MAJOR.MINOR.PATCH: MAJOR untuk perubahan yang tidak kompatibel, MINOR untuk fitur baru yang kompatibel, PATCH untuk perbaikan bug. Versi ini menjadi komunikasi eksplisit tentang dampak perubahan.

Membuat Release

Otomasi pembuatan tag versi dan release notes dengan tool seperti semantic-release atau JReleaser di dalam pipeline:

Release dengan semantic-release
- name: Release
  run: npx semantic-release
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Deployment ke Server dan Kubernetes

Deployment ke Server

Deploy jar ke server dengan systemd atau container runtime. Salin artefak dan mulai ulang layanan:

Menyalin jar dan restart service
scp target/aplikasi.jar user@server:/opt/aplikasi/
ssh user@server "sudo systemctl restart aplikasi"

Deployment ke Kubernetes

Kubernetes mengorkestrasi container. Definisi deployment dalam YAML:

Deployment Kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
  name: aplikasi-demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: aplikasi-demo
  template:
    metadata:
      labels:
        app: aplikasi-demo
    spec:
      containers:
        - name: aplikasi
          image: ghcr.io/aplikasi/aplikasi-demo:1.0.0
          ports:
            - containerPort: 8080

Terapkan deployment:

Terapkan ke Kubernetes
kubectl apply -f deployment.yaml
kubectl get pods

kubectl apply -f deployment.yaml membuat atau memperbarui resource, dan kubectl get pods memeriksa statusnya.

Strategi Rollback dan Blue-Green Deployment

Rollback

Rollback mengembalikan aplikasi ke versi sebelumnya saat deployment bermasalah. Di Kubernetes, rollout bisa di-undo:

Rollback deployment Kubernetes
kubectl rollout undo deployment/aplikasi-demo

kubectl rollout undo mengembalikan deployment ke revisi sebelumnya dengan cepat.

Blue-Green Deployment

Blue-green menjalankan dua environment: blue (saat ini) dan green (versi baru). Saat green siap dan teruji, trafik dialihkan dari blue ke green. Rollback tinggal memindah trafik kembali — tanpa downtime.

Canary Deployment

Canary mengalihkan sebagian kecil trafik ke versi baru, memantau metrik, lalu memperluasnya bertahap. Ini meminimalkan risiko perubahan besar dan memberi waktu untuk mendeteksi masalah dini.

Penutup

Episode 21 membahas CI/CD dan deployment produksi: CI dan CD dengan GitHub Actions, build dan release management dengan semantic versioning, deployment ke server dan Kubernetes, serta strategi rollback, blue-green, dan canary deployment.

Inti yang harus dibawa pulang:

  • CI menjaga kode selalu terintegrasi dan teruji.
  • CD memastikan artefak selalu siap dirilis.
  • Semantic versioning mengkomunikasikan dampak perubahan.
  • Kubernetes mengorkestrasi container di produksi.
  • Rollback mengembalikan versi saat deployment gagal.
  • Blue-green dan canary meminimalkan risiko rilis.

Di episode 22 selanjutnya kita akan membahas monitoring, observability, dan production support — metrik JVM dan pengumpulan metrik dengan Micrometer, log management dan structured logging, distributed tracing dengan OpenTelemetry dan Grafana, health check dan readiness probe, serta incident response dan SLO. Saatnya menjaga layanan tetap sehat!

Belajar Java - CI/CD & Deployment Produksi | Belajar Java