Containerization

 Apa itu Containerization?


Sumber: (hackernoon.com)


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:

Semua yang dibutuhkan aplikasi untuk dijalankan - biner, pustaka, file konfigurasi, dan dependensinya - dienkapsulasi dan diisolasi dalam penampungnya.

Container itu sendiri dipisahkan dari OS host, dengan hanya akses terbatas ke resource yang mendasarinya - seperti mesin virtual (VM) ringan.

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.


Container merangkum aplikasi sebagai satu paket perangkat lunak yang dapat dijalankan yang menggabungkan kode aplikasi bersama dengan semua file konfigurasi terkait, pustaka, dan dependensi yang diperlukan untuk menjalankannya. Aplikasi dalam container "diisolasi" karena tidak digabungkan dalam salinan sistem operasi. Sebaliknya, mesin runtime open source (seperti mesin runtime Docker) diinstal pada sistem operasi host dan menjadi saluran bagi container untuk berbagi sistem operasi dengan container lain pada sistem komputasi yang sama.


Lapisan penampung lainnya, seperti tempat sampah dan pustaka umum, juga dapat dibagikan di antara beberapa penampung. Ini menghilangkan overhead menjalankan sistem operasi dalam setiap aplikasi dan membuat container lebih kecil dalam kapasitas dan lebih cepat untuk memulai, mendorong efisiensi server yang lebih tinggi. Isolasi aplikasi sebagai penampung juga mengurangi kemungkinan kode berbahaya yang ada di satu penampung akan memengaruhi penampung lain atau menyerang sistem host.


Abstraksi dari sistem operasi host membuat aplikasi dalam container menjadi portabel dan dapat berjalan secara seragam dan konsisten di semua platform atau cloud. Container dapat dengan mudah diangkut dari komputer desktop ke mesin virtual (VM) atau dari Linux ke sistem operasi Windows, dan mereka akan berjalan secara konsisten pada infrastruktur virtual atau pada server "bare metal" tradisional, baik di lokasi maupun di awan. Ini memastikan bahwa pengembang perangkat lunak dapat terus menggunakan alat dan proses yang paling nyaman bagi mereka.


Orang dapat melihat mengapa perusahaan dengan cepat mengadopsi containerization sebagai pendekatan yang unggul untuk pengembangan dan manajemen aplikasi. Containerization memungkinkan pengembang untuk membuat dan menerapkan aplikasi lebih cepat dan lebih aman, baik aplikasi tersebut berupa monolit tradisional (aplikasi perangkat lunak tingkat tunggal) atau layanan mikro modular (kumpulan layanan yang digabungkan secara longgar). Aplikasi baru berbasis cloud dapat dibangun dari bawah ke atas sebagai layanan mikro dalam peti kemas, memecah aplikasi kompleks menjadi serangkaian layanan khusus dan dapat dikelola yang lebih kecil. Aplikasi yang sudah ada dapat dikemas ulang ke dalam container (atau layanan mikro dalam container) yang menggunakan resource komputasi secara lebih efisien.


Kelebihan

Containerization menawarkan manfaat yang signifikan bagi pengembang dan tim pengembangan. Diantaranya adalah sebagai berikut:

  • Portabilitas: Container membuat paket perangkat lunak yang dapat dieksekusi yang dipisahkan dari (tidak terikat atau bergantung pada) sistem operasi host, dan karenanya, portabel dan dapat berjalan secara seragam dan konsisten di semua platform atau cloud.
  • Kelincahan: Mesin Docker open source untuk menjalankan kontainer memulai standar industri untuk kontainer dengan alat pengembang sederhana dan pendekatan pengemasan universal yang bekerja pada sistem operasi Linux dan Windows. Ekosistem kontainer telah bergeser ke mesin yang dikelola oleh Open Container Initiative (OCI). Pengembang perangkat lunak dapat terus menggunakan alat dan proses tangkas atau DevOps untuk pengembangan dan peningkatan aplikasi yang cepat.
  • Kecepatan: Container sering kali disebut sebagai "ringan", artinya container berbagi kernel sistem operasi (OS) mesin dan tidak macet dengan overhead tambahan ini. Hal ini tidak hanya mendorong efisiensi server yang lebih tinggi, tetapi juga mengurangi biaya server dan lisensi sekaligus mempercepat waktu mulai karena tidak ada sistem operasi untuk melakukan booting.
  • Isolasi kesalahan: Setiap aplikasi dalam peti kemas diisolasi dan beroperasi secara independen dari yang lain. Kegagalan satu kontainer tidak mempengaruhi kelanjutan pengoperasian kontainer lainnya. Tim pengembang dapat mengidentifikasi dan memperbaiki masalah teknis apa pun dalam satu penampung tanpa waktu henti di penampung lain. Selain itu, mesin kontainer dapat memanfaatkan teknik isolasi keamanan OS apa pun — seperti kontrol akses SELinux — untuk mengisolasi kesalahan di dalam kontainer.
  • Efisiensi: Software yang berjalan di lingkungan dalam container berbagi kernel OS mesin, dan lapisan aplikasi dalam container dapat dibagikan di seluruh container. Karenanya, container secara inheren memiliki kapasitas yang lebih kecil daripada VM dan memerlukan waktu mulai yang lebih sedikit, sehingga memungkinkan lebih banyak container untuk berjalan pada kapasitas komputasi yang sama sebagai VM tunggal. Ini mendorong efisiensi server yang lebih tinggi, mengurangi biaya server dan lisensi.
  • Kemudahan pengelolaan: Platform orkestrasi container mengotomatiskan penginstalan, penskalaan, dan pengelolaan beban kerja dan layanan dalam container. Platform orkestrasi container dapat memudahkan tugas-tugas manajemen seperti menskalakan aplikasi dalam container, meluncurkan versi baru aplikasi, dan menyediakan pemantauan, logging, dan debugging, di antara fungsi-fungsi lainnya. Kubernetes, mungkin sistem orkestrasi container paling populer yang tersedia, adalah teknologi open source (awalnya bersumber terbuka oleh Google, berdasarkan proyek internal mereka yang disebut Borg) yang awalnya mengotomatiskan fungsi container Linux. Kubernetes bekerja dengan banyak mesin kontainer, seperti Docker, tetapi juga bekerja dengan sistem kontainer apa pun yang sesuai dengan standar Open Container Initiative (OCI) untuk format gambar kontainer dan runtime.
  • Keamanan: Isolasi aplikasi sebagai penampung secara inheren mencegah invasi kode berbahaya agar tidak memengaruhi penampung lain atau sistem host. Selain itu, izin keamanan dapat ditentukan untuk secara otomatis memblokir komponen yang tidak diinginkan dari memasuki wadah atau membatasi komunikasi dengan sumber daya yang tidak diperlukan.

Kekurangan
Containerization juga memiliki kekurangan, antara lain:

  • Container tidak bekerja dengan kecepatan bare-metal: Kontainer mengonsumsi sumber daya lebih efisien daripada mesin virtual. Tetapi kontainer masih tunduk pada overhead kinerja karena jaringan overlay, antarmuka antara kontainer dan sistem host, dan sebagainya. Jika Anda menginginkan kinerja 100 persen logam murni, Anda perlu menggunakan logam kosong, bukan wadah.
  • Penyimpanan data persisten yang rumit: Secara desain, semua data di dalam kontainer akan hilang selamanya saat kontainer dimatikan, kecuali pengguna menyimpannya di tempat lain terlebih dahulu.
  • Tidak semua aplikasi mendapat manfaat dari kontainer: Secara umum, hanya aplikasi yang dirancang untuk dijalankan sebagai sekumpulan layanan mikro rahasia yang dapat memanfaatkan container secara maksimal.

Jenis dan Teknologi yang Dipakai

Pertumbuhan pesat minat dan penggunaan solusi berbasis wadah telah menyebabkan kebutuhan akan standar seputar teknologi wadah dan pendekatan untuk kode perangkat lunak pengemasan. Open Container Initiative (OCI), didirikan pada bulan Juni 2015 oleh Docker dan pemimpin industri lainnya, mempromosikan standar dan spesifikasi umum, minimal, dan terbuka seputar teknologi peti kemas. Karena itu, OCI membantu memperluas pilihan mesin open source. Pengguna tidak akan terkunci pada teknologi vendor tertentu, tetapi mereka akan dapat memanfaatkan teknologi bersertifikat OCI yang memungkinkan mereka untuk membangun aplikasi dalam container menggunakan beragam perangkat DevOps dan menjalankannya secara konsisten pada infrastruktur (s) pilihan mereka.


Saat ini, Docker adalah salah satu teknologi mesin kontainer yang paling terkenal dan paling banyak digunakan, tetapi ini bukan satu-satunya pilihan yang tersedia. Ekosistem melakukan standarisasi pada containerd dan alternatif lain seperti CoreOS rkt, Mesos Containerizer, LXC Linux Containers, OpenVZ, dan crio-d. Fitur dan default mungkin berbeda, tetapi mengadopsi dan memanfaatkan spesifikasi OCI seiring perkembangan ini akan memastikan bahwa solusi netral vendor, bersertifikat untuk berjalan di beberapa sistem operasi dan dapat digunakan di berbagai lingkungan.


Studi Kasus

Nordstorm Technology

Nordstrom ingin meningkatkan efisiensi dan kecepatan operasi teknologinya, yang mencakup situs e-niaga Nordstrom.com. Pada saat yang sama, Teknologi Nordstrom sedang mencari cara untuk mempersempit biaya operasional teknologinya. 

Setelah merangkul transformasi DevOps dan meluncurkan proyek continuous integration / continuous deployment (CI / CD) empat tahun lalu, perusahaan mengurangi waktu penerapannya dari tiga bulan menjadi 30 menit. Namun mereka ingin melangkah lebih cepat di seluruh lingkungan, jadi mereka memulai perjalanan cloud native mereka, mengadopsi container Docker yang diatur dengan Kubernetes.

Pengembang Teknologi Nordstrom yang menggunakan Kubernetes sekarang menerapkan lebih cepat dan dapat "hanya fokus pada penulisan aplikasi," kata Dhawal Patel, insinyur senior dalam tim yang membangun platform perusahaan Kubernetes untuk Nordstrom. Selain itu, tim telah meningkatkan efisiensi Operasi, meningkatkan pemanfaatan CPU dari 5x menjadi 12x bergantung pada beban kerja. "Kami menjalankan ribuan mesin virtual (VM), tetapi tidak secara efektif menggunakan semua sumber daya itu," kata Patel. "Dengan Kubernetes, bahkan tanpa mencoba membuat cluster kami efisien, saat ini kami berada pada peningkatan 10x."


Referensi:

(citrix.com)

(labs.sogeti.com)

(polarseven.com)

(channelfutures.com)

(kubernetes.io)

Comments

Popular posts from this blog

PHP Lumen Service Docs

Interoperabilitas - Web Service