Cloud Computing - Containerzation
Containerzation
Apa Itu Containerzation
Containerzation adalah
sebuah virtualisasi tingkat OS yang dapat membungkus sebuah aplikasi beserta
dependency dan environment-nya. Setiap container ini memiliki process yang tersendiri
sehingga tidak mengganggu host OS ataupun container yang lain. Dengan
containerization, kita dapat menjalankan aplikasi lebih banyak dan kinerja yang
lebih efisien dibanding VM dengan menggunakan hardware yang sama.
Konsep containerization
Prinsip containerization ini sangat mirip dengan kontainer yang ada di kapal kargo di mana kapal kargo tersebut diibaratkan sebagai sistem komputer. Bagi mereka yang datang dari lingkungan virtual, container sering dibandingkan dengan mesin virtual (VM). Anda mungkin sudah terbiasa dengan VM: sistem operasi tamu seperti Linux atau Windows berjalan di atas sistem operasi host dengan akses virtual ke perangkat keras yang mendasarinya. Seperti mesin virtual, container memungkinkan Anda mengemas aplikasi Anda dengan library dan dependensi lainnya, menyediakan lingkungan yang terisolasi untuk menjalankan layanan software Anda. Namun, seperti yang akan Anda lihat di bawah, kemiripannya berakhir di sini karena container menawarkan unit yang jauh lebih ringan untuk digunakan oleh developer dan tim IT Ops, membawa banyak sekali manfaat.
Gambaran
Perbedaan Virtual Machine dengan Container
Kelebihan
1. Menjalankan container tidak menggunakan banyak
sumber daya. Jadi seseorang dapat menambahkan lebih banyak beban kerja
komputasi pada server yang sama.
2. Dibandingkan dengan mesin virtual, ukuran
rata-rata suatu container berada dalam kisaran puluhan atau ratusan MB,
sedangkan mesin virtual mengkonsumsi beberapa gigabytes. Server dapat menampung
lebih banyak kontainer.
3. Kontainer cepat! Membuat container hanya
membutuhkan beberapa detik. Waktu respons cepat ketika menyangkut aktivitas
pengguna. Kontainer membantu mengurangi waktu yang dibutuhkan untuk
pengembangan, pengujian, dan penyebaran.
4. Menemukan kesalahan dan menyelesaikannya mudah
dengan container. Mengapa? Karena tidak ada perbedaan antara menjalankan
aplikasi secara lokal atau pada server uji.
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. Mereka
memiliki akses root! Jadi container kurang terisolasi satu sama lain. Secara
keseluruhan, itu tergantung pada jenis aplikasi dan modifikasi.
2.
Ada kurang fleksibilitas dalam sistem operasi.
Jika Anda ingin menjalankan kontainer dengan sistem operasi yang berbeda, Anda
harus memulai server baru.
Teknologi yang digunakan
Docker adalah
sebuah platform containerization yang sangat populer dan semakin populer.
Docker memberikan kemudahan untuk menggunakan ataupun membangun 'isolated'
environment untuk aplikasi. Penggunaan containerization dapat membantu kita
dalam memahami konsep microservices, dimana satu container hanya untuk satu
fungsi saja. Docker sedang tren dan
sukses besar. Ini adalah salah satu teknologi container yang paling banyak
digunakan. Bahkan, ketika orang merujuk ke kontainer, mereka kebanyakan
memahami yang dimaksud itu Docker. Selain Docker, ada beberapa teknologi
container open source seperti rkt oleh CoreOS. Juga, perusahaan besar telah
membangun mesin container mereka sendiri. Misalnya, lmctfy oleh Google.
Jadi Docker
sekarang menjadi standar industri dalam hal kontainerisasi. Bagaimana ini
dibangun? Pada cgroups dan namespacing yang disediakan oleh kernel Linux dan
Windows.
Untuk lebih memahami Docker, sebaiknya Anda mengetahui cara
kerja Docker. Ada beberapa komponen yang perlu Anda ketahui:
1.
Docker image, merupakan file berisi informasi
dan petunjuk untuk membangun container. Image juga berfungsi untuk menggunakan
dan mengirimkan informasi;
2.
Container, adalah lingkungan untuk mengemas dan
menjalankan aplikasi. Ini mencakup kode, runtime, system tools, dan pengaturan.
Container hanya bisa mengakses resource yang telah ditentukan dalam docker
image;
3.
Docker client, yaitu tempat di mana pengguna
dapat mengirimkan perintah seperti docker build, docker pull, dan docker run
kepada Docker daeomon;
4.
Docker Engine Rest API, digunakan untuk
berinteraksi dengan Docker daemon. Ini bisa diakses klien melalui HTTP;
5.
Docker host, menyediakan lingkungan yang lengkap
untuk menjalankan aplikasi. Dia bertanggung jawab terhadap penerimaan perintah
yang diberikan Docker client;
6.
Docker daemon, yaitu proses pengelolaan Docker
images, kontainer, network, dan storage volumes. Docker daemon menerima request
dari Docker API dan akan memprosesnya;
7.
Docker registry, wadah untuk menyimpan Docker
image. Docker image akan memberi reaksi sesuai perintah yang diberikan.
Misalnya saat diberi perintah docker push, docker image akan didorong atau
dibagikan ke registri Docker Hub;
8.
Docker Hub adalah layanan yang disediakan untuk
menemukan dan berbagi gambar container dengan tim.