Arsitektur Perangkat Lunak Docker
Apa itu Docker?
Dikutip dari AWS, Docker merupakan platform perangkat lunak yang memungkinkan kita membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas perangkat lunak 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, kita dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode Anda akan berjalan.
Docker ini merupakan project open source dengan menyediakan jenis platform terbuka yang digunakan untuk developer juga administrator admin, supaya pengembang bisa membangun, mengemas, serta menjalankan berbagai aplikasi dalam lokasi manapun sebagai sebuah container yang bersifat ringan.
Docker ini dianggap sebagai solusi dari permasalahan yang kerap dialami para pengembang untuk mengembangkan aplikasi mereka agar bisa berjalan fleksibel di berbagai lingkungan.
Perkembangan Docker
Pada DockerCon 2017 lalu, CEO Docker, Ben Golub mengungkapkan bahwa Docker mengalami peningkatan penggunaan sejak tiga tahun terakhir. Sudah lebih dari 14 ribu host Docker, lebih dari 900 ribu aplikasi Docker, dan pertumbuhan pada tawaran pekerjaan yang berhubungan dengan Docker tumbuh sebesar 77 ribu. Angka ini menunjukan bahwa semakin lama Docker sudah mulai menjadi pilihan para developer untuk mengembangkan aplikasi miliknya.
Mengapa Menggunakan Docker?
- Memungkinkan mengirimkan kode lebih cepat
- Menstandardisasi operasi aplikasi
- Memindahkan kode dengan lancar
- Menghemat uang dengan meningkatkan pemanfaatan sumber daya
- Mendapatkan satu objek yang dapat dijalankan di mana saja
- Sintaks Docker yang sederhana dan lugas memberi kita kontrol penuh
Siapa yang Menggunakan Docker?
Menurut data yang dikeluarkan oleh situs Datadog, ditemukan bahwa perpindahan sistem lama yang diganti ke Docker dimulai oleh perusahaan-perusahaan besar yang memiliki lebih dari 500 hosts. Beberapa perusahaan lebih memilih menggunakan arsitektur dengan beban kerja yang ringan dan portabel oleh karena itu, Docker dapat menjadi solusi dari kebutuhan itu. Selain itu mereka juga mencari arsitektur yang mudah untuk mendistribusikan aplikasi yang sedang dalam proses pengembangan pada segala lingkungan.
Fitur Docker
- 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.
Komponen pada Docker
- Docker image: file berisi informasi dan petunjuk untuk membangun kontainer. Image juga berfungsi untuk menggunakan dan mengirimkan informasi.
- Container: lingkungan untuk mengemas dan menjalankan aplikasi. Container mencakup kode, runtime, system tools, dan pengaturan. Container hanya bisa mengakses resource yang telah ditentukan dalam docker image.
- Docker client: tempat pengguna dapat mengirimkan berbagai perintah kepada Docker daeomon.
- Docker Engine Rest API: untuk berinteraksi dengan Docker daemon. Docker Engine Rest API bisa diakses klien melalui HTTP.
- Docker host: menyediakan lingkungan yang lengkap untuk menjalankan aplikasi yang bertanggung jawab terhadap penerimaan perintah yang diberikan Docker client.
- Docker daemon: 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.
- Docker Hub: layanan untuk menemukan dan berbagi gambar container dengan tim.
Cara Kerja Docker
Pertama, Docker client akan memberikan perintah yang perlu dilakukan kepada Docker daemon melalui Rest API.
Seperti yang terlihat dari tanda panah, docker build berfungsi untuk membangun image. Docker pull berperan mengunduh atau menarik image dari registry. Sedangkan docker run akan menjalankan proses dalam container.
Docker daemon akan mendengarkan perintah yang diberikan, kemudian menjalankan perintah dengan mengelola objek seperti image, containers, dan lain-lain.
Keunggulan Docker
- Konfigurasi yang diterapkan cukup sederhana dan bisa disesuaikan dengan kebutuhan aplikasi yang sedang dikembangkan. Docker bisa membuat environment sendiri yang berbeda dengan lingkungan server utama meskipun hanya dengan beberapa baris kode.
- Docker cukup fleksibel karena dapat dijalankan di berbagai platform cloud.
- Saat melakukan upgrade komponen biasanya seluruh lingkungan akan dipecah. Jika terjadi masalah pada proses tersebut, Docker mempunyai fitur agar bisa langsung melakukan rollback ke versi sebelumnya melalui image Docker. Sehingga Docker ini bekerja lebih cepat dibandingkan dengan Virtual Machine. Hal ini dikarenakan Docker melakukan standarisasi lingkungan dengan memastikan konsistensi di beberapa proses pengembangan dan pembaruan versi.
- Dapat Melakukan Pengujian dan Distribusi Aplikasi Secara Terus Menerus
- Docker memastikan aplikasi yang berjalan tidak bisa mempengaruhi kontainer atau bahkan memberikan kontrol penuh atas manajemen dan arus lalu lintas.
Sekian penjelasan singkat mengenai Arsitektur Perangkat Lunak Docker. Semoga bermanfaat.