Tentang Teknologi Container

Tentang Teknologi Container

Jadi arti kata “container” itu sendiri ada banyak macamnya, tetapi yang di bahas pada postingan ini container pada sistem komputer bukan container pada truk ya, hehe

Walaupun teknologi container ini juga biasanya di gambarkan atau di ilustrasikan sebagai container (truk) beneran sih hehe.

Nah menurut “kebanyakan” orang teknologi container itu adalah termasuk dari teknologi virtualisasi. Tetapi nyatanya jika kita teliti lebih lanjut, teknologi container tidaklah termasuk dalam teknologi virtualisasi.

Walaupun yaa, kalau secara topologi bisa dibilang yaa 11-12 lah hehehe..

Mau tau kenapa teknologi container berbeda dari virtualisasi? baca aja sampe bawah yak hehe.


Tentang Teknologi Container

Container? kenapa dinamakan container ya? jadi sebenernya dinamakan container karena terinspirasi dengan container “beneran”, kenapa demikian?? jadi ginii..

Misalkan, di Indonesia ada 3 perusahaan yang ingin barang yg mereka produksi di eksport ke negara Arab Saudi. Sebut saja perusahaan 1, 2, dan 3.

Kemudian, mereka membutuhkan sebuah “tempat” yang mana dapat memuat barang produksi mereka dengan mudah, tanpa perlu membongkar-pasang, dan dapat terlacak untuk mengirimkan barang produksi mereka dari gudang perusahaan asal ke gudang perusahaan tujuan.

Tentang Teknologi Container
sebagai ilustrasi cara kerja container “beneran”

Nah tempat yang dimaksud ialah “container”, dengan memakai container sebagai tempat untuk memindahkan barang dari suatu daerah, negara, atau bahkan benua, melalui jalur darat (truk), laut (kapal container), ataupun udara (pesawat barang), tidaklah sulit. Karena container sendiri mempunyai ukuran2 standard, sehingga di setiap daerah/negara pasti mempunyai transportasi yang sama untuk membawa container tersebut.

Lalu bagaimana dengan container pada sistem komputer?? kalau cara kerjanya sih sama saja sebenarnya, walaupun ada perbedaan seperti container pada sistem komputer itu berbentuk software alias tidak bisa kita rasakan, kalo container beneran kan bisa kita rasakan hehe #garing

oke sebelumnya kita coba liat sejarah dari container sendiri dulu..

Tentang Teknologi Container

Jadi container sebenernya adalah perkembangan dari teknologi isolasi, yaitu seperti chroot pada sistem operasi unix, *seperti jail pada sistem operasi *BSD, ataupun sandbox pada sisi program/aplikasi.* Jadi container itu bukanlah sebuah teknologi virtualisasi ataupun virtualisasi yang sangat ringan (light*).

Lalu, teknologi isolasi itu seperti apa sih??

Teknologi isolasi itu adalah sebuah teknologi yang akan mengisolasi atau memisahkan sebuah proses namespace (PID, UID, hostnames, dsb), dari proses lain..

Walaupun virtual machines juga adalah sebuah proses isolasi, tetapi virtual machine akan mengisolasi seluruh komponennya seperti, perangkat keras, kernel, sistem operasi, dan lain – lain. Sedangkan pada container hanya akan mengisolasi *libraries *beserta aplikasinya.

Jadi pada container itu tidak memerlukan dukungan perangkat keras seperti Intel-VT dan AMD-V. Dan juga tidak memerlukan BIOS lagi ataupunn perangkat keras virtual untuk menjalankannya.

Tentang Teknologi Container
perbandingan container dan full virtualization

(lihat gambar di atas) maka container hanya akan menjalankan libraries/bin beserta aplikasi yang akan di jalankannya saja, dan juga container akan memakai kernel dari kernel kepunyaan si sistem operasi hostnya (shared kernel), jadi container (untuk saat ini) tidak memungkinkan untuk menjalankan sistem operasi yang berbeda (kernel) dari host. Contohnya, jika si host memakai linux ubuntu, maka si container tidak bisa menjalankan windows, dan hanya bisa memakai distro – distro linux yang lain yang sudah mendukung.

Sedangkan pada full virtualization, VM tidak akan memakai kernel bawaan dari si host, oleh karena itu VM juga dapat membuat sistem operasinya berbeda dengan yang dipakai oleh host, dan juga biasanya VM akan terbaca oleh host – host lain sebagai mesin fisik bukan virtual lagi.

Tetapi kalau di perhatikan lagi, container dengan os-level virtualization itu apa bedanya yak??

Jadi, kalau ini menurutku yak hehe, container itu adalah seperti VM yang dihasilkan oleh os-level virtualization, jadi yaa os-level virtualization juga bisa disebut container engine. Dan juga menurut wikipedia, *VM yang telah dibuat oleh *os-level virtualization juga bisa disebut insances, *software containers, virtualization engines, ataupun jails*.

*Oiya, mungkin ada masih bingung, kok pada container bisa menjalankan aplikasi, tetapi aplikasi itu mempunyai format untuk dijalankan di sistem operasi apa?? *

*apa container itu mempunyai sistem operasi yang sama seperti host? *

*tapi katanya container juga bisa di instal sistem operasi lain selain dari host? *

jadi yang benar yang mana??

Jadi yang benar itu, tiap container itu sebenarnya mempunyai sistem operasi juga, TAPI container itu akan menghapus semua aplikasi bawaan dari sistem operasinya, yang berarti container itu sebenarnya mempunyai sistem operasi tetapi sistem operasi tersebut sangat minimal, sehingga bisa dikatakan hanya ada libraries atau bin saja.

Oleh karena itu container juga bagus untuk programmer dalam mengembangkan aplikasi buatannya, tanpa perlu mencoba (testing) dengan mesin baru (VM).

TIPE CONTAINER

Container ada 2 tipe, yaitu

  • Sistem Operasi Container, dan
  • Aplikasi Container

Mungkin jika kalian (pembaca) melihat ilustrasi dibawah ini mungkin akan langsung tau perbedaannya

Tentang Teknologi Container

Kalau masih bingung, jadi seperti ini,

Sistem Operasi Container

Cara penggunaan sistem operasi container hampir sama dengan virtual machine, kenapa? karena sistem operasi container di desain untuk menjalankan beberapa aplikasi, libraries, dll yang berbeda, tetapi masih dalam 1 container yang sama.

Misalkan seperti gambar di atas, kita mempunyai 3 aplikasi mysql, apache, dan wordpress, nah ketiga aplikasi tersebut dapat di instal dalam 1 container saja.

Contoh vendor yang di desain untuk menjadi sistem operasi container seperti :

  • LXC (Linux Container)
  • OpenVZ
  • Solaris Zones
  • BSD Jails
  • Linux V-Server
  • dll

Aplikasi Container

Nah pada aplikasi container ini, di desain untuk menjalankan aplikasi atau libraries berbeda, dengan membuat container yang berbeda juga (container per application)

(lihat gambar) Misalkan kita mempunyai 3 aplikasi mysql, apache, dan wordpress, maka untuk menginstal ke3 aplikasi tersebut kita membuat 3 container untuk masing-masing aplikasi tersebut.

Keuntungan, dari aplikasi container ini seperti

  • kita dapat bebas memilih sistem operasi yang kita mau untuk menjalankan aplikasi-aplikasi yang kita butuhkan. (contoh, mysql menggunakan ubuntu, apache menggunakan centos).
  • lebih aman, karena tiap aplikasi sudah berbeda container.

Contoh vendor yang di desain untuk menjadi aplikasi container seperti docker dan rkt (rocket).

KESIMPULAN

Jadi kita ini lebih baik pakai container atau virtual machine? nah buat menjawab pertanyaan ini, kalo kata Mas Mike mah “the two word answer that nobody likes: it depends.“

yaa tergantung penggunaannya juga, tapi kalau menurutku, jika ingin mudah dan cepat membuat suatu layanan atau aplikasi, bisa menggunakan container, yang juga akan memakai sumber daya yang diperlukan untuk menjalankan layanan atau aplikasi tersebut.

Tetapi jika kita ingin memiliki keamanan dan peng-isolasi yang lebih baik, kita bisa memakai virtual machine, karena VM akan membuat sebuah virtual komputer yang baru yang mana akan memisahkan seluruh aspeknya seperti hardware, kernel, dll. Sehingga pada VM yang satu tidak akan membagi sumber dayanya ke VM yang lain.

KESIMPULAN (1)

container dan virtual machine juga memakai teknik isolasi dalam pembuatannya, hanya saja container itu memakai kernel bawaan dari host sehingga hanya akan mengisolasi process, network, dan namespaces (PID, UID, hostnames, dsb). Sedangkan pada virtual machine akan mengisolasi seluruh aspek yang akan dipakainya, seperti hardware, kernel, BIOS, sistem operasi, dll.

Tentang Teknologi Container

Jadi arti kata “container” itu sendiri ada banyak macamnya, tetapi yang di bahas pada postingan ini container pada sistem komputer bukan container pada truk ya, hehe Walaupun teknologi container ini juga biasanya di gambarkan atau di ilustrasikan sebagai container (truk) beneran sih hehe. Nah menurut “kebanyakan” orang teknologi container itu…

Istilah Pada Server atau Virtualisasi

Istilah Pada Server atau Virtualisasi

Jadi postingan ini sebenarnya sebagai catatan aku (author) saja, dan juga postingan ini akan di update terus..

DATACENTER

Datacenter adalah merujuk ke sebuah tempat atau lokasi dimana semua server, core *router, *core switch, dan device core sejenis, berkumpul dalam 1 tempat atau ruangan khusus. Jadi di dalam datacenter tidak hanya ada server saja yaa (seperti yang kebanyakan orang kira) hehe

Tempat atau ruangan khusus tersebut harus mempunyai penunjang untuk menunjang core devices yang ada di dalamnya, berikut beberapa penunjangya :

  • Pendingin ruangan – Air Conditioner (lawas)
  • Evaporative Cooler (lebih canggih), menggunakan uap.
  • Backup power-supplies
  • Rack servers
  • dan lain-lain..

Dan dibawah ini adalah ilustrasinya

Istilah Pada Server atau Virtualisasi
datacenter

CLUSTER – SERVER FARM

Cluster adalah penggabungan antara beberapa server menjadi 1, dan semua resources dari setiap server akan digabung juga menjadi 1.

Sedangkan server farm sebenarnya sama saja seperti cluster, hanya penamaan istilah saja yang berbeda-beda, jika di VMware menggunakan istilah cluster, dan yang lain ada yang berbeda ataupun yang sama.

Dan jika kita menggabungkan server tersebut menjadi 1, bisa juga dinamakan sebagai clustering.

Jadi misalkan kita mempunyai 2 Server dengan spesifikasi keduanya sebagai berikut :

  • CPU, QuadCore 3GHz
  • RAM, 4GB
  • HDD, 80GB

Dan jika kita meng-clustering kedua server tersebut, maka hasil spesifikasi yang di dapat adalah, sebagai berikut :

  • CPU, OctaCore 6GHz
  • *RAM, *8GB
  • HDD, 160GB

Karena seperti yang aku jelaskan, ketika server tersebut di clustering maka kedua resources dari server tersebut di gabungkan menjadi 1, dari mulai CPU, RAM, HDD, dan lain-lain. Ilustrasinya seperti ini

Istilah Pada Server atau Virtualisasi

STORAGE – THICK PROVISIONING

Thick provisioning adalah sebuah tipe storage yang akan mengalokasikan alias menyediakan disk yang akan dipakai pada saat disk itu sendiri akan dibuat.

Contohnya seperti ini, kita mempunyai storage 100GB, dan jika kita membuat VM pada vSphere, maka akan ada pilihan ukuran storage yang akan di pakai untuk VM tersebut, misalkan taruhlah 40GB, dan kita memilih tipe thick provisioning untuk storage tersebut. Ketika pada saat VM telah dibuat, ternyata hanya terpakai 20GB saja untuk VM tersebut. Tetapi, tetap saja storage yang kita punya akan berkurang 40GB bukan 20GB.

Contoh lagi, misalkan kita mempunyai 2 VM, dan kita mempunyai perkiraan ukuran storage yang akan dipakai keduanya sama, tetapi ternyata setelah dibuat kedua VM tersebut, berbeda ukuranya, maka akan banyak sekali space storage yang tidak dipakai, dan hanya bisa dipakai oleh kedua VM tersebut saja.

Dan ketika kita ingin membuat VM ke-3, maka kita harus menyediakan storage lagi untuk membuat VM tersebut, karena storage pertama sudah habis terpakai oleh VM ke-1 dan 2 

Istilah Pada Server atau Virtualisasi

Thick provisioning juga terbagi menjadi 2 tipe, yaitu :

  • Lazy zero thick, yaitu akan me-write (atau juga bisa dibilang menghapus) secara menyeluruh blocks yang akan di alokasikan oleh VM.  – Contoh, jika kita mengalokasikan 50GB storage untuk VM, walaupun yang terpakai hanya 30GB, maka storage tersebut akan di write / dihapus seluruh alokasi storage dari VM tersebut yaitu yang 50GB. 
  • Keuntungannya yaitu waktu yang dibutuhkan, akan lebih cepat dalam hal write data baru pada VM tersebut, karena sudah di write terlebih dahulu pada awalnya (contoh, ketika kita akan mecopy file pada folder yang sama (duplikat)).
  • Kerugiannya yaitu pada saat pertama kali pembuatan VM akan lebih lama, karena storage akan di write blocks-nya sampai penuh. Seperti halnya jika kita akan me-format flashdisk pada windows, jika kita uncheck opsi quick format, maka akan lebih lamakan?
  • Eager zero thick, yaitu akan me-write *(atau juga bisa dibilang menghapus) hanya blocks yang akan dipakai oleh VM. – Contoh, jika kita mengalokasikan 50GB storage untuk VM, dan yang terpakai hanya 30GB, maka storage tersebut akan di *write / dihapus hanya storage yang terpakai saja yaitu yang 30GB.
  • Keuntungannya yaitu waktu yang dibutuhkan, akan lebih cepat ketika pada saat pertama kali pembuatan VM. Karena hanya akan me-write storage yang akan dipakai saja, bukan seluruhnya.
  • Kerugiannya yaitu, ketika write data yang baru akan lebih lama, karena akan me-write block juga ketika data yang baru tersebut akan terbuat. (contoh, ketika kita akan mecopy file pada folder yang sama (duplikat))

+ what is the advantages?

  • disk akan segera di alokasikan, sehingga kita terbebas dari perangkap over-provisioning.
  • mudah untuk di manage, karena bisa dibilang thick provisioning ini teratur dalam menggunakan storage

– what is the disadvantages?

  • membuang sia-sia space storage jika yang terpakai hanya sebagian.
  • tidak efisien
  • pemborosan biaya, karena jika storage device habis maka harus beli lagi storage device, walaupun sebenarnya masih ada space yang tidak terpakai namun space tersebut milik VM yang bersangkutan dan hanya bisa dipakai oleh VM tersebut.

STORAGE – THIN PROVISIONING

Berbeda dengan thick provisioning, tipe thin provisioning ini akan mengalokasikan alias menyediakan disk storage hanya saja jika ada permintaan (request) dari VM. 

Contohnya seperti ini, kita mempunyai 80GB storage, jika pada saat pembuatan VM kita memilih tipe thin provisioning ini, dan pada pilihan ukuran dari storage kita atur menjadi 50GB, kemudian setelah VM terbuat, ternyata hanya memakan 30GB saja. Maka disk storage yang terpakai hanya 30GB saja bukan 50GB, lalu sisanya kemana? sisanya bisa dipakai lagi oleh VM ke-2  atau ke-3 atau seterusnya jika kita membuatnya, akan tetapi VM pertama masih mempunyai batas hingga 20GB lagi untuk bertambah storagenya.

Istilah Pada Server atau Virtualisasi

+ what the advantages?

  • storage akan sangat efisien penggunaannya
  • kita bisa menghemat money cost, karena kita hanya membeli apa yang kita perlukan (requested)

– what the disadvantages?

  • over-provisioning, yaitu jika kita membuat banyak sekali VMs sehingga storage yang dipakai oleh VMs tersebut penuh, dan juga VMs yang telah dibuat ternyata masih mempunyai sisa storage miliknya yang belum dipakai, maka kebanyakan VM tersebut akan mengambil storage dari VM lain, sehingga akan merusak VM yang lainnya. (mungkin tidak ada cara untuk mengatasi masalah ini, kita hanya harus memonitor storage yang dipakai dan storage yang tersisa dari VM, sehingga jika storage akan penuh kita bisa tambah storage baru lagi).

To be continued…


Jika kamu yang (kebetulan) membaca postingan ini, dan merasa ada yang janggal atau salah, bisa beri komentar yang menurutmu benar itu bagaimana, dan juga terima kasih.. 

Istilah Pada Server / Virtualisasi

Jadi postingan ini sebenarnya sebagai catatan aku (author) saja, dan juga postingan ini akan di update terus.. DATACENTER Datacenter adalah merujuk ke sebuah tempat atau lokasi dimana semua server, core router, core switch, dan device core sejenis, berkumpul dalam 1 tempat atau ruangan khusus. Jadi di dalam datacenter tidak hanya ada server saja…