Apa sih Containerization itu?
Containerization adalah pendekatan
dimana kita menjalankan multiple instances (containers) pada satu Operating
System (OS) yang sama, dimana containers tersebut akan memiliki shared kernel.
1). Konsep Containerization
Containerization
diprediksi akan populer di kalangan developer di masa yang akan datang.
Perusahaan IBM telah membuktikan bahwa container dapat menjalankan aplikasi
lebih cepat dan lebih efisien dibanding dengan virtual machine. Container juga
dapat berjalan dengan sangat baik di aplikasi/servis yang bergantung pada
server, sehingga sangat cocok bila diterapkan pada cloud computing.
Containerization
memungkinkan container untuk berjalan di environment yang berbeda dengan cara
mengabstraksi sistem operasi dan infrastruktur fisik. Sebuah aplikasi yang
dijadikan container berbagi kernel host operating system dengan container yang
lain. Bagian sistem operasi yang dibagi itu bersifat “Read-only”. Biasanya,
dalam satu container hanya terdapat satu buah service atau microservice.
2). Kelebihan dan Kekurangan Containerization
-Kelebihan:
1. Menjalankan container tidak
menggunakan banyak sumber daya.
2. Dibandingkan dengan mesin
virtual, ukuran rata-rata suatu container berada dalam kisaran puluhan atau
ratusan MB, sedangkan mesin virtual mengkonsumsi beberapa gigabytes.
3. Membuat container hanya
membutuhkan beberapa detik.
4. Menemukan kesalahan dan
menyelesaikannya mudah dengan container.
-Kekurangan:
1. Keamanan adalah masalah dengan virtualisasi berbasis container dibandingkan
dengan mesin virtual tradisional. Dalam container, Kernel dan komponen lain
dari sistem operasi host dibagikan. Jadi container kurang terisolasi satu sama
lain. Secara keseluruhan, itu tergantung pada jenis aplikasi dan modifikasi.
2. Kurang fleksibilitas dalam
sistem operasi. Jika Anda ingin menjalankan kontainer dengan sistem operasi
yang berbeda, maka harus memulai server baru.
3). Teknologi Yang Digunakan Untuk
Containerization
Salah satu teknologi container yang
dipakai banyak developer aplikasi web untuk memudahkan mengelola aplikasi
adalah Docker. Dengan teknologi ini, semua aplikasi seperti dibungkus dalam
sebuah filesystem lengkap yang dibutuhkan agar berjalan dengan baik: kode,
runtime, system tools, system libraries – semua yang kita bisa instal di sebuah
server.
4). Studi Kasus Implementasi Dari Containerization
Contoh secara
teknis, asumsikan kita memiliki satu mesin dengan tertanam Linux Ubuntu, yang
akan kita sebut sebagai induk. Dalam induk tersebut kita menjalankan dua proses
node.js, yang satu memiliki environment system “NODE_ENV=production” serta node.js
versi 4.x dan yang satu lagi “NODE_ENV=development” dengan node.js versi 5.x.
Untuk menangani perbedaan variabel system environment kita dapat menjalankan
aplikasi dengan command pipeline, namun untuk pemisah versi node.js kita perlu
melakukan instalasi node.js di folder yang berbeda, dengan konfigurasi yang
berbeda, dan segala macam pemisah-pemisah lain pada masing-masing komponen
sehingga meningkatkan kemungkinan terjadinya human error karena terlalu banyak
dan rumitnya konfigurasi yang perlu disiapkan. Namun dengan bantuan kontainer
kita dapat membuat hal tersebut menjadi sangat mudah, dengan bantuan teknologi
kontainer seperti Docker, satu induk dengan kernel tertentu dapat menjalankan
beberapa kontainer dengan masing-masing lingkungan yang terisolasi secara utuh,
seperti halnya virtualisasi.