Application Containerization Steps Towards Cloud Native Architecture

Apakah manfaat yang di dapat dari meng-containerisasi aplikasi?

Application Containerization adalah suatu metoda virtualisasi di level Operating System dengan tujuan untuk men-deploy microservice aplikasi tanpa harus membutuhkan virtual machine dan guest operating system untuk setiap aplikasi yang di jalankan. Dengan mempergunakan Operating System Kernel yang sama, multiple microservices aplikasi atau layanan yang terisolasi dapat berjalan dalam satu host komputer yang sama. Container dapat berfungsi pada sistem bare-metal, instance cloud, bahkan di atas virtual machine.

Application containers menyertakan the runtime components seperti — files, environment variables and libraries – mencakup semua kebutuhan untuk menjalankan software secara benar.

Container menggunakan lebih sedikit computer resource daripada dibanding penerapan pada Virtual Machine. Berbeda pada VM environment yang membutuhkan Operating System yang lengkap, Container berbagi share operating system yang di butuhkan untuk menjalakan setiap aplikasi. Kumpulan informasi lengkap yang siap untuk dieksekusi dalam container di namakan  Image. Container Engine menjalankan Image-Image ini di atas komputer host.

Teknologi containerization aplikasi yang paling umum adalah Docker, khususnya Docker Engine adalah open source yang merupakan container yang mempergunakan runC runtime universal. Docker Swarm adalah clustering dan scheduling tools. Menggunakan Docker Swarm, DevOps team dapat membuat dan mengelola cluster node Docker di dalam system yg terintegrasi. Ada kekhawatiran tentang lock-in vendor dari penguna aplikasi containerization dan ekosistem partner tetapi sejumlah besar teknologi open source mendukung container teknologi.

Application Containerization sangat cocok untuk menjalankan microservices dan distributed aplikasi, karena setiap container beroperasi secara independen dari yang lain dan menggunakan komputer resource yang minimal dari komputer host. Setiap microservices berkomunikasi dengan yang lain melalui API. Container Virtualization layer dapat meningkatkan kinerja microsevices untuk memenuhi permintaan yang meningkat akan aplikasi yang harus di jalankan dan mendistribusikan beban lebih baik. Dengan virtualisasi, programmer (Dev team) dapat memanfaatkan komputer hardware resource sebagai virtual mesin yang siap pakai. Pengaturan ini meningkatkan fleksibilitas. Misalnya, jika Dev team menginginkan variasi dari Image yg standar, dia dapat membuat container  yang lain untuk menampung library baru dalam lingkungan virtual.

Untuk memperbarui aplikasi, Dev team dapat membuat perubahan pada program di Image container. Pengembang kemudian menerapkan Image yang beru itu untuk berjalan di OS host.

Manfaat dan kerugian Application Containerization

Containerization terbukti dapat mengefisienkan memori, CPU, dan storage dibandingkan dengan traditional virtualization ataupun application hosting secara fisik. Tanpa overhead yang dibutuhkan oleh VM (untuk menjalankan OS), dalam infrastruktur yang sama, sangat dimungkinkan untuk menjalankan lebih banyak application container dibanding dengan menjalankan VM.

Reprodusibilitas adalah keuntungan lain menerapkan application containerization. Inilah salah satu alasan mengapa adopsi container sering kali sesuai dengan metodologi DevOps.

Salah satu potential kelemahan dari Containerization adalah kurangnya isolasi dari Host Operating System. Karena container tidak diabstraksi dari OS host namun pada VM, beberapa ahli memperingatkan bahwa ancaman keamanan karena aplikasi memiliki akses yang lebih mudah ke seluruh sistem. Namun, containerization juga menawarkan beberapa peningkatan dalam keamanan. Hal ini disebabkan oleh application packages yang lebih terisolasi dan OS yang lebih specifik dan berukuran OS dependency yang lebih kecil. Kebijakan menentukan tingkat hak istimewa Container menjadi sangat penting untuk memastikan system yang aman.