Docker Orchestration: What is it and Why Use Docker

sumber: https://upcloud.com/community/tutorials/docker-swarm-orchestration/
This article was written as an Individual Review assignment for PPL Computer Science Universitas Indonesia 2021

Intermezzo

Docker mungkin belum cukup awam di banyak para programmer terutama yang masih pemula. Ada pengalaman saya mengenai deployment yang merupakan menjadi salah satu irisan dari implementasi Docker. Saya dan beberapa teman saya memberanikan diri untuk mengambil proyek aplikasi pertama kita kepada suatu pihak eksternal untuk sebuah perusahaan, yang dimana tujuan kami untuk mengisi liburan kami agar lebih produktif. Kami sebelumnya sudah memiliki pengalaman mengenai pembuatan website dari 0, tetapi ada satu hal yang belum kami punya pengalaman sama sekali, yaitu adalah deployment ke sebuah hosting berbayar.

Kami pun belajar sambil mengerjakannya yang cukup memakan waktu dimana untuk deployment ke suatu server terbatas hanya ke suatu bahasa pemrograman yang spesifik, karena banyaknya instalasi dependecy yang harus dilakukan untuk tiap bahasa pemrograman yang berbeda. Sangat memakan waktu dan tidak efektif terutama bagi kami yang masih sambil belajar untuk melakukannya. Perlu juga untuk melakukan setup server lagi dari awal untuk penggunaan tiap server yang berbeda juga menjadi kendala bagi kami.

Belajar dari pengalaman proyek sebelumnya, kami akhirnya mencari jalan alternatif yang lebih mudah dan tidak memakan waktu. Pada kesempatan inilah saya menemukan Docker sebagai solusinya. Docker sangat membantu jalannya deployment karena tidak perlu melakukan instalasi dependency dari awal di tiap server dan mudah untuk dilakukan scalingnya. Saya hanya perlu melakukan satu hal yang bisa melakukan itu semua, apa itu? mari kita lanjutkan di bagian selanjutnya.

WHY using DOCKER?

Kenapa kita perlu menggunakan Docker? mungkin itu pertanyaan yang sering muncul di benak para developer pemula yang baru mendengarnya. Secara mudahnya docker bisa dibilang mirip dengan virtual machine meskipun ada beberapa perbedaannya dari fitur yang diberikannya. Sudah banyak orang yang mengetahui virtual machine, itu mengapa saya membandingkan docker dengan virtual machine untuk mempermudah pembaca membayangkan kenapa kita harus menggunakan docker. Perbedaan antara docker dan virtual machine adalah , di docker diizinkan untuk semua aplikasi yang ada di dalamnya untuk bisa berjalan di suatu linux kernel sehingga jika kita menggunakan container docker maka aplikasi yang kita jalankan bisa berjalan di berbagai linux kernel yang sesuai dengan server yang tersedia.

Perbedaannya dengan Virtual Machine

sumber: https://www.weave.works/blog/a-practical-guide-to-choosing-between-docker-containers-and-vms

Docker container dan virtual machine adalah dua cara untuk deploying aplikasi di dalam environments yang diisolasi dari hardware yang mendasarinya. Perbedaan utama adalah tingkat isolasi.

Dengan runtime container seperti Docker, aplikasi Anda berada dalam sandbox di dalam fitur isolasi yang disediakan container, tetapi masih berbagi kernel yang sama dengan container lain di host yang sama. Akibatnya, proses yang berjalan di dalam container terlihat dari system host. (diberi privileges yang cukup untuk mendaftar semua processes). Jika di virtual machine perlu dilakukan instalasi kembali operating system-nya, tetapi jika kita menggunakan container docker maka kita tidak perlu melakukan hal itu. Di container akan dilakukan semua aplikasi dibuat untuk bisa menjalankan sistem operasi yang digunakan container manager tersebut. Hal ini mengakibatkan untuk penggunaan container menjadi lebih murah dari segi biaya dan waktu lebih cepat dikarenakan tidak perlu melakukan instalasi tambahan untuk setiap sistem operasi dan menjalankan eksekusi operasi langsung di induk sistem operasi sehingga bisa lebih cepat dilakukan eksekusi.

Container adalah pilihan yang baik untuk sebagian besar workload aplikasi. Pertimbangkan kontainer secara khusus jika hal — hal berikut ini merupakan prioritas:

Start time

Container Docker biasanya dimulai dalam beberapa detik atau kurang, sedangkan virtual machine dapat membutuhkan waktu beberapa menit.

Efisiensi

Karena container Docker berbagi banyak resource dengan host sytem, mereka membutuhkan lebih sedikit dependency untuk diinstal agar dapat dijalankan. Dibandingkan dengan virtual machine, sebuah container docker biasanya membutuhkan lebih sedikit space dan menggunakan lebih sedikit RAM dan waktu CPU.

WHAT is DOCKER?

Docker adalah platform perangkat lunak yang memungkinkan Anda membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas software ke dalam unit standar yang disebut kontainer yang memiliki semua yang diperlukan perangkat lunak agar dapat berfungsi termasuk pustaka, alat sistem, kode, dan waktu proses. Dengan menggunakan Docker, Anda dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode Anda akan berjalan.

Docker Components

Docker terdiri dari beberapa komponen:

  • Docker image:komponen ini berisi mengenai informasi dari dependency, konfigurasi, operating system, dan lainnya yang dibutuhkan untuk membuat software berjalan. Komponen ini berguna sebagai blueprint untuk membuat sebuah container.
  • Docker container: sebuah instance dari satu docker image
  • Dockerfile: Sebuah file yang terdiri dari beberapa commands untuk mem-build docker image
  • Compose file: File yang akan melakukan compile beberapa container menjadi ke satu unit service.

HOW to USE DOCKER?

Pada tugas PPL kita tidak menggunakan docker sendiri, kita hanya menggunakan docker image open-source yang sudah secara khusus digunakan untuk flutter development.

Untuk contoh implementasi bagaimana menggunakan docker, saya akan menggunakan contoh implementasinya di mata kuliah ERP yang sedang saya ambil sekarang. Di ERP, saya menggunakan docker untuk menjalankan aplikasi ERP Odoo 12.

Pertama saya akan membuat file compose file docker yang akan melakukan compile beberapa container yang akan digunakan untuk menjalankan odoo 12

Disini saya akan menjalankan docker image odoo 12 dengan OS linux/amd64

setelah itu saya menjalankan dua docker imagenya yaitu database dan docker web untuk menjalankan odoo 12 melalui browser

Disini Odoo 12 menggunakan postgreSQL sebagai databasenya

Sekarang saya akan menjalankan compile file docker untuk menjalankan container menjadi sebuah satu unit service yang terintegrasi

Setelah berhasil di compile, maka kita bisa menjalankan Odoo 12 melalui browser di port localhost

Kalu ingin dimatikan, kita hanya perlu mematikan melalui button stop di aplikasi dockernya

Dan berhasil, maka odoo 12 tidak bisa dijalankan kembali melalui browser kita.

Bisa dilihat dari implementasi sebelumnya, kita untuk deploying hanya perlu untuk menjalankan docker image dan compile file dockernya saja untuk menjalankan aplikasinya.

WHAT is DOCKER ORCHESTRATION?

Kita sebelumnya sudah belajar mengenai docker dan bagaimana melakukan implementasinya. Ada satu masalah yang belum kita coba, yaitu adalah menjalankan banyak sekali container dan layanan aplikasi. Karena di real work implementasinya, bakal banyak sekali layanan aplikasi yang akan dijalankan, sehingga ada satu solusi yang bisa menangkal masalah ini yaitu adalah docker (container) orchestration untuk menjalankan banyak layanan aplikasi yang skalanya sudah besar.

Pada dasarnya, docker orchestration tools meng-otomatiskan dan mengelola banyak moving pieces yang terkait dengan layanan mikro dalam aplikasi besar, termasuk scheduling dan mengatur tugas-tugas berikut:

  • Konfigurasi dan scheduling containers
  • Penyediaan dan penerapan container
  • Scaling container untuk menyeimbangkan workloads
  • Mengalokasikan container resources
  • Load balancing atau traffic routing
  • Manajemen cluster
  • Penemuan Service
  • Health monitoring untuk containers dan hosts
  • Shifting containers karena host yang unavailable atau kurangnya resources
sumber: https://devopedia.org/container-orchestration

Container Orchestration Tools: Kubernetes

Container orchestration tools menyediakan sebuah framework untuk me-manage containers dan microservices arsitektur dengan skala. Ada banyak container orchestrations tools yang bisa digunakan untuk manajemen container lifecycle, beberapa yang terkenal adalah kubernetes, docker swarm, dan apache mesos. Saya mungkin akan menjelaskan secara singkat salah satunya yaitu adalah Kubernetes. Kubernetes adalah sebuah open source container orchestration tools yang di develop secara asli dan desain oleh engineers di google.

sumber: https://newrelic.com/blog/how-to-relic/what-is-kubernetes

Kubernetes orchestration mengizinkan kita untuk mem-build aplikasi services yang berjalan diatas multiple containers, schedule containers di berbagai cluster, melakukan scaling ke containers tersebut, dan me-manage health over timenya masing — masing. Kubernetes mengeliminasi banyak proses manual yang terdapat di dalam proses deployment dan untuk scaling containerized applications.

That’s all! Thanks for your time in reading this article!

To connect with me, you can connect with my LinkedIn

REFERENCES

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Muhammad Iqbal Wijonarko

Muhammad Iqbal Wijonarko

More from Medium

Save Water and Electricity with IoT-based Alert System

How to Upload files to s3 using Python||AWS

python || AWS

Highlights of UiPath 2021.10 & UiPath Platform Configuration Tool