𝗠𝗶𝗸𝗿𝗼𝘀𝗲𝗿𝘃𝗶𝘀 𝗹𝘄𝗻. 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗸𝘁𝘂𝗿 𝗠𝗼𝗻𝗼𝗹𝗶𝘁𝗶𝗸: 𝗔𝗽𝗮 𝗬𝗮𝗻𝗴 𝗣𝗮𝘁𝘂𝘁 𝗔𝗻𝗱𝗮 𝗕𝗶𝗻𝗮?

Seorang pengasas pernah meminta saya untuk menyemak satu cadangan seni bina.

Agensi tersebut mencadangkan sebelas perkhidmatan, satu barisan mesej (message queue), dan satu mesh perkhidmatan (service mesh). Ini adalah untuk alat tempahan ringkas dengan sifar pengguna.

Itu adalah satu perangkap.

Keputusan seni bina menentukan bil pengehosan anda, kelajuan penghantaran anda, dan pelan pengambilan pekerja anda. Anda mesti mengetahui kosnya sebelum menyerahkan bajet kepada pembangun.

Monolit Monolit menggunakan satu kod asas (codebase), satu penggunaan (deployment), dan satu pangkalan data. Ia adalah ringkas.

Pada hari pertama, anda tidak mengetahui sempadan domain anda. Jika anda membahagikan perkhidmatan terlalu awal, anda akan menghabiskan masa mengalih dinding yang sepatutnya tidak wujud. Monolit lebih mudah diurus apabila pasukan anda kecil. Anda memanggil fungsi dan bukannya menyediakan API. Apabila pepijat (bug) berlaku pada jam 2 pagi, ralat tersebut akan menunjukkan kepada kod, bukannya kegagalan rangkaian.

Mikroservis Mikroservis menyelesaikan masalah organisasi. Ia membolehkan pasukan yang berbeza menghantar kod mengikut jadual mereka sendiri. Netflix menggunakannya untuk mengelakkan satu kegagalan daripada menenggelamkan keseluruhan sistem.

Walau bagaimanapun, anda perlu membayar harganya setiap hari. Panggilan rangkaian menambah kependaman (latency). Konsistensi data menjadi sukar. Anda memerlukan alatan khusus dan pasukan yang besar untuk mengurus log dan penjejakan (tracing). Tanpa jumlah kakitangan yang betul, anda akhirnya akan mendapat monolit teragih (distributed monolith). Ini memberikan anda semua kerumitan rangkaian tanpa sebarang kebebasan.

Monolit Modular Ini adalah jalan tengah. Ia adalah satu aplikasi dengan dinding yang teguh antara bahagian kod yang berbeza. Bahagian pengebilan tidak boleh menyentuh bahagian teras pesanan anda.

Shopify dan GitHub menggunakan pendekatan ini. Anda mendapat sempadan yang bersih dan mengelakkan "cukai rangkaian" (network tax). Apabila sebahagian daripada aplikasi anda akhirnya perlu diskalakan secara berasingan, anda boleh memisahkannya dengan mudah kerana sempadannya telah ditakrifkan.

Cara membuat keputusan:

  • Saiz pasukan: Jika anda mempunyai tiga orang, anda tidak boleh menguruskan perkhidmatan yang berasingan dan giliran tugas atas panggilan (on-call rotation) yang diperlukan.
  • Kestabilan produk: Jika produk anda berubah setiap minggu, sempadan perkhidmatan anda akan menjadi salah menjelang bulan depan.
  • Operasi: Adakah anda mempunyai fungsi rollback automatik dan agregasi log? Jika tidak, mikroservis akan mendatangkan kesukaran.
  • Skala: Jangan membina untuk pertumbuhan hipotetikal. Bina untuk laluan konkrit yang anda nampak.

Jika jawapan anda adalah "belum lagi," bina monolit modular.

Jangan meminta mikroservis hanya kerana perkataan itu kedengaran moden. Beritahu rakan kongsi anda apa yang dilakukan oleh produk tersebut dan siapa yang akan menyelenggarakannya.

Produk gagal kerana ia tidak pernah dilancarkan. Monolit yang bersih adalah cara terpantas untuk sampai kepada pengguna. Bina itu terlebih dahulu. Biarkan trafik anda memberitahu anda bila tiba masanya untuk memecahkannya.

Sumber: https://dev.to/amara_wallis_2f533953a6ac/microservices-vs-monolithic-architecture-what-should-your-full-stack-development-partner-build-3g6

Komuniti pembelajaran pilihan: https://t.me/GyaanSetuAi