Docker Orchestration: Containerize Application
Dalam dunia bisnis teknologi informasi, kita sebagai manusia yang hidup zaman modern harus beradaptasi dengan perkembangan yang sangat cepat ini. Dari perkembangan tersebut menyebabkan developer harus membuat suatu sistem yang fleksibel dan bisa menjadi wadah bagi berbagai jenis aplikasi. Sistem yang sangat bermanfaat dalam pengembangan suatu proyek aplikasi salah satunya ialah Docker.
Apa itu Docker?
Yang pastinya istilah docker ini tidak asing pada pengembang software khususnya pada posisi backend ataupun devops. Apa itu Docker ? Docker adalah platform atau aplikasi yang bersifat open source untuk memasukkan dan menyatukan beberapa file software yang disatukan ke dalam suatu wadah atau biasa disebut dengan container. Apa yang dimaksud container ? Container tersebut nantinya akan memuat kumpulan image yang berisi data konfigurasi dan file pendukung lainnya. Docker digunakan sebagai solusi bagi tim developer dalam mengembangkan aplikasi di berbagai environment yang ada.
Apa Kegunaan Docker?
Dari definisi ada beberapa fungsi umum yang dimiliki oleh Docker, diantara sebagai berikut:
- Menunjang Produktivitas Developer
Fungsi pertama ini memiliki makna mampu untuk menunjang kinerja dalam melakukan tahapan development produk aplikasi secara efektif dan mencapai target produksi yang optimal. Dengan docker ini, mempermudah dalam menjalankan beberapa layanan sekaligus dan cocok untuk pengerjaan proyek berskala menengah ke atas.
2. Tahap Konfigurasi yang Sederhana
Pada tahap ini docker memiliki keunggulan yang sama yaitu virtual machine. Adanya proses konfigurasi yang sederhana dalam banyak lingkungan, mampu untuk memisahkan kebutuhan infrastruktur pada aplikasi tersebut.
3. Manajemen Kode Pipeline
Terdapat platform yang memberikan kemudahan dalam proses pengembangan kode, penyaluran pada pipa, hingga fase pengembangan di tahap produksi. Untuk itulah, Docker menjadi salah satu solusi untuk mengatasi permasalahan dalam mengelola pipeline code.
4. Dapat Digunakan dalam Debugging Mode
Pada tahap ini kita menggunakan fitur debugging mode, dimana setiap pengembang hanya perlu waktu sekitar semenit saja untuk dapat melakukan proses debug pada Sandbox. Kelebihan yang lain, anda dapat menggunakan atau beralih untuk mencoba versi yang baru pada situs web tersebut.
5. Mendukung Pengembangan Platform Multi-Cloud
Docker Container dapat berjalan segala jenis layanan cloud yang ada, serta memungkinkan sebuah aplikasi mampu di-porting antar environment dengan mudah.
Features of the docker
Berikut merupakan ada beberapa fitur Docker antara lain :
- Docker Engine, digunakan untuk membangun Docker images dan membuat kontainer Docker.
- Docker Hub, registry yang digunakan untuk berbagai macam Docker images
- Docker Compose, digunakan untuk mendefinisikan aplikasi menggunakan banyak kontainer Docker.
- Docker untuk Mac, memungkinkan menjalankan kontainer Docker pada Mac.
- Docker untuk Linux, memungkinkan menjalankan kontainer Docker pada Linux.
- Docker untuk Windows, memungkinkan menjalankan kontainer Docker pada Windows.
Components dalam Docker
ada beberapa komponen yang perlu kita ketahui di docker sebelum mengetahui cara kerja docker:
- Docker image, merupakan file berisi informasi dan petunjuk untuk membangun container. Image juga berfungsi untuk menggunakan dan mengirimkan informasi;
- Container, adalah lingkungan untuk mengemas dan menjalankan aplikasi. Ini mencakup kode, runtime, system tools, dan pengaturan. Container hanya bisa mengakses resource yang telah ditentukan dalam docker image;
- Docker client, yaitu tempat di mana pengguna dapat mengirimkan perintah seperti docker build, docker pull, dan docker run kepada Docker daeomon;
- Docker Engine Rest API, digunakan untuk berinteraksi dengan Docker daemon. Ini bisa diakses klien melalui HTTP;
- Docker host, menyediakan lingkungan yang lengkap untuk menjalankan aplikasi. Dia bertanggung jawab terhadap penerimaan perintah yang diberikan Docker client;
- Docker daemon, yaitu proses pengelolaan Docker images, kontainer, network, dan storage volumes. Docker daemon menerima request dari Docker API dan akan memprosesnya;
- Docker registry, wadah untuk menyimpan Docker image. Docker image akan memberi reaksi sesuai perintah yang diberikan. Misalnya saat diberi perintah docker push, docker image akan didorong atau dibagikan ke registri Docker Hub;
- Docker Hub adalah layanan yang disediakan untuk menemukan dan berbagi gambar container dengan tim.
Apa itu Docker Orchestration ?
Docker / Container Orchestration ini sebenarnya adalah mengurus daur hidup dari container-container yang ada, yang ada dalam environment yang dinamik. Contoh orchestrator yang dikenal kalangan masyarakat luas, salah satunya adalah kubernetes, docker swarm, apache mesos, dll.
Tujuan Menggunakan Docker Orchestration
Tentu banyak tujuan yang bisa tercapai dengan menggunakan docker orchestration antara lain untuk memperoleh fungsi 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
Implementasi Docker pada PPL
Saya mencoba mengimplementasikan docker pada PPL (Proyek Perangkat Lunak) yaitu Laywook aplikasi koperasi online. Berikut struktur dari proyek kita.
Pertama-tama membuat Dockerfile yaitu tempat menspesifikasikan image kita. Pada code dibawah saya membuat image dengan base python image yang sudah ada, lalu membuat folder bernama code yang nantinya akan menyimpan keseluruhan aplikasi.
Setelah itu membuat docker-compose.yml dengan konfigurasi untuk membuat image yang sudah dispesifikan pada Dockerfile dan menspesifikan container yang akan menjalankan image tersebut. Yang dispesifikan antara lain command untuk menjalankan server, volumes, ports redirect, dan depends_on yang artinya server (container web) ini depends dengan container lain. Container lain yaitu database postgres.
Setelah itu menjalankan docker-compose up. Dan terlihat image akan terbuat dan selanjutnya container akan dijalankan.
Dan terlihat dibawah server telah berjalan, dan server pun berjalan.