Kubernetes vs. Docker: Memahami container dan orkestrasi

Jika Anda mengikuti tren terbaru dalam pengembangan perangkat lunak, ada dua istilah yang pasti Anda temui berulang kali: Docker dan Kubernetes, yang pada dasarnya adalah singkatan dari  container  dan  orkestrasi .

Container Docker telah membantu menyederhanakan proses pemindahan aplikasi melalui pengembangan dan pengujian dan ke dalam produksi, sementara Docker dan Kubernetes telah membantu menemukan kembali cara aplikasi dibuat dan diterapkan — sebagai kumpulan layanan mikro, bukan tumpukan monolitik.

Mengapa Docker dan Kubernetes penting, bagaimana mereka mengubah pengembangan perangkat lunak, dan peran apa yang dimainkan masing-masing dalam proses tersebut? Saya akan mencoba menjawab pertanyaan-pertanyaan itu di bawah.

Docker dan kontainer

Wadah — didukung di Linux, Windows, dan sistem operasi modern lainnya — memungkinkan perangkat lunak berjalan di lingkungan mini mandiri yang diisolasi dari sistem lainnya. Container telah disamakan dengan VM, tetapi ini bukan VM — container jauh lebih ramping, lebih cepat untuk memulai dan menghentikan, dan jauh lebih fleksibel dan portabel. Karena container dapat diputar ke atas atau ke bawah atau diperkecil dalam hitungan detik, container membuatnya lebih mudah untuk menjalankan aplikasi di lingkungan yang elastis seperti cloud. 

Linux dan sistem operasi lain telah mendukung aplikasi dalam container selama bertahun-tahun, tetapi bekerja dengan container tidak sepenuhnya ramah pengguna. Docker, baik dalam sumber terbuka dan inkarnasi komersialnya, adalah perangkat lunak yang membuat wadah menjadi komoditas yang ramah pengguna dan ramah pengembang. Docker menyediakan seperangkat alat dan metafora umum untuk kontainer sehingga Anda dapat mengemas aplikasi dalam gambar kontainer yang dapat dengan mudah diterapkan dan digunakan kembali di organisasi Anda sendiri atau di tempat lain.

Singkatnya, Docker membuatnya mudah untuk membuat gambar kontainer, membuat versi, membagikannya, memindahkannya, dan menerapkannya ke host yang kompatibel dengan Docker sebagai menjalankan kontainer.

Kapan saya menggunakan Docker dan container?

Docker dan container paling cocok digunakan saat Anda menangani beban kerja yang harus memiliki satu atau beberapa kualitas berikut:

  • Skalabilitas elastis.  Anda tidak tahu berapa banyak contoh aplikasi yang perlu Anda jalankan untuk memenuhi permintaan. Aplikasi atau layanan dalam container dapat disesuaikan skalanya untuk memenuhi permintaan dengan menerapkan lebih sedikit atau lebih banyak instance dari container-nya.
  • Isolasi.  Anda tidak ingin aplikasi mengganggu aplikasi lain. Mungkin Anda akan menjalankan beberapa versi aplikasi secara berdampingan untuk memenuhi revisi API yang berbeda. Atau mungkin Anda ingin menjaga sistem yang mendasarinya tetap bersih (selalu merupakan ide yang bagus).
  • Portabilitas.  Anda perlu menjalankan aplikasi ini di berbagai lingkungan, dan Anda memerlukan setiap penyiapan agar dapat direproduksi. Container memungkinkan Anda mengemas seluruh lingkungan runtime aplikasi Anda, membuat aplikasi mudah diterapkan di mana pun Anda menemukan host yang kompatibel dengan Docker — desktop developer, mesin uji QA, besi lokal, atau cloud jarak jauh.

Pelajari lebih lanjut tentang Docker dan container

  • Apa itu Docker? Percikan untuk revolusi kontainer
  • Mengapa Anda harus menggunakan Docker dan container
  • Mulailah dengan Docker
  • Manfaat tersembunyi Docker untuk QA
  • 12 alat sumber terbuka yang membuat Docker lebih baik
  • Lebih banyak berita Docker, analisis, petunjuk, ulasan, dan saran

Kubernetes dan orkestrasi container

Container dirancang terutama untuk mengisolasi proses atau aplikasi dari satu sama lain dan sistem yang mendasarinya. Membuat dan menerapkan wadah individu itu mudah. Namun bagaimana jika Anda ingin merakit beberapa container — misalnya, database, front-end web, back-end komputasi — menjadi aplikasi besar yang dapat dikelola sebagai satu unit, tanpa harus khawatir tentang penerapan, penyambungan, pengelolaan, dan menskalakan setiap kontainer secara terpisah? Anda memerlukan cara untuk  mengatur  semua bagian menjadi satu kesatuan yang fungsional.

Itulah pekerjaan yang dilakukan Kubernetes. Jika kontainer adalah penumpang kapal pesiar, Kubernetes adalah direktur kapal pesiar.

Kubernetes, berdasarkan proyek yang dibuat di Google, menyediakan cara untuk mengotomatiskan penerapan dan pengelolaan aplikasi multi-container di banyak host, tanpa harus mengelola setiap container secara langsung. Pengembang mendeskripsikan tata letak aplikasi di beberapa kontainer, termasuk detail seperti bagaimana setiap kontainer menggunakan jaringan dan penyimpanan. Kubernetes menangani sisanya saat runtime. Ini juga menangani pengelolaan detail fiddly seperti rahasia dan konfigurasi aplikasi.

Kubernetes membutuhkan sejumlah keahlian untuk digunakan dengan baik, meskipun ini lebih merupakan solusi siap pakai daripada dulu. Beberapa kemajuan dalam kemudahan penggunaan adalah karena resep yang tersedia untuk aplikasi umum (Diagram Helm); beberapa disebabkan oleh banyaknya distribusi Kubernetes yang diproduksi oleh perusahaan bermerek ternama (Red Hat, Canonical, Docker) yang bekerja bahu membahu dengan tumpukan aplikasi populer dan kerangka kerja pengembangan.

Kapan saya menggunakan Kubernetes dan orkestrasi container?

Aplikasi dalam container sederhana yang melayani sejumlah kecil pengguna biasanya tidak memerlukan orkestrasi, apalagi Kubernetes. Namun jika suatu aplikasi memiliki lebih dari sekadar tingkat fungsionalitas yang sepele atau jumlah pengguna yang sepele, akan sulit untuk tidak menemukan kembali roda yang disediakan oleh sistem orkestrasi. Berikut beberapa aturan praktis untuk menentukan kapan orkestrasi harus masuk ke dalam gambar.

  • Aplikasi Anda rumit.  Setiap aplikasi yang melibatkan lebih dari dua kontainer mungkin cocok dengan tagihan. Meskipun demikian, aplikasi sederhana yang hanya melayani sejumlah kecil pengguna mungkin diatur melalui solusi yang lebih minimal seperti mode swarm Docker daripada Kubernetes.
  • Aplikasi Anda memiliki tuntutan yang tinggi untuk penskalaan dan ketahanan.  Kubernetes dan orkestrator lainnya memungkinkan Anda menyeimbangkan beban dan menjalankan container untuk memenuhi permintaan secara deklaratif, dengan mendeskripsikan status yang diinginkan dari sistem alih-alih mengkodekan reaksi untuk mengubah kondisi secara manual.
  • Anda ingin memanfaatkan teknik CI / CD modern.  Sistem orkestrasi mendukung pola penerapan untuk aplikasi yang menggunakan penerapan biru / hijau atau pemutakhiran bergulir.

Mungkin akan datang suatu hari ketika Docker dan Kubernetes dikalahkan oleh abstraksi yang lebih ramah, dan memberikan cara yang lebih elegan untuk membuat dan mengelola container. Untuk saat ini, Docker dan Kubernetes sangat penting untuk diketahui dan dipahami.

Pelajari lebih lanjut tentang Kubernetes dan orkestrasi

  • Apa itu Kubernetes? Platform aplikasi Anda berikutnya
  • 4 alasan Anda harus menggunakan Kubernetes
  • 10 distribusi Kubernetes memimpin revolusi container
  • Kubernetes Terkelola: AWS vs. Azure vs. Google Cloud
  • Halo MicroK8s: Kubernetes yang lebih sederhana
  • Yang baru di Kubernetes
  • Lebih banyak berita Kubernetes, petunjuk, ulasan, saran, dan analisis