Episode ini membangun infrastruktur sebagai kode: Terraform untuk provisioning cloud, Helm charts dan Kustomize untuk Kubernetes, workflow GitOps dengan ArgoCD, serta pengelolaan secret dan feature flag.

Membangun infrastruktur lewat console cloud adalah kebiasaan yang mahal: tidak ada catatan siapa membuat apa, perubahan tidak bisa direview, dan server "sementara" bertahun-tahun hidup. Infrastructure as Code menjadikan infrastruktur sebagai file yang direview, diverifikasi, dan di-rollback seperti kode biasa.
Episode 31 membahas infrastructure as code untuk aplikasi WebSocket: Terraform untuk provisioning cloud, Helm dan Kustomize untuk packaging Kubernetes, GitOps dengan ArgoCD, serta pengelolaan secret dan feature flag.
Terraform mendeklarasikan infrastruktur dalam file HCL.
resource "aws_vpc" "utama" {
cidr_block = "10.0.0.0/16"
}
resource "aws_lb" "ws" {
name = "ws-alb"
internal = false
load_balancer_type = "application"
subnets = [aws_subnet.public_a.id, aws_subnet.public_b.id]
}
resource "aws_lb_target_group" "ws_tg" {
name = "ws-tg"
port = 8080
protocol = "HTTP"
vpc_id = aws_vpc.utama.id
target_type = "ip"
health_check {
path = "/healthz"
}
stickiness {
type = "lb_cookie"
}
}aws_lb_target_group dengan stickiness dan health check /healthz membangun fondasi WebSocket yang dibahas di episode 29 — sekarang sebagai kode yang bisa direview.
terraform plan
terraform applyterraform plan menampilkan perubahan sebelum diterapkan, terraform apply mengeksekusinya. Plan memungkinkan review: tim melihat persis apa yang akan berubah di infrastruktur.
Helm membungkus manifest Kubernetes menjadi paket yang bisa di-parameterisasi.
replicas: 3
image:
repository: registry.example.com/ws-server
tag: "1.4.0"
resources:
limits:
cpu: "500m"
memory: 256Mi
ingress:
enabled: true
host: ws.example.comvalues.yaml memisahkan konfigurasi dari template. Satu chart bisa dipakai di staging dan production dengan nilai berbeda: helm upgrade --install ws ./chart -f values-production.yaml.
Kustomize (terintegrasi di kubectl) menimpal manifest tanpa templating. Cocok untuk tim yang lebih suka YAML murni: kubectl kustomize overlays/production menggabungkan base dengan overlay per environment.
GitOps menjadikan repository Git sebagai satu-satunya sumber keadaan cluster. ArgoCD terus-menerus membandingkan cluster dengan yang ada di Git dan menyinkronkan perbedaan.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: ws-server
spec:
destination:
namespace: ws
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/example/ws-infra
path: charts/ws-server
targetRevision: main
syncPolicy:
automated:
prune: trueautomated.sync: prune: true otomatis menerapkan perubahan di Git ke cluster. Rollback dilakukan dengan revert commit — Git yang mencatat segalanya.
Jangan pernah menaruh secret di Git. Gunakan penyimpanan terenkripsi.
kubectl create secret generic ws-secret --from-literal=JWT_SECRET=...Untuk tim lebih besar, External Secrets Operator menarik secret dari Vault, AWS Secrets Manager, atau cloud secret store langsung ke cluster — dengan rotasi otomatis.
Feature flag memisahkan deploy dari rilis: fitur dikirim ke production tapi tetap mati sampai diaktifkan.
const flags = { roomV2: false };
socket.on("room:join", (data) => {
if (flags.roomV2) {
handleRoomV2(data);
} else {
handleRoomV1(data);
}
});flags.roomV2 memungkinkan beralih perilaku tanpa redeploy. Saat fitur baru terbukti stabil, flag dicabut dan kode lama dibuang.
Episode 31 menyatukan infrastruktur dan kode: Terraform membangun cloud, Helm dan Kustomize memaketkan Kubernetes, GitOps menegakkan konsistensi, dan secret serta feature flag menjaga keamanan dan kecepatan rilis.
Inti yang harus dibawa pulang:
Di episode 32 berikutnya kita menatap masa depan: modern alternatives — HTTP/3, WebTransport, gRPC streaming, GraphQL subscription, dan edge computing.