Saya merancang aplikasi menggunakan Layanan Mikro dan saya tidak yakin tentang mekanisme terbaik yang digunakan untuk mengumpulkan data dari berbagai layanan.
Saya percaya ada dua opsi:
- Mengintegrasikan mekanisme komunikasi 'antar-layanan' yang memungkinkan layanan untuk berbicara secara langsung. API Gateway akan memanggil layanan individual, yang kemudian memanggil layanan lain untuk mengumpulkan data, sebelum mengembalikan respons gabungan ke API Gateway. API kemudian mengembalikan respons ke pemanggil. (Ini harus menjadi panggilan sinkron ketika panggilan ke layananB membutuhkan respons dari serviceA. IE Terpisah Orang dan Layanan Alamat.)
- Mintalah API Gateway untuk memanggil setiap layanan secara langsung dan menggabungkan data dalam API sebelum mengembalikan respons.
Saya condong ke opsi kedua, karena memiliki layanan berbicara satu sama lain akan memperkenalkan kopling, dalam hal ini saya mungkin juga hanya arsitek aplikasi monolitik. Namun, ada beberapa kelemahan serius yang bisa saya pikirkan dari atas kepala saya dengan opsi ini:
Memiliki API yang melakukan beberapa panggilan ke beberapa layanan meningkatkan beban pada server API, terutama ketika beberapa panggilan tersebut diblokir.
Metode ini berarti API harus 'sadar' tentang apa yang coba dilakukan aplikasi (IE Logic harus diprogram ke dalam API untuk menangani panggilan layanan pada gilirannya, dan kemudian untuk mengkonsolidasikan data), daripada hanya sekedar bertindak sebagai 'titik akhir' bodoh untuk layanan mikro.
Saya ingin tahu apa pendekatan standar untuk masalah ini dan apakah ada opsi ketiga yang saya lewatkan?