Container Types and Use Cases
PaaS menggabungkan dua jenis container dalam satu platform. Teknologi containerisasi ini diarahkan untuk memecahkan masalah yang berbeda, tetapi orkestrasi platform mewarisi manfaat dari kedua implementasi.
- System Containers - salah satu jenis container tertua, mirip dengan virtual machines. Ini adalah solusi berstatus dengan pusat sistem operasi yang dapat menjalankan beberapa proses. System containers biasanya digunakan untuk aplikasi tradisional atau monolitik, karena memungkinkan untuk hosting arsitektur, alat, dan konfigurasi yang diimplementasikan untuk VMs. Ada beberapa implementasi dari system containers: LXC/LXD, OpenVZ/Virtuozzo, BSD jails, Linux vServer, dan beberapa lainnya. Platform menggunakan solusi Virtuozzo.
- Application Containers - jenis container yang relatif baru, yang biasanya menjalankan satu proses di dalamnya. Ini adalah solusi stateless dengan pusat microservice yang mudah diskalakan secara horizontal. Application containers paling cocok untuk infrastruktur yang tidak dapat diubah atau sementara. Beberapa implementasi application container tersedia di pasar: Docker, containerd, CRI-O, dan beberapa lainnya. Platform menggunakan Docker sebagai teknologi yang paling banyak diadopsi untuk application containers.
Berbicara tentang containers saat ini, orang sering memikirkan teknologi Docker, karena sangat dipromosikan dan diadopsi selama beberapa tahun terakhir. Sebagian besar vendor cloud menawarkan Docker application containers di dalam Virtual Machines. Setiap VM menyertakan Guest OS dengan memori, CPU, dan jejak disk sendiri yang meningkatkan jumlah sumber daya yang diperlukan untuk menjalankan aplikasi dan dengan demikian membuat hostingnya lebih mahal. Dalam kasus platform, teknologi Docker berjalan di dalam system containers dalam kernel yang sama. Dengan demikian, mereka berbagi sumber daya OS dari sistem operasi host dan mengurangi konsumsi. Dan meskipun lebih ringan daripada VMs, container berjenjang ini masih sangat terisolasi dan aman.
Dalam platform, berbagai jenis container dapat digunakan untuk berbagai kasus penggunaan:
- Certified Managed Containers
- Virtual Private Servers (Elastic VPS)
- Custom Docker Containers
- Docker Engine CE (Docker Native)
- Kubernetes Cluster
Di bawah ini kita akan meninjau setiap kasus secara rinci, serta memberikan beberapa petunjuk tentang opsi mana yang dapat lebih sesuai untuk proyek Anda.
Certified Managed Containers
Pilihan paling umum dan direkomendasikan untuk pelanggan platform adalah certified containers. Platform ini menawarkan berbagai pre-configured dan managed software stacks, yang memungkinkan pembuatan topologi yang fleksibel dengan server aplikasi yang diperlukan (Java, PHP, Node.js, Ruby, Python, atau Go), load balancer, databases, dan sebagainya.
Semua certified containers ini diuji dan dioptimalkan secara menyeluruh khususnya untuk skenario paling umum dalam platform ini. Tim PaaS secara teratur memperbarui software stacks ini ke versi stabil terbaru yang tersedia atau menerapkan patch keamanan untuk images container yang sudah dirilis.
Biasanya, container ini juga mendapatkan manfaat dari integrasi tambahan, seperti konfigurasi otomatis berdasarkan batas skala resource (cloudlet), instalasi sertifikat SSL otomatis, otomatisasi deployment aplikasi, auto-clustering bawaan, pengiriman update keamanan yang dikelola, dan lainnya.
Virtual Private Servers (Elastic VPS)
Contoh paling sederhana dari implementasi system container adalah virtual private server. Platform ini menawarkan Elastic VPS dengan sistem operasi yang sudah terinstal sebelumnya: CentOS, Ubuntu, dan Debian. Ini adalah container yang berbasis OS murni tanpa kustomisasi atau perangkat lunak tambahan yang terinstal. Ini bisa dianggap sebagai opsi yang paling cocok untuk meng-containerisasi aplikasi legacy karena memerlukan perubahan minimal atau tidak ada saat migrasi dari VMs.
Karena praktis "kosong" setelah instalasi, semua konfigurasi yang diperlukan harus dilakukan oleh pengguna akhir. Untuk membantu Anda dengan tugas ini, akses root diberikan ke Elastic VPS containers. Ini hampir seperti virtual machine tetapi lebih ringan dan dengan keuntungan dari skala vertikal dan horizontal otomatis.
Custom Docker Containers
Custom Docker Containers adalah Docker image (berdasarkan sistem operasi dan arsitektur yang didukung) yang dideploy di dalam platform system container, yang membuatnya kompatibel dengan sebagian besar (meskipun tidak semua) fitur pembeda platform, seperti built-in vertical and horizontal scaling. Dengan kata lain, filesystem dari custom Docker image Anda dibongkar di dalam runtime system container.
Dibandingkan dengan certified managed containers, opsi ini memberikan akses ke lebih banyak pilihan software stacks. Anda dapat memilih dari berbagai macam 3rd party Docker images yang tersedia di Docker Hub atau registri container publik atau privat kompatibel lainnya. Namun, operabilitas perangkat lunak dan kompatibilitas dalam platform tidak dapat dijamin karena dikelola oleh pemelihara image pihak ketiga yang bersangkutan.
Docker Engine CE (Docker Native)
Platform ini menyediakan dukungan untuk Docker Engine Community Edition yang berjalan di dalam system containers tetapi sekaligus memiliki kompatibilitas penuh dengan ekosistem Docker native.
Integrasi tersebut memungkinkan bekerja dengan alat inti teknologi container Docker, yaitu:
- Docker Engine - memproses manifes Dockerfile atau menjalankan container images yang sudah dibangun sebelumnya
- Docker Registry - menyimpan dan menyediakan akses ke sejumlah images publik dan privat, yang dimaksudkan untuk deployment dalam Docker Engine
- Docker Compose - membantu merakit aplikasi, yang terdiri dari beberapa komponen di mana semua konfigurasi yang diperlukan dideklarasikan dalam satu file compose
- Docker Swarm - mewakili beberapa Docker nodes independen, saling terhubung dalam satu cluster
Platform ini menyajikan versi pre-packaged dari solusi Docker Engine CE dan Docker Swarm Cluster dengan auto-clustering terintegrasi.
Kubernetes Cluster
Application containers dapat dijalankan dan dikelola dengan bantuan alat orkestrasi Kubernetes. Ini adalah platform open-source yang dirancang untuk deployment dan pengelolaan aplikasi containerized yang fault-tolerant. Ini dapat menangani tugas-tugas rumit dari orkestrasi container, seperti deployment, service discovery, rolling upgrades, self-healing, dan pengelolaan keamanan.
Implementasi PaaS Kubernetes mengotomatisasi instalasi cluster, konfigurasi, pembaruan, dan menyediakan beberapa layanan pre-integrated (misalnya, Weave CNI, CoreDNS, Traefik, dll).
Dengan kata lain, kami menjalankan Kubernetes dengan bantuan orkestrasi platform yang menyediakan interoperabilitas maksimum untuk proyek-proyek yang dirancang untuk Kubernetes sejak awal. Manfaat utama dari implementasi Kubernetes adalah model pay-per-use yang canggih yang menyelesaikan masalah right-sizing dan membuat hosting beberapa containers lebih hemat biaya.
Informasi tambahan tentang Kubernetes Cluster dapat dilihat melalui bagian dokumentasi yang sesuai:
- Kubernetes Overview
- Kubernetes Cluster Access
- Scaling Kubernetes on Application and Infrastructure Levels
- Kubernetes Helm Integration
- Kubernetes Volume Provisioner
Sekarang, Anda tahu tentang berbagai jenis container yang tersedia di platform, serta spesifikasinya yang dapat membantu memilih opsi yang paling sesuai untuk kebutuhan proyek Anda.