Docker Orchestration

Tirta Hema
Basic People
Published in
4 min readApr 30, 2019

Pada story kali ini saya akan banyak membahas tentang Docker. Docker adalah salah satu platform yang dibangun berdasarkan teknologi container. Docker merupakan sebuah project open-source yang menyediakan platform terbuka untuk developer maupun sysadmin untuk dapat membangun, mengemas, dan menjalankan aplikasi dimanapun sebagai sebuah wadah (container) yang ringan. Dengan sangat populernya docker, sebagian orang sering menganggap docker adalah sebutan lain untuk container.

Docker berguna untuk melakukan virtualisasi pada tingkat OS. Aplikasi yang beerjalan pada docker biasanya lebih cepat dan efisien karena Docker adalah lightweigh platform yang memakan memori sangat sedikit karena tidak perlu menyiapkan OS secara penuh. Docker menjalankan aplikasi bertipe image. Darimana image itu didapat ? Image didapat setelah ketika aplikasi react sudah melewati tahap docker build

Ada beberapa keuntungan pada saat kita menggunakan docker ;

  1. aplikasi selalu jalan dalam environment yang sama (local computer atau server)
  2. Terdapat fitur sandbox yang menjamin aplikasi berjalan tanpa ada gangguan dari enviroment host
  3. Mudah untuk menjalankan semua dependecies-nya

Docker dibangun berdasarkan empat prinsip ini :

Simple Yet Powerful — Orchestration is a central part of modern distributed applications; it’s so central that we have seamlessly built it into our core Docker Engine. Our approach to orchestration follows our philosophy about containers: no setup, only a small number of simple concepts to learn, and an “it just works” user experience.

Resilient — Machines fail all the time. Modern systems should expect these failures to occur regularly and adapt without any application downtime that’s why a zero single-point-of-failure design is a must.

Secure — Security should be the default. Barriers to strong security — certificate generation, having to understand PKI — should be removed. But advanced users should still be able to control and audit every aspect of certificate signing and issuance.

Optional Features and Backward Compability — With millions of users, preserving backwards compatibility is a must for Docker Engine. All new features are optional, and you don’t incur any overhead (memory, cpu) if you don’t use them. Orchestration in Docker Engine aligns with our platform’s batteries included but swappable approach allowing users to continue using any third-party orchestrator that is built on Docker Engine.

Pada dunia nyata banyak perusahaan yang mempunyai ratusan aplikasi dan mungkin mempunyai banyak container. Hal ini tidak mungkin kita atur satu per satu karena akan sangat repot dan memakan waktu yang sangat banyak. Sehingga kita memerlukan Docker Orchestration, Docker Orchestration adalah hal-hal yang dibutuhkan untuk melakukan deploy dari container individual pada single host ke multi container apps pada banyak mesin. Hal ini membutuhkan platform terdistribusi, independen dari infrastruktur dan selalu online, dan bisa bertahan dari kegagalan hardware dan software update.

Tujuan penggunaan docker orchestration

Provisioning and deployment of containers

Redundancy and availability of containers

Scaling up or removing containers to spread application load evenly across host infrastructure

Movement of containers from one host to another if there is a shortage of resources in a host, or if a host dies

Allocation of resources between containers

External exposure of services running in a container with the outside world

Load balancing of service discovery between containers

Health monitoring of containers and hosts

Configuration of an application in relation to the containers running it

Bagaimana cara Kerja Docker Orchestration ?

Cara kerja Docker Orchestration hampir sama pada docker biasa. Pertama kita harus melakukan konfigurasi pada file JSON/YAML tergantung orchestration tool yang kita pakai. konfigurasi ini akan mengatur bagiamana membangun koneksi antar docker, dimana mengumpulkan container images, dan berapa volume storage yang akan kita gunakan. Pada umumnya sebuah tim developer akan membuat branch pada vesion control system sehingga mereka bisa melakukan deploy pada aplikasi yang sama tetapi pada environment yang berbeda sebelum mereka melakukan deploy pada production cluster (jika pada PPL ini dapat diartikan pada staging atau master). Pada saat container sudah berjalan pada host, orchestration akan melakukan perintah-perintah sesuai dengan konfigurasi. Keuntungan dari penggunaan orchestration adalah kita dapat menggunakan dalam environment apapun.

Aplikasi-aplikasi penunjang

Pada pengerjaan proyek kelompok kami, kami hanya mengerjakan bagian front-end jadi tidak memerlukan pengaturan server dan lain-lain seperti yang bisa dilakukan pada docker orchestration. Pada proyek ini kami awalnya menggunakan engine x, engine x kami gunakan untuk routing pada saat pembuatan image di docker, dan untuk mengatur agar tidak ada CORS error pada saat penggunaan API yang disediakan. Tetapi pada saat berjalan kami tidak menggunakan engine x karena mengalami kesulitan jika routing pada engine x dan tidak menggunakan lagi API sehingga tidak memerlukan aplikasi untuk mencegah CORS error.

Contoh dari Docker Orchestration:

  1. Kubernetes
  2. Swarm
  3. Apache Meos

Setiap docker orchestrartion mempunyai kelebihan dan kekurangan masing-masing kita harus memilih sesuai kebutuhan kita dan tidak memaksakan untuk menggunakan salah satu orchestration walaupun tidak sesuai dengan kebutuhan kita.

--

--

Tirta Hema
Basic People

Learn to write about anything related to my life (business and tech, food, etc)