Federated GraphQL Server at Scale: Zillow Rental Manager Real-time Chat Application
Bài tóm tắt Zillow 2019 2. Tăng trưởng Độ khó: Dễ
Zillow · 2019 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bối cảnh
- Zillow Rental Manager (ZRM): chủ nhà xem được tin nhắn của người thuê nhưng không trả lời được trong app; trước đó trao đổi qua email.
Thay đổi chính
- Project Satellite: chat trong app cho hai module Rental Manager (chủ nhà) và Renter Hub (người thuê).
- Satellite API cung cấp dữ liệu và chạy một websocket service phát tin nhắn của người dùng lẫn tin hệ thống (các mốc trong quá trình thuê).
- Một server GraphQL (express-graphql) đứng trước, qua service xác thực của từng module, ánh xạ request tới endpoint của Satellite API.
- Gọi là "federated" nhưng thực chất là stitching trong một server: mỗi tính năng có thư mục riêng với
schema.graphql, resolver, test, service; ba module (Rental Manager, Renter Hub, shared) được ghép tại gốc thành một schema chạy được. - Ra trước cho một nhóm nhỏ rồi mở 100%.
Vì sao
- Nhiều team cùng góp vào một API front-end cần ranh giới module rõ để làm độc lập (Kiến trúc frontend); chat cần đẩy realtime qua websocket (Realtime và fan-out).
Bài học cho SWE
- Chia schema GraphQL theo tính năng ngay từ đầu giúp thêm tính năng mà không đụng phần khác.
- Phân biệt federation thật (nhiều service sở hữu schema) với stitching trong một process.
Liên quan
#Zillow Rental Manager#Project Satellite chat#GraphQL#express-graphql#schema stitching per feature#websocket publisher#React + TypeScript
Được nhắc tới trong
Chủ đề (2)
Công ty (1)
Bài tóm tắt (3)