Я працював з GraphQL та мікросервісами
Виходячи з мого досвіду, для мене працює комбінація обох підходів, залежно від функціональності / використання, я ніколи не матиму єдиного шлюзу, як у підході 1 ..., але я створюю графік для кожної мікросервіси як підхід 2.
Наприклад, грунтуючись на зображенні відповіді від Енаят, я б робив у цьому випадку, щоб мати 3-х графічні шлюзи (не 5, як на зображенні)
Додаток (продукт, кошик, доставка, інвентар, необхідні / пов'язані з іншими послугами)
Оплата
Користувач
Таким чином, вам потрібно приділити додаткову увагу дизайну необхідних / пов’язаних мінімальних даних, що підлягають впливу залежних служб, таких як маркер аутентифікації, userid, paymentid, статус платежу
Наприклад, у моєму досвіді у мене є шлюз "Користувач", у цьому GraphQL у мене є запити / мутації користувачів, увійдіть, увійдіть, вийдіть, змініть пароль, відновіть електронну пошту, підтвердіть електронну пошту, видаліть акаунт, редагуйте профіль, завантажте зображення і т.д. ... цей графік сам по собі досить великий !, він відокремлений, оскільки в кінці інших служб / шлюзів піклується лише про отриману інформацію, наприклад, userid, ім'я чи маркер.
Цей спосіб простіше ...
Масштабування / вимкнення різних вузлів шлюзів залежно від їх використання. (наприклад, люди не завжди можуть редагувати свій профіль або платити ..., але пошук продуктів може використовуватися частіше).
Після того, як шлюз дозріває, зростає, використання відомо, або у вас є більше досвіду щодо домену, ви можете визначити, яка частина схеми, яка могла б мати власний шлюз (... трапилось зі мною з величезною схемою, яка взаємодіє з репозиторіями git , Я розділив шлюз, який взаємодіє з сховищем, і я побачив, що єдиним необхідним входом / пов'язаною інформацією є ... шлях до папки та очікувана гілка)
Історія ваших сховищ є більш зрозумілою, і ви можете мати сховище / розробник / команду, присвячену шлюзу та його задіяним мікросервісам.
ОНОВЛЕННЯ:
У мене в Інтернеті є кластер Kubernetes, який використовує той самий підхід, який я описую тут з усіма перехідними програмами за допомогою GraphQL, усі відкриті джерела, ось головне сховище:
https://github.com/vicjicaman/microservice-realm
Це оновлення моєї відповіді, тому що я вважаю, що краще, якщо відповідь / підхід буде резервним кодом, який працює, і з ним можна звернутися / переглянути, я сподіваюся, що це допоможе.