Menu

Kami berhasil mengurangi waktu pengembangan aplikasi di berbagai lingkungan hingga 1/10 dengan menggunakan Docker, dan juga menghemat 2 posisi staf operasional untuk tim yang terdiri dari 10 orang.

Bulan lalu, tim kecil SaaS e-commerce kami di Singapura hampir gagal—sebelum promosi besar, kami memperbarui fitur sinkronisasi inventaris untuk 3 situs di Asia Tenggara. Semuanya berjalan dengan baik saat diuji di lokal, tetapi begitu kami mengimplementasikannya di server cloud di Indonesia, muncul masalah kekurangan dependensi. Dua server backend dan satu tim operasional harus bekerja selama 18 jam untuk memperbaikinya, yang menyebabkan rencana untuk melakukan uji tekanan tertunda selama 3 hari.

Pahami dulu: Apa sebenarnya yang dimaksud dengan penyebaran (deployment) menggunakan Docker?

Secara sederhana, ini berarti mengemas seluruh kode aplikasi Anda, pustaka yang dibutuhkan, berkas konfigurasi, bahkan parameter kernel sistem operasi menjadi sebuah “image kontainer” yang standar. Bagaimana pun aplikasi Anda berjalan di lingkungan lokal, hasilnya akan sama ketika dijalankan di server mana pun yang telah menginstal engine Docker.Satu citra (image) dapat memiliki ukuran minimum sebesar 20MB, dengan waktu pengunduhan tidak lebih dari 1 detik.。

Kami menggunakan pendapatan nyata selama 3 bulan.

Shipping containers and cranes at Hamburg port showcasing global trade.

Pertama-tama, masalah ketidakkonsistenan lingkungan telah sepenuhnya diatasi. Sebelumnya, membutuhkan waktu setengah hari hanya untuk mengatur versi Node.js yang berbeda dan driver database untuk setiap situs. Sekarang, setelah image yang telah dipaketkan dikirim ke repositori image, tiga situs dapat diunduh dan dijalankan dengan satu klik. Waktu yang dibutuhkan untuk proses deployment telah berkurang dari rata-rata 4 jam menjadi 24 menit, sehingga tidak perlu lagi begadang untuk melakukan pembaruan versi sebelum acara promosi besar.

Selanjutnya, tingkat penggunaan sumber daya server meningkat secara langsung menjadi dua kali lipat. Sebelumnya, kami menyewa satu server cloud dengan prosesor 2 core (4G) untuk setiap situs secara terpisah, dan tingkat penggunaan CPU saat tidak aktif kurang dari 10%. Sekarang, dengan menggunakan Docker, kami menggabungkan aplikasi, cache, dan tugas-tugas berjadwal dari tiga situs ke dalam satu server dengan prosesor 4 core (8G), dan sumber dayanya cukup untuk kebutuhan semua situs.Biaya server setiap bulan langsung dihemat sebesar 620 dolar Amerika.Bagi tim kecil dengan kurang dari 10 orang, jumlah tersebut bukanlah angka yang kecil.

Terakhir, kecepatan peningkatan kapasitas benar-benar dapat mengikuti lonjakan lalu lintas yang tiba-tiba. Tahun lalu, saat Black Friday, kami harus menambahkan server secara darurat dan membutuhkan waktu hampir 2 jam untuk mengatur seluruh sistem. Tahun ini, 10 menit sebelum puncak penjualan, kami berhasil mengaktifkan 12 salinan kontainer yang mampu menangani lalu lintas tiga kali lebih tinggi dari biasanya, dan tidak ada lagi kasus waktu permintaan yang melebihi batas.

Jangan terburu-buru naik mobil, kami sudah mencoba beberapa masalah yang mungkin ada terlebih dahulu.

Vibrant red and blue shipping containers under a clear sky, perfect for industrial themes.

Masalah pertama adalah karena citra tersebut terlalu besar dan berat. Awalnya kami menggunakan citra Node.js versi penuh yang disediakan secara resmi untuk pengemasan, dan ukuran citra aplikasi tersebut mencapai 1.2G, yang membutuhkan waktu lebih dari 20 menit untuk diunggah ke repositori citra di luar negeri. Setelah itu, kami beralih menggunakan citra dasar Alpine dan menghapus semua dependensi yang tidak diperlukan, sehingga ukuran citra menjadi hanya 90MB, dan waktu pengunduhan meningkat lebih dari 10 kali lipat.

Kesalahan kedua adalah data berada di dalam sebuah kontainer. Awalnya kami tidak memperhatikannya, sehingga gambar-gambar produk yang diunggah oleh pengguna disimpan langsung di dalam direktori lokal kontainer. Setelah kontainer di-restart, semua gambar hilang, dan kami membutuhkan waktu satu hari untuk memulihkannya dari cadangan. Kemudian, semua data yang bersifat permanen dipindahkan ke direktori lokal server atau objek penyimpanan (object storage), dan sejak itu tidak pernah ada masalah lagi.

Kesalahan ketiga adalah tidak adanya pembatasan sumber daya. Pada saat pertama kali situs tersebut diluncurkan, tidak ada batasan yang ditetapkan untuk kapasitas CPU dan memori kontainer. Suatu kali, sebuah tugas berjadwal di salah satu situs mengalami bug, yang menyebabkan seluruh CPU server terisi penuh, sehingga dua situs lainnya juga tidak dapat berfungsi dengan baik. Setelah itu, batasan sumber daya ditetapkan untuk setiap kontainer, sehingga jika ada masalah dengan satu layanan, hal tersebut tidak akan mempengaruhi keseluruhan sistem.

Apakah kita harus menggunakan Docker atau tidak? Kriteria penilaian kita sangat sederhana.

Kondisi di mana penggunaannya diperlukan: Anda perlu meng部署 aplikasi yang sama di beberapa server, sering berganti antara lingkungan pengembangan, pengujian, dan produksi, dan tim Anda memiliki lebih dari 3 orang dengan lingkungan pengembangan yang berbeda-beda. Menggunakan Docker hanya akan meningkatkan efisiensi.

Kondisi di mana tidak perlu menggunakan Docker: Jika Anda hanya memiliki sebuah blog kecil yang dijalankan di satu server, dan kode aplikasi Anda hanya diperbarui setiap enam bulan sekali, maka tidak ada alasan untuk meluangkan waktu untuk mempelajari Docker. Menggunakan alat seperti Baota atau melakukan penyebaran secara manual justru lebih praktis.

3 saran spesifik untuk orang yang pertama kali mencobanya

Blue and yellow shipping containers aligned on a sandy beach with the ocean and sky in the background.

  • Untuk 3 kali pertama saat membuat image, carilah template praktik terbaik yang disediakan oleh pihak resmi. Jangan membuat Dockerfile sendiri secara sembarangan, karena dengan cara ini Anda dapat menghindari sekitar 80% dari masalah yang terkait dengan ukuran image yang berlebihan dan kesalahan hak akses.
  • Pada awalnya, tidak perlu menggunakan alat pengaturan yang kompleks seperti K8s; cukup gunakan Docker Compose untuk mengelola tidak lebih dari 3 layanan, dan itu sudah cukup.
  • Untuk repositori cermin (mirror repository), gunakan saja node-node luar negeri dari penyedia layanan cloud. Jangan buatnya sendiri; waktu yang dihemat bisa Anda gunakan untuk mengembangkan beberapa fitur tambahan.

Jawaban umum untuk masalah kecil yang sering muncul

Pertanyaan: Apakah Docker akan mengonsumsi banyak sumber daya server secara ekstra? Kami telah menguji dan menemukan bahwa penurunan kinerja tidak lebih dari 5%, yang tidak akan terasa sama sekali oleh sebagian besar tim kecil dan menengah.

Pertanyaan: Bisakah aplikasi lama yang sudah ada dipindahkan ke Docker? Tentu saja bisa. Kami memiliki proyek PHP yang sudah berjalan selama 3 tahun, dan kami berhasil membuat image Docker-nya dalam waktu 2 hari saja, yang jauh lebih cepat daripada mengatur lingkungan dari awal.

Apakah ini membantu?

Dukungan teknisDukungan langsung
侧栏
Kembali ke atas
简体中文ZH-CNDefault繁體中文ZH-TWEnglishEN日本語JA한국어KOภาษาไทยTHTiếng ViệtVIBahasa IndonesiaIDEspañolESFrançaisFRDeutschDEРусскийRUPortuguêsPTItalianoITالعربيةAR