Episode ini membahas DevOps untuk NestJS: pipeline CI/CD dengan GitHub Actions dan GitLab CI, automated testing dan linting, deployment otomatis, strategi canary release dan blue-green deployment dengan rollback, serta Infrastructure as Code.

Deployment manual adalah sumber error dan keterlambatan. CI/CD mengotomatisasi seluruh perjalanan kode — dari commit sampai production — dengan test dan pemeriksaan di setiap langkah. Episode 21 membahas praktik DevOps untuk aplikasi NestJS.
Kalian akan membangun pipeline yang menguji, membangun, dan men-deploy aplikasi secara otomatis.
GitHub Actions berjalan pada event seperti push dan pull request:
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ci
- run: npm run lint
- run: npm run test -- --coverage
- run: npm run buildSetiap push ke main memicu: install dependency, lint, test, dan build. Jika salah satu gagal, pipeline berhenti.
GitLab CI menggunakan file .gitlab-ci.yml dengan konsep stages:
stages:
- test
- build
- deploy
test:
stage: test
image: node:22
script:
- npm ci
- npm run lint
- npm run test
- npm run build
build:
stage: build
image: docker:latest
script:
- docker build -t $CI_REGISTRY_IMAGE .
- docker push $CI_REGISTRY_IMAGEPendekatan konsepnya sama: stages yang berurutan, masing-masing dengan image dan script.
Pipeline CI wajib menjalankan pemeriksaan kualitas sebelum deploy: lint, unit test, integration test, dan build. Jangan pernah men-deploy kode yang gagal test. Coverage bisa diatur ambang minimum sehingga penurunan kualitas otomatis memblokir pipeline.
Meng-cache node_modules mempercepat pipeline:
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- run: npm ciDengan cache: npm, dependency di-cache antar run — pipelinenya jadi jauh lebih cepat.
Setelah test hijau, pipeline membangun image dan men-deploy:
build:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- run: docker build -t registry.example.com/nestjs-api:${{ github.sha }} .
- run: docker push registry.example.com/nestjs-api:${{ github.sha }}Image ditag dengan SHA commit — setiap deploy bisa dilacak ke kode yang spesifik.
Blue-green menjaga dua environment: versi lama (blue) dan versi baru (green). Traffic dialihkan dari blue ke green saat green sudah sehat. Jika masalah ditemukan, traffic bisa langsung dibalik ke blue — rollback instan tanpa downtime.
Canary release mengirim versi baru ke sebagian kecil pengguna dulu, lalu bertahap ke semua pengguna jika metrik sehat:
spec:
strategy:
canary:
steps:
- setWeight: 10
- pause: { duration: 10m }
- setWeight: 50
- pause: { duration: 10m }Argo Rollouts dan Flagger memungkinkan strategi ini di Kubernetes. Rollback otomatis terjadi jika metrik error naik saat canary berjalan.
Setiap deploy harus bisa di-rollback dengan cepat. Praktik terbaik: simpan image lama, versi terapkan di Git, dan health check sebagai penanda sehat. Dengan blue-green, rollback hanya memindahkan traffic — tanpa build ulang.
Infrastructure as Code (IaC) mendefinisikan infrastruktur sebagai kode yang bisa di-review dan di-version:
resource "aws_ecs_service" "api" {
name = "nestjs-api"
cluster = aws_ecs_cluster.main.id
task_definition = aws_ecs_task_definition.api.arn
desired_count = 3
load_balancer {
target_group_arn = aws_lb_target_group.api.arn
container_name = "api"
container_port = 3000
}
}Dengan Terraform, seluruh infrastruktur — cluster, load balancer, database — didefinisikan dalam code dan diterapkan secara reproducible.
Episode 21 mengotomatisasi perjalanan kode NestJS: CI/CD dengan GitHub Actions dan GitLab CI, automated testing, deployment otomatis, strategi blue-green dan canary, serta Infrastructure as Code.
Inti yang harus dibawa pulang:
Di episode 22 selanjutnya kita akan membahas observability dan production support — distributed tracing dan integrasi OpenTelemetry, centralized logging dan correlation IDs, monitoring metrics dan alerts, serta incident response dan troubleshooting di production.