Beberapa waktu yang lalu, saya melakukan sebuah pembelajaran mengenai Kubernetes yang dipunyai oleh Google yang sekarang menjadi software Cloud Native Computing Foundation project dimana dapat dikembangkan secara luas oleh komunitas maupun perseorangan. Namun sebelum masuk pembelajarannya kita mesti tahu terlebih dahulu mengenai Container & Container Orchestration, definisi dan cara kerjanya seperti apa.
Adapun Container dan Container Orchestration adalah dua hal yang berbeda namun saling terkait. Berikut adalah definisinya:
Apa itu Containers?
Containers adalah aplikasi yang didisain secara khusus untuk memiliki kinerja yang tinggi dan dapat dikembangkan dengan mudah pada infrastruktur pilihan Anda. Adapun beberapa diantaranya adalah Docker, Containerd & CRI-O, namun biasanya saya menggunakan Docker karena mendukung Kubernetes untuk pembelajaran saya selanjutnya.
Apa itu Container Orchestration?
Container Orchestration adalah sebuah tools yang dapat melayani host dalam sebuah group dan membentuk sebuah cluster serta membantu kita memenuhi layanan sebagai berikut:
- Bisa Fault-Tolerant
- Bisa discale up secara mudah dan on-demand process
- Memakai resources secara maksimal
- Dapat menemukan & berkomunikasi secara otomatis dengan aplikasi yang kita bangun dalam satu cluster satu sama lain
- Dapat diakses oleh seluruh dunia
- Bisa update/rollback tanpa adanya Downtime
Biasanya yang dapat melayani Containers Orchestration adalah diantaranya sebagai berikut:
- Docker Swarm, diprovide oleh Docker Inc. secara langsung dan bagian dari Docker Engine
- Kubernetes, dimulai oleh Google dan sekarang adalah bagian dari project Cloud Native Computing Foundation
- Mesos Marathon, salah satu frameworks yang dapat melakukan scale up pada Apache Meso
- Amazon EC2 Container Service (ECS), bagian dari AWS yang dapat menjalankan Docker Containers pada Infrastrukturnya
- Hashicorp Nomad, diprovide oleh Hashicorp.
Tujuan Menggunakan Container Orchestration
Adapun tujuan kita menggunakan Container Orchestration adalah untuk membantu kita dengan fungsi sebagai berikut:
- Membuat Multiple Server dan menjadikannya sebagai Cluster
- Schedule beberapa container agar berjalan dihost yang berbeda
- Membantu menjalankan container pada salah satu host namun bisa dengan mudah berpindah pada host yang lain
- Menghubungkan container dengan storage
- Menghubungkan container dengan conteiner serupa namun dengan higher-level construct, seperti services. Biasanya tidak bisa dilakukan dengan individual containers
- Menjaga resources agar tetap dicek secara berkala dan dapat dioptimasi secara otomatis jika diperlukan
- Mengijinkan aplikasi untuk menjalankan keamanan lebih tinggi didalam containers
Kurang lebih seperti itu yang saya pelajari sebelum masuk ke dalam pembelajaran Kubernetes. Selanjutnya saya akan membuat seri tutorial mengenai Kubernetes.
Sampai ketemu di artikel selanjutnya~~