Containerized Applications

Sebuah istilah yang digunakan untuk menyebutkan aplikasi-aplikasi yang dikemas dengan sistem kontainer seperti Docker, Docker Swarm, Podman, dan lainnya.

Karakteristik utama

 * Hardware yang lebih terjangkau (Low hardware footprint)
 * Lingkungan terisolasi (Environment isolation)
 * Proses deploy cepat (Quick deployment)
 * Reusability

Traditional Deployed Applications
Kebalikan dari Containerized Applications ialah Traditional Deployed Applications yang umumnya seperti VMware dan Hypervisor.

Karakteristik utama

 * Kebalikan dari Containerized Applications
 * Familiar interfaces
 * Manajemen yang lebih mudah

Contoh kasus
Dalam beberapa kasus dapat diambil contoh semisal dalam membuat aplikasi Django, Flask, Laravel yang biasanya bergantung pada library-nya masing-masing, file konfigurasi, atau layanan lain yang disediakan oleh runtime environment. Pada traditional runtime environment untuk aplikasi yang merupakan physical host atau virtual machine, dependensi aplikasi diinstal sebagai bagian dari host.

Misalnya contoh kasus aplikasi tidak menggunakan container (traditional deploy), aplikasi Python yang memerlukan akses ke library (tanpa modul virtualenv) yang menerapkan protokol SSL. Secara tradisional, administrator sistem menginstal paket yang diperlukan yang menyediakan pustaka bersama sebelum menginstal aplikasi Python.

Kelemahan utama aplikasi yang diterapkan secara tradisional (traditional deployed applications) adalah ketergantungan aplikasi terkait dengan lingkungan waktu proses. Aplikasi dapat rusak ketika pembaruan atau tambalan diterapkan ke sistem operasi dasar (OS).

Misal akan ada pembaruan OS ke suatu library bersama (diakses aplikasi Django dan juga Laravel), yaitu SSL. Developer SSL menghapus SSL1.0 sebagai protokol yang didukung dan mau tidak mau user harus meng-upgrade ke SSL yang dipakai ke versi 2.0. Namun, hal ini merusak salah satu aplikasi, yakni aplikasi Python yang dalam contoh ini mengalami error jika menggunakan SSL versi 2.0 karena aplikasi ditulis menggunakan baris kode dan struktur library yang hanya membutuhkan protokol SSL versi 1.0.

Pada kasus ini maka akan memaksa SysAdmin untuk membatalkan pembaruan OS agar aplikasi tetap berjalan, mencegah aplikasi lain menggunakan manfaat dari paket yang diperbarui. Oleh karena itu, perusahaan yang mengembangkan aplikasi perangkat lunak tradisional mungkin memerlukan serangkaian pengujian lengkap untuk menjamin bahwa pembaruan OS tidak memengaruhi aplikasi yang berjalan pada host.

Selain itu, aplikasi yang diterapkan secara tradisional harus dihentikan sebelum memperbarui dependensi yang terkait. Untuk meminimalkan waktu henti aplikasi, perusahaan merancang dan mengimplementasikan sistem yang kompleks. Biasanya, men-deploy setiap aplikasi ke VM yang berbeda dan juga men-deploy library bersama (SSL) yang dibuat khusus satu per satu ke setiap host VM. Yaitu, mempertahankan beberapa aplikasi pada satu host sering menjadi tidak praktis, dan penerapan atau pembaruan apa pun berpotensi merusak salah satu aplikasi perusahaan. Alternatifnya, aplikasi perangkat lunak dapat disebarkan menggunakan container atau memigrasikan aplikasi ke sistem container atau level lebih atas menggunakan cluster seperti Docker Swarm dan Kubernetes (K8s).

Container adalah sekumpulan satu atau lebih proses yang diisolasi dari sistem lainnya. Maka tidak akan mengganggu library aplikasi lain di antar container. Container memberikan banyak manfaat yang sama seperti mesin virtual, seperti security, storage, and network isolation. Container membutuhkan sumber daya perangkat keras yang jauh lebih sedikit dan cepat untuk memulai (start) dan mengakhiri (terminate). Mereka juga mengisolasi libraries dan runtime resource (seperti CPU dan storage) untuk aplikasi guna meminimalkan dampak pembaruan OS apa pun ke OS host.

Penggunaan kontainer tidak hanya membantu efficiency, elasticity, and reusability pada aplikasi yang dihosting, tetapi juga dengan portabilitas aplikasi. Open Container Initiative (OCI) menyediakan sekumpulan standar industri yang menentukan spesifikasi runtime container dan OCI image spefication termasuk didalamnya BuildKit, Podman, Buildah dan mencakup OCI runtime specification termasuk didalamnya Kata container, gVisor, Firecracker.