Container Orhestration

Kelly William
Basic People
Published in
3 min readApr 30, 2019

Container Orchestration merupakan salah satu hal yang diperlukan untuk mentransisikan deploy container individual dalam 1 host menjadi deploy complex multi-container ke banyak hosts. Diperlukan sebuah distribusi platform, yang berdiri sendiri (independen), yang dapat tetap menyala selama aplikasi masih berjalan, dapat menghindari eksternal dan internal error.

Terdapat 2 pilihan / cara untuk dapat menjalankan Container Orchestration:

  • Menambah beberapa karyawan berupa technology experts untuk membangun sebuah sistem yang complex.
  • Bergantung pada perusahaan lain yang memiliki technology experts yang dapat membangun sistem selama dapat menyuplai seluruh hardware, services, support, dan software untuk mereka (Lock-in)

NB: Lock-in merupakan suatu kondisi dimana munculnya ketergantungan (dependensi) pada suatu orang dikarenakan orang tersebut dapat membuat sesuatu yang dibutuhkan sehingga kebetuhannya akan selalu dipenuhi.

Kedua pilihan tersebut akan menghabiskan modal yang tidak sedikit.

How do we counter lock-in? Docker Orchestration!

Docker Orchestration merupakan salah satu container orchestration yang disediakan oleh Docker .Docker Orchestration menyediakan platform yang dapat digunakan oleh semua orang, tanpa harus terjadi lock-in. Di dalam Docker telah ditambahkan fitur yang membuat pengerjaan multi-host dan multi-container orchestration lebih gampang. Fitur yang disediakan adalah API Objects (Services dan Nodes) untuk menggunakan Docker API untuk deploy dan manage aplikasi dalam beberapa Docker Engines yang dinamakan SWARM.

What is so special in Docker Orchestration?

Container orchestration dalam Docker menjadi lebih gampang untuk diimplementasikan, lebih portabel, aman, fleksibel, dan cepat apabila di build didalam platform.

Terdapat 4 Principle dalam Docker:

  • Simple Yet Powerful Orchestration merupakan bagian inti dari sebuah aplikasi yang terdistribusi.
  • Resilient — Sistem harus dapat beradaptasi apabila terdapat kegagalan / error
  • Secure — Terdapat beberapa fitur yang hanya dapat diakses oleh orang-orang tertentu
  • Optinal Features and Backward Compability — Dapat memilih fitur mana saja yang akan ditambahkan / dimasukkan (mengurangi overhead)

Swarm?

Swarm merupakan sebuah self-healing group of engines

Command: docker swarm init

Ketika command tersebut dijalankan, terbentuknya sebuah raft, sebuah kelompok dari satu node. Node paling pertama memiliki role manager, yang bertanggungjawab dalam menerima commands dan task scheduler. Node-node berikutnya yang masuk kedalam swarm secara default akan memiliki role worker, yang bertanggungjawab dalam mengeksekusi containers yang diberikan oleh manager. Agar dapat melakukan scheduling secara efisien, diperlukan raft store yang dapat membaca secara langsung dari memori.*Node manager dapat ditambahkan lebih dari 1.

One Decentralized Building Block — Hubungan antara Raft (Store), Manager, dan Worker

Membuat Scaling Services

Dalam melakukan run suatu container (docker run), kita dapat mulai mereplikasi, mendistribusi, dan memuat proses-proses di swarm dengan menggunakan docker service.

Command: docker service create ‘nama-app’ [COMMANDS].

Contoh command: docker service create frontend -p 80:80/tcp nodes:8.15.1-jessie-slim

Setiap task yang diberikan memiliki progress: starting → pending/new → assigning → preparing → ready

Command diatas menyatakan keadaan yang diinginkan pada swarm untuk dapat dijangkau sebagai satu kesatuan, yang memuat secara internal pada port 80 dari setiap node pada swarm.

Meningkatkan scalability dapat menggunakan command: docker service scale frontend=”jumlah scale”

Sekian yang dapat saya sampaikan mengenai Container Orchestration, terima kasih telah membaca!

--

--