Cloud Computing #06 : Containerization






Containerization didefinisikan sebagai bentuk virtualisasi sistem operasi, di mana aplikasi dijalankan di ruang pengguna yang terisolasi yang disebut wadah, semua menggunakan sistem operasi (OS) bersama yang sama. Wadah pada dasarnya adalah lingkungan komputasi yang dikemas penuh dan portabel:
  1. Semua yang dibutuhkan aplikasi untuk dijalankan - biner, pustaka, file konfigurasi, dan dependensinya - dienkapsulasi dan diisolasi dalam penampungnya.
  2. Container itu sendiri dipisahkan dari OS host, dengan hanya akses terbatas ke resource yang mendasarinya - seperti mesin virtual (VM) ringan.
  3. Hasilnya, aplikasi dalam container dapat dijalankan di berbagai jenis infrastruktur — di bare metal, di dalam VM, dan di cloud — tanpa perlu melakukan refactor untuk setiap lingkungan.
Itu karena ada lebih sedikit overhead selama startup dan tidak perlu menyiapkan OS tamu terpisah untuk setiap aplikasi karena semuanya berbagi kernel OS yang sama. Karena efisiensi tinggi ini, penampung biasanya digunakan untuk mengemas banyak layanan mikro individual yang membentuk aplikasi modern. Citrix menggunakan containerization dengan CPX, pengontrol pengiriman aplikasi (ADC) yang mendukung pengiriman aplikasi yang lebih skalabel, gesit, dan portabel.

Bagaimana Sebenarnya Containerization Bekerja?
Setiap penampung adalah paket perangkat lunak yang dapat dieksekusi, berjalan di atas OS host. Sebuah host dapat mendukung banyak kontainer (puluhan, ratusan atau bahkan ribuan) secara bersamaan, seperti dalam kasus arsitektur layanan mikro kompleks yang menggunakan banyak ADC dalam kontainer. Penyiapan ini berfungsi karena semua kontainer menjalankan proses minimal sumber daya yang terisolasi yang tidak dapat diakses orang lain.
Pikirkan aplikasi dalam kemasan sebagai lapisan atas kue multi-tingkat:
  • Di bagian bawah, terdapat perangkat keras infrastruktur yang dimaksud, termasuk CPU, penyimpanan disk, dan antarmuka jaringannya.
  • Di atas itu, ada OS host dan kernelnya - yang terakhir berfungsi sebagai jembatan antara perangkat lunak OS dan perangkat keras sistem yang mendasarinya.
  • Mesin kontainer dan OS tamu minimalnya, yang khusus untuk teknologi kontainerisasi yang digunakan, berada di atas OS host.
  • Di bagian paling atas adalah binari dan pustaka (bins / libs) untuk setiap aplikasi dan aplikasi itu sendiri, berjalan di ruang pengguna yang terisolasi (wadah).

Cgroups dan LXC

Containerization seperti yang kita tahu itu berevolusi dari cgroups, sebuah fitur untuk mengisolasi dan mengontrol penggunaan sumber daya (misalnya, berapa banyak CPU dan RAM dan berapa banyak thread yang dapat diakses oleh suatu proses) di dalam kernel Linux. Cgroup menjadi wadah Linux (LXC), dengan fitur yang lebih canggih untuk isolasi namespace komponen, seperti tabel perutean dan sistem file. Kontainer LXC dapat melakukan hal-hal seperti:
     ● Pasang sistem file.
● Jalankan perintah sebagai root.
● Dapatkan alamat IP.
Itu melakukan tindakan ini di ruang pengguna pribadinya sendiri. Meskipun menyertakan bins / lib khusus untuk setiap aplikasi, container LXC tidak mengemas kernel OS atau perangkat keras apa pun, yang berarti ini sangat ringan dan dapat dijalankan dalam jumlah besar bahkan pada mesin yang relatif terbatas.
Docker dan OCI

LXC berfungsi sebagai dasar untuk Docker, yang diluncurkan pada tahun 2013 dan dengan cepat menjadi teknologi peti kemas paling populer - secara efektif merupakan standar industri, meskipun spesifikasi yang ditetapkan oleh Open Container Initiative (OCI) sejak itu menjadi pusat peti kemas. Docker adalah kontributor spesifikasi OCI, yang menetapkan standar untuk format gambar dan runtime yang digunakan mesin kontainer.

Seseorang yang mem-boot container, Docker atau lainnya, dapat mengharapkan pengalaman yang sama terlepas dari lingkungan komputasi. Kumpulan wadah yang sama dapat dijalankan dan diskalakan apakah pengguna menggunakan distribusi Linux atau bahkan Microsoft Windows. Kompatibilitas lintas platform ini penting untuk ruang kerja digital saat ini, di mana pekerja mengandalkan banyak perangkat, OS, dan antarmuka untuk menyelesaikan pekerjaan.
Apa yang Membedakan Containerization dari Virtualization?
Fitur containerisasi yang paling khas adalah terjadi di tingkat OS, dengan semua container berbagi satu kernel. Tidak demikian halnya dengan virtualisasi melalui mesin virtual (VM):
  • VM berjalan di atas hypervisor, yang merupakan perangkat keras, perangkat lunak, atau firmware khusus untuk mengoperasikan VM pada mesin host, seperti server atau laptop.
  • Melalui hypervisor, setiap VM ditetapkan tidak hanya pada bin / lib penting, tetapi juga tumpukan perangkat keras tervirtualisasi termasuk CPU, penyimpanan, dan adaptor jaringan.
  • Untuk menjalankan semua itu, setiap VM mengandalkan OS tamu yang lengkap. Hypervisor itu sendiri dapat dijalankan dari OS mesin host atau sebagai aplikasi bare-metal.
Seperti containerization, virtualisasi tradisional memungkinkan isolasi penuh aplikasi sehingga mereka berjalan secara independen satu sama lain menggunakan sumber daya aktual dari infrastruktur yang mendasarinya. Tetapi perbedaannya lebih penting:
  • Ada overhead yang signifikan yang terlibat, karena semua VM membutuhkan OS tamu dan kernel virtual mereka sendiri, ditambah kebutuhan akan lapisan ekstra yang berat (hypervisor) antara mereka dan host.
  • Hypervisor juga dapat menyebabkan masalah kinerja tambahan, terutama saat dijalankan pada OS host, misalnya di Ubuntu.
  • Karena keseluruhan resource overhead yang tinggi, mesin host yang mungkin dapat menjalankan 10 container atau lebih dengan nyaman dapat kesulitan untuk mendukung satu VM.
Namun, menjalankan banyak VM dari perangkat keras yang relatif kuat masih merupakan paradigma umum dalam pengembangan dan penerapan aplikasi. Ruang kerja digital biasanya menampilkan virtualisasi dan penampung, menuju tujuan umum untuk membuat aplikasi tersedia dan skalabel mungkin bagi karyawan.
Apa Manfaat Utama Containerization?
Aplikasi dalam kontainer dapat dengan mudah dikirimkan ke pengguna di ruang kerja digital. Lebih khusus lagi, memasukkan aplikasi berbasis layanan mikro, satu set Citrix ADC atau database (di antara kemungkinan lainnya) memiliki spektrum manfaat yang luas, mulai dari ketangkasan yang unggul selama pengembangan perangkat lunak hingga pengendalian biaya yang lebih mudah.

Bagaimana Container Bekerja


Containerization melibatkan penggabungan aplikasi bersama dengan semua file konfigurasi terkait, library, dan dependensi yang diperlukan untuk menjalankannya dengan cara yang efisien dan bebas bug di lingkungan komputasi yang berbeda.
Implementasi containerisasi paling populer adalah Docker dan Kubernetes.



Aplikasi dan dependensinya berada dalam container di atas 'lingkungan runtime container' yang dapat berfungsi pada sistem operasi host dan infrastruktur pilihan.


Kontainer versus Mesin Virtual


Container sering dibandingkan dengan Mesin Virtual (VM), karena keduanya memungkinkan beberapa jenis perangkat lunak dijalankan di lingkungan yang terkandung.
Penampung adalah abstraksi dari lapisan aplikasi (artinya setiap penampung mensimulasikan aplikasi perangkat lunak yang berbeda). Meskipun setiap penampung menjalankan proses yang terisolasi, beberapa penampung berbagi Sistem Operasi yang sama.
VM adalah abstraksi dari lapisan perangkat keras (artinya setiap VM mensimulasikan mesin fisik yang dapat menjalankan perangkat lunak). Teknologi VM dapat menggunakan satu server fisik untuk menjalankan server yang setara dengan banyak server (masing-masing disebut VM). Jadi, sementara beberapa VM berjalan pada satu mesin fisik, setiap VM memiliki salinan Sistem Operasi, aplikasi, dan file terkait, pustaka, dan dependensinya sendiri.

Menjalankan perangkat lunak di lingkungan dalam kontainer umumnya menggunakan lebih sedikit ruang dan memori daripada menjalankan perangkat lunak dalam VM yang berbeda, karena yang terakhir memerlukan salinan terpisah dari Sistem Operasi untuk dijalankan di setiap VM.

Pengembangan perangkat lunak berorientasi DevOps yang lebih gesit
Dibandingkan dengan VM, penampung lebih mudah disiapkan, baik tim menggunakan OS mirip UNIX atau Windows. Alat pengembang yang diperlukan bersifat universal dan mudah digunakan, memungkinkan pengembangan, pengemasan, dan penerapan aplikasi dalam container dengan cepat di seluruh OS. Teknisi dan tim DevOps dapat (dan memang) memanfaatkan teknologi containerization untuk mempercepat alur kerja mereka.
Overhead lebih sedikit dan biaya lebih rendah daripada VM
Penampung tidak memerlukan OS tamu penuh atau hypervisor. Pengurangan overhead itu berarti lebih dari sekadar waktu boot yang lebih cepat, jejak memori yang lebih kecil, dan performa yang secara umum lebih baik. Ini juga membantu memangkas biaya, karena organisasi dapat mengurangi beberapa server dan biaya lisensi mereka, yang seharusnya mendukung penerapan yang lebih berat dari beberapa VM. Dengan cara ini, kontainer memungkinkan efisiensi server dan efektivitas biaya yang lebih besar.

Portabilitas yang sangat baik di seluruh ruang kerja digital

Wadah membuat ide "tulis sekali, jalankan di mana saja" menjadi kenyataan. Setiap penampung telah diambil dari OS host dan akan berjalan sama di lokasi mana pun. Dengan demikian, ini dapat ditulis untuk satu lingkungan host dan kemudian di-porting dan disebarkan ke yang lain, selama host baru mendukung teknologi container dan OS yang dipermasalahkan. Kontainer Linux menyumbang sebagian besar dari semua kontainer yang diterapkan dan dapat di-porting di berbagai OS berbasis Linux baik itu di lokasi atau di cloud. Di Windows, container Linux dapat dijalankan dengan andal di dalam VM Linux atau melalui isolasi Hyper-V. Kompatibilitas seperti itu mendukung ruang kerja digital, di mana banyak awan, perangkat, dan alur kerja berpotongan.

Isolasi kesalahan untuk aplikasi dan layanan mikro

Jika satu wadah gagal, yang lain berbagi kernel OS tidak terpengaruh, berkat isolasi ruang pengguna di antara mereka. Itu menguntungkan aplikasi berbasis layanan mikro, di mana banyak komponen yang berpotensi mendukung program yang lebih besar. Layanan mikro dalam wadah tertentu dapat diperbaiki, diterapkan ulang, dan diskalakan tanpa menyebabkan waktu henti aplikasi

Pengelolaan yang lebih mudah melalui orkestrasi

Orkestrasi container melalui solusi seperti platform Kubernetes membuatnya praktis untuk mengelola aplikasi dan layanan dalam container dalam skala besar. Dengan menggunakan Kubernetes, dimungkinkan untuk mengotomatiskan peluncuran dan rollback, mengatur sistem penyimpanan, melakukan load balancing, dan memulai ulang container yang gagal. Kubernetes kompatibel dengan banyak mesin kontainer termasuk yang kompatibel dengan Docker dan OCI.

Aplikasi dan Layanan Apa yang Biasanya Dimasukkan?

Sebuah wadah dapat mendukung hampir semua jenis aplikasi yang di era sebelumnya akan secara tradisional divirtualisasikan atau dijalankan secara native di mesin. Pada saat yang sama, ada beberapa paradigma komputasi yang sangat cocok untuk containerization, termasuk:

  • Layanan mikro : Arsitektur layanan mikro dapat dikonfigurasi secara efisien sebagai sekumpulan kontainer yang beroperasi bersama-sama dan berputar serta dinonaktifkan sesuai kebutuhan.
  • Database : Pecahan database dapat dimasukkan ke dalam container dan setiap aplikasi diberi database khusus, bukan perlu menghubungkan semuanya ke database monolitik.
  • Server web : Menjalankan server web dalam wadah hanya memerlukan beberapa input baris perintah untuk memulai, ditambah lagi, ini menghindari kebutuhan untuk menjalankan server secara langsung di host.
  • Penampung dalam VM : Penampung dapat dijalankan dalam VM, biasanya untuk memaksimalkan pemanfaatan perangkat keras, berbicara dengan layanan tertentu di VM dan / atau meningkatkan keamanan.
  • Citrix ADCs : ADC mengelola kinerja dan keamanan aplikasi. Saat dimasukkan ke dalam container , itu membuat layanan L4-L7 lebih mudah tersedia di lingkungan DevOps.

Bagaimana Kontainerisasi Terkait dengan Layanan Mikro dan Orkestrasi Kontainer?

Layanan mikro

Layanan mikro yang terdiri dari aplikasi dapat dikemas dan disebarkan dalam wadah dan dikelola pada infrastruktur awan yang dapat diskalakan. Manfaat utama containerization layanan mikro mencakup overhead yang minimal, penskalaan independen, dan pengelolaan yang mudah melalui orkestrator container seperti Kubernetes.

Citrix ADC dapat membantu transisi dari aplikasi berbasis monolitik ke layanan mikro Lebih khusus lagi, ini membantu admin, pengembang, dan insinyur keandalan situs dengan masalah jaringan seperti manajemen lalu lintas dan pergeseran dari arsitektur berbasis monolitik ke layanan mikro.

Jika layanan mikro dikemas dalam wadah yang diterapkan dalam skala besar, platform orkestrasi wadah diperlukan untuk mengelola siklus hidup wadah.

Orkestrasi Penampung

Kubernetes adalah platform orkestrasi container yang paling menonjol. Awalnya dikembangkan oleh Google, ini terlihat bersumber terbuka dan sekarang dikelola oleh Cloud Native Computing Foundation.

Meskipun ini bukan satu-satunya solusi seperti itu, rangkaian fiturnya menunjukkan kemampuan orkestrator container modern, karena dapat:

  • Buka wadah dengan nama DNS atau alamat IP.
  • Tangani load balancing dan distribusi lalu lintas untuk kontainer.
  • Pasang penyimpanan lokal dan berbasis cloud secara otomatis.
  • Alokasikan sumber daya CPU dan RAM tertentu ke container, lalu paskan ke node.
  • Ganti atau matikan container yang bermasalah tanpa mengganggu kinerja dan waktu kerja aplikasi.
  • Kelola informasi sensitif seperti kata sandi dan token tanpa membangun kembali wadah.
  • Ubah status wadah dan kembalikan wadah lama untuk menggantinya dengan yang baru.


0 komentar:

Posting Komentar