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

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