Jumat, 27 Maret 2020

Konsep Containerization

The ABC of Containerization - DevOps Implementation

Containerization adalah pendekatan dimana kita menjalankan multiple instances (containers) pada satu Operating System (OS) yang sama, dimana containers tersebut akan memiliki shared kernel.
Bisa juga disebut sebagai vitualisasi yang ringan. Karena hanya menyediakan kebutuhan minimum yang dibutuhkan sebuah aplikasi supaya bisa berjalan. Container merupakan virtual machine minimalis yang tidak berjalan pada hypervisor. Lalu apa saja yang ada di dalam container? Berikut ini yang ada dalam container :
1. Application
2. Binaries
3. Configuration File
4. Dependencies
5. Libraries

Bagaimana caranya bisa berjalan di environment yang berbeda? 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.
Tentang kernel dan sitem operasi
Laptop, komputer, telepon, dll dibangun dengan menggunakan berbagai perangkat keras. Contohnya, CPU, kartu jaringan, memori, penyimpanan (SSD,HDD), dll. Semua orang tau hal itu, tapi bagaimana mereka berinteraksi satu sama lain. Interaksi itu dibantu dengan perangkat lunak yang disebut dengan kernel! Sebuah jembatan antara perangkat keras dan sistem operasi adalah kernel. Kernel inilah yang menjadwalkan untuk menjalankan sebuah proses, mengelola perangkat keras, menangani error, dll.
Selain itu, sistem operasi berguna untuk membantu proses booting dan mengelola ruang pengguna. Proses pengguna dijalankan pada ruang ini dan terus-menerus berinteraksi dengan kernel.

Teknologi Docker
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.
Lapisan Docker:
Docker container terdiri dari berbagai lapisan. Ini termasuk images dan binari yang dikemas ke dalam satu paket. Base image memiliki sistem operasi container. OS image dan OS host dapat berbeda atau sama. Bagaimana OS containernya? Itu dalam bentuk image. Jika Anda membandingkan OS image dengan OS host, ada perbedaan! OS host adalah sistem operasi penuh, sedangkan OS image tidak penuh. Image hanyalah sistem file dan binari untuk OS. Sementara, OS lengkap termasuk sistem file, binari, dan Kernel.
Ada beberapa image di atas base image. Mereka bersama-sama membuat sebagian dari container. Pengaturannya agak dinamis. Misalnya, di atas base image, ada image yang berisi dependensi apt-get. Di atas itu, mungkin ada image yang berisi aplikasi biner. Tetapi bagian yang paling menarik adalah, jika ada dua container dengan lapisan image 1,2,3 dan 1,2,4 maka anda hanya perlu menyimpan satu salinan dari setiap image! Secara lokal maupun di repositori. Ini adalah cara sistem file Docker beroperasi.
Docker dimuat dengan banyak fitur keren seperti:
(1) Copy on write.
(2) Volumes.
(3) Docker daemon.
(4) Version controlled repositories and more.

Apa yang diperlukan untuk container?
Proses isolasi hanyalah salah satu sifat contaianer. Namun terlepas dari itu, ada banyak properti bermanfaat lainnya.

(1) Container berfungsi sebagai unit mandiri. Ini berarti dapat berjalan di mana saja. Pada setiap instances, containernya persis sama. OS host tidak masalah. Itu bisa CentOS, Ubuntu, MacOS atau non UNIX seperti Windows. Singkatnya, container yang dibangun di sistem anda juga dapat bekerja di server perusahaan!
(2) Orang dapat menganggap container sebagai unit standar atau komputer. Secara umum, dikatakan bahwa setiap kontainer menjalankan server web tunggal, satu basis data dari database, dll. Jadi untuk menskalakan aplikasi, seseorang dapat dengan mudah skala jumlah kontainer.
(3) Container adalah alat terbaik untuk menerapkan arsitektur layanan mikro. Masing-masing microservice adalah seperangkat container yang bekerja sama. Sebagai contoh, dimungkinkan untuk mengimplementasikan layanan mikro Redis dengan container master tunggal dan beberapa container slave. Arsitektur microservice memiliki banyak keunggulan dibandingkan dengan pendekatan monolitik atau tradisional.

Kelebihan dan kekukangan 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.

Contoh Studi Kasus Implementasi dari Containerization
IMPLEMENTASI DOCKER UNTUK PENGELOLAAN BANYAK APLIKASI WEB
(Studi Kasus : Jurusan Teknik Informatika UNESA)

Sistem web hosting modern, di dalam setiap servernya, mengelola banyak aplikasi web. Teknologi virtual machine dimanfaatkan untuk menyelesaikan masalah heterogenitas (perbedaan versi library atau tool dari beberapa aplikasi web). Peningkatan jumlah aplikasi web yang harus dihosting harus diikuti dengan peningkatan kualitas ataupun kuantitas sumber daya, terlebih saat hadirnya kebutuhan high availability dari layanan web tersebut. Teknik kontainerisasi (virtualisasi berbasis container) hadir sebagai solusi dan menjadi trend saat ini. Docker adalah salah satu software yang mengadopsi teknik kontainerisasi dan semakin banyak diterapkan di dalam lingkungan web hostingTulisan ini mencoba untuk melakukan kajian literatur terhadap teknologi virtualisasi di atas, baik virtual machine
maupun container dan kemudian merangkum perbandingannya. Arsitektur container di dalam Docker merupakan fokus dari tulisan ini, termasuk perkembangan dan keunggulan dari Docker yang sudah diteliti dan diimplementasikan dalam dua tahun terakhir. Docker memudahkan proses deployment (penyebaran) aplikasi web beserta software pendukung seperti web server, database server, dependensi dan environment lain ke server. Dapat kemudahan dengan proses deployment (penyebaran) aplikasi web beserta software pendukung seperti web server, database server, dependensi dan environment lain ke server. Memberikan solusi pada banyak Aplikasi web yang membutuhkan Docker untuk bereksperimen atau mendukung mahasiswa yang ingin melakukan tugas akhir dengan berbagai topik.

Tidak ada komentar:

Posting Komentar