Skip to main content

CI/CD Deployment (Cloud-Native)

Overview

Dokumentasi ini menjelaskan CI/CD deployment sebagai Environment B dalam pengujian komparatif. CI/CD deployment merepresentasikan pendekatan modern dengan automation menggunakan Gitea Runner dan Kubernetes (K3s).


Apa itu CI/CD Deployment?

CI/CD deployment adalah proses deployment aplikasi yang sepenuhnya otomatis melalui pipeline:

  • Continuous Integration (CI): Build & test otomatis saat code change
  • Continuous Deployment (CD): Deploy otomatis ke production
  • Zero manual intervention: Dari git push sampai deployed
  • Automated verification: Health check & rollback otomatis

Automation penuh - developer hanya perlu git push, sisanya otomatis.


Karakteristik CI/CD Deployment

⚙️ Proses Deployment

Developer → Git Push → CI/CD Pipeline → Automated Deployment → Live
↓ ↓ ↓ ↓ ↓
Manual Auto Auto Auto Auto

Hanya 1 manual step: git push

📊 Metrik yang Diukur

Dalam pengujian, kita akan mengukur:

MetrikDeskripsi
Deployment TimeWaktu dari git push sampai aplikasi deployed
Manual StepsJumlah intervensi manusia (hanya 1: git push)
DowntimeWaktu aplikasi tidak dapat diakses (target: 0)
Error RateKemungkinan error (automated, konsisten)
ConsistencySeberapa konsisten hasil deployment (tinggi)

Real Case: 3 Microservices

Aplikasi yang akan di-deploy dengan CI/CD:

Service yang Di-Deploy

  1. users-service (Port 3001)

    • User management & authentication
  2. products-service (Port 3002)

    • Product catalog management
  3. orders-service (Port 3003)

    • Order processing & transactions

Deployment Flow CI/CD

Developer Git Push

Gitea Webhook Trigger

Gitea Runner Pipeline Start

[CI Stage]
- Checkout code
- Build Docker image
- Push to registry

[CD Stage]
- Update K3s deployment
- Rolling update (zero-downtime)
- Health check

Deployment Complete

Total manual steps: 1 command (git push)


Kelebihan & Kekurangan

✅ Kelebihan

  • Fully automated - Tidak perlu SSH, tidak perlu manual command
  • Fast - Deployment <1 menit
  • Zero downtime - Rolling update tanpa service interruption
  • Consistent - Setiap deployment sama persis
  • Easy rollback - Automatic rollback jika failure
  • Audit trail - Semua deployment tracked di Git history
  • Scalable - Mudah deploy ke multiple environments

❌ Kekurangan

  • Initial setup - Perlu setup Gitea Runner & K3s dulu
  • Learning curve - Perlu pahami CI/CD concepts
  • Complexity - Lebih banyak moving parts
  • Dependency - Bergantung pada CI/CD infrastructure

Scope Dokumentasi

Dokumentasi cloud-native deployment fokus pada:

🎯 Yang Dibahas

  • CI/CD pipeline configuration (Gitea Actions workflow)
  • Automated deployment steps untuk 3 services
  • Time measurement untuk setiap stage
  • Rollback mechanism

🚫 Yang TIDAK Dibahas

  • ❌ Setup K3s dari awal (diasumsikan sudah ready)
  • ❌ Setup Gitea & Gitea Runner (diasumsikan sudah running)
  • ❌ Advanced Kubernetes features (service mesh, dll)
  • ❌ Advanced monitoring/observability stack

Fokus: Bagaimana deploy 3 service dengan CI/CD dan berapa lama waktu yang dibutuhkan.


Asumsi Environment

Sebelum mulai deployment, diasumsikan infrastructure sudah siap:

  • ✅ K3s cluster running
  • ✅ Gitea server accessible
  • ✅ Gitea Runner configured & connected
  • ✅ Docker registry available (Gitea container registry)
  • ✅ Kubectl access ke K3s cluster
  • ✅ Application repository dengan workflow file

Perbandingan dengan Manual Deployment

AspekManual DeploymentCI/CD (Cloud-Native)
TriggerSSH + manual commandsGit push
ProcessManual 17-21 commandsAutomated pipeline
Time3-5 menit<1 menit
Downtime30-60 detik0 detik (rolling update)
Manual Steps17-21 commands1 command (git push)
ConsistencyLow (human dependent)High (automated)
RollbackManual & complexAutomated
Error ProneHigh (human error)Low (automated)

Komponen CI/CD

Gitea Actions

  • Workflow file: .gitea/workflows/deploy.yml
  • Trigger: Push ke branch main
  • Stages: Build → Push → Deploy

Docker

  • Build: Setiap service menjadi Docker image
  • Registry: Gitea container registry
  • Versioning: Git commit SHA sebagai tag

K3s (Kubernetes)

  • Deployment: Kubernetes deployment resource
  • Rolling Update: Zero-downtime deployment strategy
  • Service: Load balancing internal
  • Health Check: Liveness & readiness probes

Struktur Dokumentasi

Dokumentasi CI/CD deployment terdiri dari:

  1. Pendahuluan (halaman ini)

    • Overview CI/CD deployment
    • Karakteristik & scope
  2. Environment Setup

    • Spesifikasi infrastructure
    • K3s configuration overview
  3. CI/CD Flow

    • Pipeline architecture
    • Stages & steps detail
  4. Deployment Guide

    • How to deploy dengan git push
    • Time measurement
    • Troubleshooting

Tujuan Pengujian

Dengan mendokumentasikan CI/CD deployment, kita akan:

  1. Mengukur automation benefit - Seberapa cepat deployment otomatis?
  2. Count manual intervention - Berapa sedikit campur tangan manusia?
  3. Measure downtime - Apakah benar zero-downtime?
  4. Evaluate consistency - Seberapa konsisten hasil deployment?
  5. Compare dengan manual - Seberapa besar improvement?

Expected Results

Hipotesis pengujian:

  • ⏱️ Deployment time: <1 menit (60-90 detik)
  • 🔢 Manual steps: 1 command (git push)
  • Downtime: 0 detik (rolling update)
  • Error rate: <1% (automated, konsisten)
  • 📊 Consistency: High (identical setiap kali)

Hasil aktual akan dibandingkan dengan manual deployment di Test Results.


Langkah Selanjutnya

Untuk memahami CI/CD deployment:

👉 Environment Setup - Overview infrastructure
👉 CI/CD Flow - Detail pipeline architecture
👉 Deployment Guide - Practical guide deploy dengan git push