Containers
What it is
Bayangkan sebuah kontainer kapal: apa pun yang dikemas di dalamnya berjalan sebagai satu unit tersegel dan tiba dalam kondisi yang sama di pelabuhan mana pun. perangkat lunak bekerja dengan cara yang sama — ia mengemas aplikasimu bersama semua yang dibutuhkan untuk berjalan (kode, library, alat sistem) ke dalam satu bundel portabel. Bundel itu berjalan dengan cara yang sama di laptopmu, server uji coba, atau di cloud, sehingga menghilangkan masalah klasik "berhasil di komputer saya". Docker adalah alat paling umum untuk membuatnya.
Strengths
- Lingkungan yang konsisten di mana saja — build sekali, jalankan di mana saja.
- Kendali penuh atas runtime, paket sistem operasi, dan dependensi.
- Tidak ada cold start setelah berjalan; cocok untuk trafik yang stabil.
- Portabel lintas penyedia cloud, sehingga menghindari ketergantungan penuh pada satu vendor (lock-in).
- Mendukung bahasa atau apa pun, termasuk proses yang berjalan lama (long-running processes).
Trade-offs
- Kamu harus mengurus lebih banyak hal: base image, pembaruan, dan penyesuaian ukuran sumber daya.
- Penskalaan tidak otomatis kecuali kamu menambahkan orchestrator (seperti Kubernetes), yang menambah kompleksitas nyata.
- Container yang sedang berjalan tetap memakan biaya meskipun sedang idle.
- Image yang lebih besar berarti build dan yang lebih lambat.
- Patching keamanan pada image menjadi tanggung jawabmu sendiri.
When to use it
Pilih container ketika kamu butuh lingkungan yang konsisten dan sepenuhnya terkendali: aplikasi dengan dependensi sistem tertentu, layanan yang berjalan lama, background worker, atau apa pun yang melampaui batas dan functions.
Vibe coding fit
Container adalah target yang kuat untuk diarahkan AI karena sebuah Dockerfile hanyalah resep, dan agen AI pandai menulis resep. Kamu bisa meminta AI membuat Dockerfile, .dockerignore, dan perintah deploy, lalu melakukan iterasi dengan membacakan error build kembali kepadanya. Tips: minta base image yang kecil (seperti alpine atau varian slim) dan multi-stage build — ini membuat image tetap ramping, build cepat, dan permukaan serangan (attack surface) kecil. Platform seperti Fly.io, Google Cloud Run, dan Railway bisa men-deploy container hanya dengan satu perintah.
# Dockerfile — multi-stage Node app
FROM node:20-slim AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:20-slim
WORKDIR /app
COPY --from=build /app .
EXPOSE 3000
CMD ["node", "server.js"]
# Build and run locally
docker build -t my-app .
docker run -p 3000:3000 my-app