Mengapa Anda harus menggunakan Docker dan container

Sebuah buku yang diterbitkan pada tahun 1981, berjudul  Nailing Jelly to a Tree , menggambarkan perangkat lunak sebagai "samar dan sulit untuk dicengkeram". Itu benar pada tahun 1981, dan hampir empat dekade kemudian. Perangkat lunak, apakah itu aplikasi yang Anda beli atau yang Anda buat sendiri, tetap sulit diterapkan, sulit dikelola, dan sulit dijalankan.

Container Docker menyediakan cara untuk menguasai perangkat lunak. Anda dapat menggunakan Docker untuk membungkus aplikasi sedemikian rupa sehingga masalah penerapan dan waktu prosesnya — cara mengeksposnya di jaringan, cara mengelola penggunaan penyimpanan dan memori dan I / O, cara mengontrol izin akses — ditangani di luar aplikasi itu sendiri, dan dengan cara yang konsisten di semua aplikasi "dalam container". Anda dapat menjalankan container Docker di host yang kompatibel dengan OS (Linux atau Windows) yang menginstal runtime Docker.

Docker menawarkan banyak manfaat lain selain enkapsulasi, isolasi, portabilitas, dan kontrol yang praktis ini. Kontainer Docker berukuran kecil (megabyte). Mereka mulai secara instan. Mereka memiliki mekanisme bawaan sendiri untuk pembuatan versi dan penggunaan kembali komponen. Mereka dapat dengan mudah dibagikan melalui Docker Hub publik atau repositori pribadi.

Dalam artikel ini, saya akan menjelajahi bagaimana kontainer Docker membuatnya lebih mudah untuk membangun dan menerapkan perangkat lunak — masalah yang ditangani kontainer, bagaimana mereka mengatasinya, kapan mereka adalah jawaban yang tepat untuk masalah, dan kapan tidak.

Sebelum kontainer Docker

Selama bertahun-tahun sekarang, perangkat lunak perusahaan biasanya telah digunakan baik di "bare metal" (yaitu diinstal pada sistem operasi yang memiliki kendali penuh atas perangkat keras yang mendasarinya) atau di mesin virtual (yaitu diinstal pada sistem operasi yang berbagi perangkat keras yang mendasarinya) dengan sistem operasi "tamu" lainnya). Secara alami, menginstal pada bare metal membuat perangkat lunak sangat sulit untuk dipindahkan dan sulit untuk diperbarui — dua kendala yang menyulitkan TI untuk menanggapi perubahan dalam kebutuhan bisnis dengan gesit.

Kemudian virtualisasi datang. Platform virtualisasi (juga dikenal sebagai "hypervisor") memungkinkan beberapa mesin virtual berbagi satu sistem fisik, setiap mesin virtual meniru perilaku seluruh sistem, lengkap dengan sistem operasi, penyimpanan, dan I / O-nya sendiri, secara terpisah . TI sekarang dapat merespons perubahan dalam kebutuhan bisnis secara lebih efektif, karena VM dapat dikloning, disalin, dimigrasi, dan diputar ke atas atau ke bawah untuk memenuhi permintaan atau menghemat sumber daya.

Mesin virtual juga membantu memangkas biaya, karena lebih banyak VM dapat dikonsolidasikan ke lebih sedikit mesin fisik. Sistem lama yang menjalankan aplikasi lama dapat diubah menjadi VM dan dinonaktifkan secara fisik untuk menghemat lebih banyak uang.

Tetapi mesin virtual masih memiliki masalah yang sama. Mesin virtual berukuran besar (gigabyte), masing-masing berisi sistem operasi lengkap. Hanya begitu banyak aplikasi tervirtualisasi yang dapat digabungkan ke dalam satu sistem. Penyediaan VM masih membutuhkan waktu yang cukup lama. Akhirnya, portabilitas VM terbatas. Setelah titik tertentu, VM tidak dapat memberikan kecepatan, kelincahan, dan penghematan seperti yang diminta oleh bisnis yang bergerak cepat.

Manfaat kontainer Docker

Penampung bekerja sedikit seperti VM, tetapi dengan cara yang jauh lebih spesifik dan terperinci. Mereka mengisolasi satu aplikasi dan dependensinya — semua library software eksternal yang diperlukan aplikasi untuk dijalankan — baik dari sistem operasi pokok maupun dari container lain. Semua aplikasi dalam container berbagi satu sistem operasi umum (baik Linux atau Windows), tetapi mereka dikelompokkan satu sama lain dan dari sistem pada umumnya.

Manfaat kontainer Docker muncul di banyak tempat. Berikut adalah beberapa keunggulan utama Docker dan container:

Docker memungkinkan penggunaan sumber daya sistem yang lebih efisien

Contoh aplikasi dalam container menggunakan memori yang jauh lebih sedikit daripada mesin virtual, mereka memulai dan berhenti lebih cepat, dan dapat dikemas jauh lebih padat di perangkat keras host mereka. Semua ini berarti lebih sedikit pengeluaran untuk TI.

Penghematan biaya akan bervariasi tergantung pada aplikasi apa yang sedang dimainkan dan seberapa intensif sumber daya mereka, tetapi container selalu bekerja lebih efisien daripada VM. Anda juga dapat menghemat biaya lisensi perangkat lunak, karena Anda memerlukan lebih sedikit instans sistem operasi untuk menjalankan beban kerja yang sama.

Docker memungkinkan siklus pengiriman perangkat lunak yang lebih cepat

Perangkat lunak perusahaan harus merespons dengan cepat kondisi yang berubah. Itu berarti penskalaan mudah untuk memenuhi permintaan dan pembaruan mudah untuk menambahkan fitur baru sesuai kebutuhan bisnis. 

Container Docker memudahkan untuk menempatkan versi baru perangkat lunak, dengan fitur bisnis baru, ke dalam produksi dengan cepat — dan dengan cepat mengembalikan ke versi sebelumnya jika Anda perlu. Mereka juga mempermudah penerapan strategi seperti penerapan biru / hijau.

Docker memungkinkan portabilitas aplikasi

Di mana Anda menjalankan aplikasi perusahaan penting — di balik firewall, demi menjaga keamanan dan keamanan; atau keluar di cloud publik, untuk akses publik yang mudah dan sumber daya yang elastis. Karena kontainer Docker merangkum semua yang dibutuhkan aplikasi untuk dijalankan (dan hanya hal-hal itu), kontainer memungkinkan aplikasi untuk dipindahkan dengan mudah antar lingkungan. Semua host dengan runtime Docker terinstal — baik itu laptop pengembang atau instance cloud publik — dapat menjalankan container Docker.

Docker bersinar untuk arsitektur layanan mikro

Ringan, portabel, dan mandiri, kontainer Docker mempermudah pembuatan perangkat lunak sesuai dengan garis pemikiran ke depan, sehingga Anda tidak mencoba memecahkan masalah masa depan dengan metode pengembangan kemarin.

Salah satu wadah pola perangkat lunak yang mempermudah adalah layanan mikro, di mana aplikasi dibuat dari banyak komponen yang digabungkan secara longgar. Dengan menguraikan aplikasi tradisional "monolitik" menjadi layanan terpisah, layanan mikro memungkinkan bagian berbeda dari aplikasi lini bisnis untuk diskalakan, dimodifikasi, dan dilayani secara terpisah — oleh tim terpisah dan pada lini masa terpisah, jika itu sesuai dengan kebutuhan bisnis. 

Container tidak diharuskan untuk mengimplementasikan layanan mikro, tetapi mereka sangat cocok untuk pendekatan layanan mikro dan untuk proses pengembangan yang gesit secara umum.

Masalah Wadah Docker tidak terpecahkan

Hal pertama yang perlu diingat tentang container adalah saran yang sama yang berlaku untuk teknologi perangkat lunak apa pun: Ini bukan peluru perak. Container Docker sendiri tidak dapat menyelesaikan setiap masalah. Khususnya:

Docker tidak akan memperbaiki masalah keamanan Anda

Perangkat lunak dalam wadah bisa lebih aman secara default daripada perangkat lunak yang dijalankan pada logam kosong, tetapi itu seperti mengatakan rumah dengan pintunya terkunci lebih aman daripada rumah dengan pintunya tidak terkunci. Tidak disebutkan apa-apa tentang kondisi lingkungan, keberadaan barang-barang berharga yang menggoda pencuri, rutinitas masyarakat yang tinggal di sana, dan sebagainya. Penampung dapat menambahkan lapisan keamanan ke aplikasi, tetapi hanya sebagai bagian dari program umum untuk mengamankan aplikasi dalam konteks.

Docker tidak mengubah aplikasi secara ajaib menjadi layanan mikro

Jika Anda memasukkan aplikasi yang sudah ada ke dalam container, itu bisa mengurangi konsumsi sumber dayanya dan membuatnya lebih mudah untuk diterapkan. Tetapi itu tidak secara otomatis mengubah desain aplikasi, atau bagaimana ia berinteraksi dengan aplikasi lain. Manfaat tersebut hanya datang melalui waktu dan upaya developer, bukan hanya mandat untuk memindahkan semuanya ke dalam container.

Letakkan aplikasi monolitik atau SOA gaya lama di wadah, dan Anda akan mendapatkan, yah, aplikasi lama di wadah. Itu tidak membuatnya lebih berguna untuk pekerjaan Anda; jika ada, itu mungkin membuatnya kurang berguna. 

Docker bukanlah pengganti mesin virtual

Salah satu mitos yang terus berlanjut tentang container adalah bahwa mereka membuat VM usang. Banyak aplikasi yang dulunya berjalan di VM dapat dipindahkan ke dalam penampung, tetapi itu tidak berarti semuanya dapat atau harus. Jika Anda berada dalam industri dengan persyaratan peraturan yang berat, misalnya, Anda mungkin tidak dapat menukar container untuk VM, karena VM menyediakan lebih banyak isolasi daripada container.

Kasus untuk kontainer Docker

Pekerjaan pengembangan perusahaan terkenal sangat sempit dan lambat bereaksi terhadap perubahan. Pengembang perusahaan selalu marah terhadap batasan seperti itu — batasan yang diberlakukan pada mereka oleh TI, tuntutan yang dibuat oleh mereka oleh bisnis pada umumnya. Docker dan container memberi pengembang lebih banyak kebebasan yang mereka dambakan, sekaligus menyediakan cara untuk membangun aplikasi bisnis yang merespons perubahan kondisi bisnis dengan cepat.