Beberapa waktu terakhir saya cukup sering ketemu istilah containerization saat belajar deployment aplikasi. Awalnya saya kira ini cuma istilah keren yang dipakai developer senior. Tapi setelah dicoba sendiri, ternyata konsepnya cukup sederhana dan justru bikin proses menjalankan aplikasi jadi jauh lebih gampang.
Kalau kamu baru mulai belajar web development atau backend, kemungkinan besar nanti bakal ketemu yang namanya Docker, Kubernetes, atau container. Nah, semuanya berhubungan dengan containerization.
Di artikel ini saya coba jelaskan dengan bahasa yang santai dan gampang dipahami, tanpa terlalu banyak istilah teknis yang bikin pusing.
Apa Itu Containerization?
Containerization adalah cara untuk mengemas sebuah aplikasi beserta semua kebutuhan yang diperlukan agar aplikasi tersebut bisa berjalan di komputer mana saja tanpa perlu ribet mengatur ulang.
Kebutuhan itu misalnya seperti:
- Versi bahasa pemrograman (PHP, Node.js, Python, dan lainnya)
- Library atau package
- Framework
- Konfigurasi aplikasi
- Dependency lain yang dibutuhkan
Jadi aplikasi tidak lagi bergantung pada kondisi komputer tempat dia dijalankan.
Ibaratnya kita memasukkan semua isi rumah ke dalam satu kontainer. Mau dipindahkan ke kota lain atau negara lain, isi di dalamnya tetap sama. Tinggal dipasang, langsung bisa dipakai.
Kenapa Containerization Dibuat?
Kalau pernah membuat aplikasi, mungkin kamu pernah mengalami situasi seperti ini:
"Di laptop saya jalan kok."
Tapi begitu dipindahkan ke server atau laptop teman, tiba-tiba error.
Biasanya penyebabnya seperti:
- Versi PHP berbeda
- Versi Node.js tidak sama
- Package belum terinstall
- Konfigurasi server berbeda
- Environment belum lengkap
Nah, containerization hadir untuk menghilangkan masalah seperti ini. Selama menggunakan container yang sama, hasilnya juga akan sama di mana pun dijalankan.
Cara Kerja Containerization
Sebenarnya konsepnya cukup simpel.
- Developer membuat aplikasi.
- Semua kebutuhan aplikasi dimasukkan ke dalam container.
- Container tersebut dijalankan menggunakan software seperti Docker.
- Container bisa dipindahkan ke server lain tanpa perlu konfigurasi ulang.
Karena semua kebutuhan sudah ikut dikemas, aplikasi tidak lagi bergantung pada kondisi sistem operasi host.
Contoh Sederhana
Misalnya kamu membuat aplikasi Laravel.
Aplikasi tersebut membutuhkan:
- PHP 8.3
- Composer
- MySQL
- Redis
- Nginx
Kalau tanpa container, semua software itu harus diinstall satu per satu di setiap komputer.
Kalau menggunakan container, semuanya sudah berada dalam satu paket. Tinggal menjalankan container, aplikasi langsung siap digunakan.
Kelebihan Containerization
1. Lebih Konsisten
Aplikasi akan berjalan dengan lingkungan yang sama di laptop developer, server staging, maupun production.
2. Deployment Lebih Cepat
Tidak perlu lagi menginstall dependency satu per satu setiap kali deploy.
3. Mudah Dipindahkan
Container bisa dipindahkan ke VPS, cloud, maupun komputer lain tanpa banyak penyesuaian.
4. Lebih Ringan
Karena tidak membawa sistem operasi lengkap, ukuran container biasanya jauh lebih kecil dibanding Virtual Machine.
5. Mudah Scale
Kalau aplikasi sedang ramai pengunjung, kita tinggal membuat beberapa container baru untuk membagi beban kerja.
Apa Itu Virtual Machine (VM)?
Sebelum container populer, banyak server menggunakan Virtual Machine atau VM.
VM adalah komputer virtual yang memiliki:
- Sistem operasi sendiri
- Kernel sendiri
- RAM virtual
- Storage virtual
- CPU virtual
Jadi di dalam satu komputer fisik bisa terdapat beberapa komputer virtual yang berjalan secara bersamaan.
Misalnya satu server memiliki:
- Ubuntu
- Windows Server
- CentOS
Ketiganya berjalan sebagai sistem operasi yang benar-benar terpisah.
Perbedaan Containerization dan Virtual Machine
| Container | Virtual Machine (VM) |
|---|---|
| Tidak membawa sistem operasi lengkap | Memiliki sistem operasi sendiri |
| Lebih ringan | Lebih berat |
| Startup hanya beberapa detik | Boot bisa memakan waktu beberapa menit |
| Penggunaan RAM lebih hemat | Menggunakan RAM lebih besar |
| Cocok untuk microservice dan deployment modern | Cocok untuk menjalankan beberapa sistem operasi berbeda |
| Lebih mudah dipindahkan | Ukuran image biasanya jauh lebih besar |
Analogi yang Mudah Dipahami
Supaya lebih kebayang, saya biasanya mengibaratkannya seperti ini.
Virtual Machine itu seperti membeli satu rumah lengkap. Di dalamnya sudah ada pondasi, tembok, atap, listrik, dan semuanya berdiri sendiri.
Sedangkan Container lebih seperti menyewa satu apartemen dalam gedung yang sama. Struktur utamanya dipakai bersama, tetapi isi di dalam setiap unit tetap terpisah.
Makanya container jauh lebih ringan karena tidak perlu membangun semuanya dari nol.
Docker, Apakah Sama dengan Container?
Ini juga sempat bikin saya bingung waktu pertama belajar.
Jawabannya tidak sama.
Container adalah teknologinya, sedangkan Docker adalah salah satu software yang digunakan untuk membuat dan menjalankan container.
Kalau dianalogikan:
- Container = kendaraan.
- Docker = pabrik yang membuat dan mengoperasikan kendaraan tersebut.
Kapan Sebaiknya Menggunakan Container?
Container sangat cocok digunakan ketika:
- Mengembangkan aplikasi web.
- Deployment ke VPS atau cloud.
- Membangun aplikasi microservice.
- Bekerja dalam tim agar environment tetap sama.
- Membuat proses CI/CD lebih mudah.
Kalau hanya membuat aplikasi sederhana untuk belajar, sebenarnya belum wajib memakai container. Tapi semakin cepat mengenalnya, biasanya semakin mudah ketika nanti masuk ke proyek yang lebih besar.
Kesimpulan
Setelah beberapa waktu mencoba menggunakan container saat mengembangkan aplikasi, saya merasa proses setup jadi jauh lebih praktis. Tidak perlu lagi repot mencocokkan versi software setiap pindah perangkat atau saat deploy ke server.
Singkatnya, containerization adalah cara mengemas aplikasi beserta seluruh kebutuhannya agar bisa berjalan dengan hasil yang konsisten di mana pun dijalankan. Dibandingkan Virtual Machine, container jauh lebih ringan, lebih cepat dijalankan, dan lebih efisien dalam penggunaan resource.
Kalau saat ini kamu sedang belajar web development atau backend, menurut saya mulai mengenal Docker dan konsep containerization adalah investasi yang sangat berguna. Awalnya memang terlihat rumit, tetapi setelah memahami konsep dasarnya, proses development dan deployment terasa jauh lebih rapi dan nyaman.
Diskusi & Komentar