Saya telah bekerja dengan GraphQL dan layanan microser
Berdasarkan pengalaman saya apa yang berhasil bagi saya adalah kombinasi dari kedua pendekatan tergantung pada fungsi / penggunaan, saya tidak akan pernah memiliki gateway tunggal seperti pada pendekatan 1 ... tetapi apakah graphql untuk setiap layanan mikro sebagai pendekatan 2.
Misalnya berdasarkan gambar jawaban dari Enayat, yang akan saya lakukan dalam hal ini adalah memiliki 3 gateway gateway (Bukan 5 seperti pada gambar)
Aplikasi (Produk, Keranjang, Pengiriman, Persediaan, diperlukan / ditautkan dengan layanan lain)
Pembayaran
Pengguna
Dengan cara ini Anda perlu memberi perhatian ekstra pada desain data minimal yang diperlukan / ditautkan yang terpapar dari layanan yang bergantung, seperti token auth, userid, paymentid, status pembayaran
Dalam pengalaman saya misalnya, saya memiliki gateway "Pengguna", dalam GraphQL saya memiliki permintaan / mutasi pengguna, masuk, masuk, keluar, ubah kata sandi, pulihkan email, konfirmasi email, hapus akun, edit profil, unggah gambar , dll ... grafik ini sendiri cukup besar !, dipisahkan karena pada akhirnya layanan lain / gateway hanya peduli tentang info yang dihasilkan seperti userid, nama atau token.
Cara ini lebih mudah untuk ...
Skala / shutdown node gateway yang berbeda tergantung pada penggunaannya. (misalnya orang mungkin tidak selalu mengedit profil mereka atau membayar ... tetapi mencari produk mungkin lebih sering digunakan).
Setelah gateway matang, tumbuh, penggunaan diketahui atau Anda memiliki lebih banyak keahlian di domain Anda dapat mengidentifikasi mana yang merupakan bagian dari skema yang bisa mereka miliki gateway (... terjadi pada saya dengan skema besar yang berinteraksi dengan repositori git , Saya memisahkan gateway yang berinteraksi dengan repositori dan saya melihat bahwa satu-satunya input yang diperlukan / info yang ditautkan adalah ... path folder dan cabang yang diharapkan)
Sejarah repositori Anda lebih jelas dan Anda dapat memiliki repositori / pengembang / tim yang didedikasikan untuk gateway dan layanan mikronya yang terlibat.
MEMPERBARUI:
Saya memiliki kubernet cluster online yang menggunakan pendekatan yang sama yang saya jelaskan di sini dengan semua backends menggunakan GraphQL, semua opensource, di sini adalah repositori utama:
https://github.com/vicjicaman/microservice-realm
Ini adalah pembaruan untuk jawaban saya karena saya pikir lebih baik jika jawaban / pendekatannya didukung kode yang sedang berjalan dan dapat dikonsultasikan / ditinjau, saya harap ini membantu.