Tôi đã làm việc với GraphQL và microservice
Dựa trên kinh nghiệm của tôi, những gì hoạt động đối với tôi là sự kết hợp của cả hai cách tiếp cận tùy thuộc vào chức năng / cách sử dụng, tôi sẽ không bao giờ có một cổng duy nhất như trong cách tiếp cận 1 ... mà chỉ là một biểu đồ cho mỗi microservice như cách tiếp cận 2.
Ví dụ, dựa trên hình ảnh của câu trả lời từ Enayat, điều tôi sẽ làm trong trường hợp này là có 3 cổng biểu đồ (Không phải 5 như trong hình)
Ứng dụng (Sản phẩm, Giỏ, Vận chuyển, Hàng tồn kho, cần thiết / liên kết với các dịch vụ khác)
Thanh toán
Người sử dụng
Bằng cách này, bạn cần chú ý hơn đến việc thiết kế dữ liệu tối thiểu cần thiết / được liên kết được hiển thị từ các dịch vụ tùy thuộc, như mã thông báo xác thực, userid, Paymentid, trạng thái thanh toán
Theo kinh nghiệm của tôi, ví dụ, tôi có cổng "Người dùng", trong đó GraphQL tôi có các truy vấn / đột biến người dùng, đăng nhập, đăng nhập, đăng xuất, thay đổi mật khẩu, khôi phục email, xác nhận email, xóa tài khoản, chỉnh sửa ảnh, tải lên hình ảnh , v.v ... biểu đồ này trên chính nó khá lớn!, nó bị tách ra vì cuối cùng, các dịch vụ / cổng khác chỉ quan tâm đến thông tin kết quả như userid, name hoặc token.
Cách này dễ hơn để ...
Chia tỷ lệ / tắt các nút cổng khác nhau tùy thuộc vào cách sử dụng. (ví dụ, mọi người có thể không phải lúc nào cũng chỉnh sửa hồ sơ hoặc trả tiền ... nhưng việc tìm kiếm sản phẩm có thể được sử dụng thường xuyên hơn).
Khi một cổng trưởng thành, phát triển, việc sử dụng được biết đến hoặc bạn có nhiều kiến thức chuyên môn về miền mà bạn có thể xác định đó là một phần của lược đồ có thể sở hữu cổng đó (... đã xảy ra với tôi với một lược đồ lớn tương tác với kho git , Tôi đã tách cổng tương tác với kho lưu trữ và tôi thấy rằng thông tin cần thiết / liên kết đầu vào duy nhất là ... đường dẫn thư mục và nhánh dự kiến)
Lịch sử của kho lưu trữ của bạn rõ ràng hơn và bạn có thể có một kho lưu trữ / nhà phát triển / nhóm dành riêng cho một cổng và các dịch vụ siêu nhỏ liên quan của nó.
CẬP NHẬT:
Tôi có một cụm kubernetes trực tuyến đang sử dụng cùng một cách tiếp cận mà tôi mô tả ở đây với tất cả các phụ trợ sử dụng GraphQL, tất cả mã nguồn mở, đây là kho lưu trữ chính:
https://github.com/vicjicaman/microservice-realm
Đây là bản cập nhật cho câu trả lời của tôi vì tôi nghĩ rằng sẽ tốt hơn nếu câu trả lời / cách tiếp cận được sao lưu mã đang chạy và có thể được tư vấn / xem xét, tôi hy vọng rằng điều này sẽ giúp ích.