Daffathan-Labs — Arsitektur DevOps Production-Grade

15 Februari 2026
Github ActionCI/CDDockerDevOps

Bagikan artikel ini:

🚀 Daffathan-Labs

Arsitektur DevOps Production-Grade

Gemini_Generated_Image_muw7lsmuw7lsmuw7

Daffathan-Labs adalah platform microservices yang dirancang dengan standar production-ready, menjadikan keamanan, otomatisasi, dan zero-downtime deployment sebagai prioritas utama.

Repository ini mendokumentasikan filosofi arsitektur dan infrastruktur yang membangun sistem ini.


🏗 Gambaran Arsitektur

Internet
   │
   ▼
┌─────────────┐
│   Caddy     │  (Host Reverse Proxy)
└─────────────┘
   │
   ▼
┌─────────────────────┐
│ Internal Nginx GW   │  (Docker Network)
└─────────────────────┘
   │        │        │
   ▼        ▼        ▼
┌────┐   ┌────┐   ┌────┐
│ UI │   │ API│   │ AI │
└────┘   └────┘   └────┘

Prinsip Utama

  • Hanya Caddy yang terekspos ke publik.

  • Semua service binding ke 127.0.0.1.

  • Internal Nginx menangani load balancing.

  • Microservices berjalan di private Docker network.

  • CI/CD berjalan sepenuhnya otomatis.


🔐 Model Keamanan

Firewall Level OS (UFW)

Kebijakan default:

sudo ufw default deny incoming
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

Disiplin Port Docker

Semua service hanya bind ke localhost:

ports:

  - "127.0.0.1:3000:3000"

Hal ini mencegah Docker melakukan bypass terhadap aturan UFW.


🔁 CI/CD Pipeline

Setiap repository microservice memiliki workflow GitHub Actions.

Fitur

  • Deteksi versi otomatis dari package.json

  • Strategi tagging berbasis branch:

    • main-latest

    • univ-pancasila-latest

  • Multi-architecture build dengan Docker Buildx

  • Push otomatis ke Docker Hub

  • Auto-deploy via SSH

Contoh Workflow

name: Build and Deploy

on:
  push:
    branches:

      - main

      - univ-pancasila

jobs:
  build:
    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v4


      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3


      - name: Login DockerHub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}


      - name: Build and Push
        run: |
          VERSION=$(node -p "require('./package.json').version")
          docker buildx build \
            --platform linux/amd64,linux/arm64 \
            -t daffathan/api:${VERSION} \
            -t daffathan/api:main-latest \
            --push .

⚡ Zero Downtime Deployment (ZDT)

Alih-alih me-restart container, kita menggunakan strategi rolling update.

Script Deployment

# Scale up (buat replica kedua)
docker compose up -d --scale api=2 --no-recreate

# Tunggu service siap (warmup NestJS / AI)
sleep 20

# Scale down (hapus replica lama)
docker compose up -d --scale api=1

# Reload internal gateway
docker exec nginx-gateway nginx -s reload

Hasil

  • Tidak ada 502 error

  • Tidak ada koneksi terputus

  • Update berjalan tanpa disadari user


🧩 Internal Gateway (Nginx)

Internal Nginx bertugas melakukan load balancing antar replica.

Contoh Konfigurasi Upstream

upstream api_service {
    server api:3000;
    server api:3000;
}

server {
    listen 80;

    location / {
        proxy_pass http://api_service;
    }
}

🐳 Struktur Docker Compose

version: "3.9"

services:

  gateway:
    image: nginx:alpine
    container_name: nginx-gateway
    ports:

      - "127.0.0.1:8080:80"
    networks:

      - internal

  ui:
    image: daffathan/ui:main-latest
    networks:

      - internal

  api:
    image: daffathan/api:main-latest
    networks:

      - internal

  ai:
    image: daffathan/ai:main-latest
    networks:

      - internal

networks:
  internal:
    driver: bridge

🧠 Filosofi Engineering

Sistem production-grade membutuhkan:

  • Otomatisasi, bukan SSH manual

  • Keamanan sebagai default

  • Isolasi arsitektur yang jelas

  • Kesiapan observability

  • Deployment yang tidak mengganggu user

Project ini dibangun dengan prinsip tersebut.


✅ Jaminan Saat Ini

  • 🔐 VPS telah di-hardening dengan firewall OS

  • 🐳 Container berjalan di private network

  • 🔁 CI/CD berjalan otomatis

  • ⚡ Deployment tanpa downtime

  • 🧩 Arsitektur terpisah dengan jelas

  • 🚀 Siap untuk scaling


📌 Roadmap

  • Observability (Prometheus + Grafana)

  • Monitoring health container

  • Strategi Canary Deployment

  • Blue/Green Deployment Pipeline

  • Migrasi ke auto-scaling cluster


🏁 Penutup

Daffathan-Labs bukan lagi sekadar project yang "bisa jalan".

Ini adalah sistem dengan fondasi infrastruktur yang kuat,
dirancang untuk tumbuh, bertahan, dan berkembang.

Deployment terasa membosankan.
Keamanan menjadi default.
Uptime dihormati.

Fondasinya sudah siap.

Punya pertanyaan tentang topik ini?

Mari terhubung dan jelajahi bagaimana ide-ide ini dapat menggerakkan proyek Anda selanjutnya.

Mari Bicara
Daffathan-Labs — Arsitektur DevOps Production-Grade | Daffathan Labs | Daffathan Labs