Federation ghép schema của nhiều dịch vụ thành một đồ thị duy nhất mà client nhìn thấy.
Mỗi đội sở hữu phần schema của mình và triển khai độc lập, còn một lớp định tuyến lo việc lập kế hoạch và ghép kết quả.
# users service — owns the entity
type User @key(fields: "id") { id: ID!, name: String! }
# orders service — extends the same entity by key
type User @key(fields: "id") { id: ID!, orders: [Order!]! }Cơ chế then chốt là khả năng mở rộng một kiểu qua nhiều dịch vụ: dịch vụ người dùng định nghĩa kiểu người dùng với khoá id, còn dịch vụ đơn hàng thêm field danh sách đơn vào chính kiểu đó.
Chi phí vận hành: một truy vấn có thể tạo nhiều lời gọi tới các dịch vụ con, nên độ trễ và xử lý lỗi phức tạp hơn, và việc theo dõi cần vết xuyên suốt từ lớp định tuyến xuống từng dịch vụ.
Khi nào đáng dùng: nhiều đội sở hữu các miền dữ liệu khác nhau và không muốn một dịch vụ GraphQL duy nhất thành điểm nghẽn tổ chức. Với một đội nhỏ, federation thêm rất nhiều phức tạp mà không giải quyết vấn đề có thật.