Under the hood of Figma's infrastructure
Bài tóm tắt Figma 2019 2. Tăng trưởng Độ khó: Dễ
Figma · 2019 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bối cảnh
- Bài của trưởng nhóm infra mới (7 tháng, trước đó ở Google và Dropbox). Mục đích: kể infra đang chuyển từ "đơn giản nhưng tốn công vận hành" của một startup sang hệ thống trưởng thành hơn.
- Figma = "Google Docs cho thiết kế": mỗi file có URL riêng, là nguồn sự thật; multiplayer cho nhiều người sửa cùng lúc, với file chứa hình phức tạp và ảnh lớn.
- Một file thiết kế được gán cho đúng một instance của service Multiplayer.
Thay đổi chính (các dự án "Infrastructure 2.0")
- Tải dữ liệu theo nhu cầu: khi mở file, app nạp trước mọi shared component của user. Cách này ổn với vài nghìn phần tử nhưng quá tải khi gần 10.000 (các tổ chức lớn). Theo Figma, việc sửa đòi hỏi thiết kế lại cả tương tác client–server và trải nghiệm, không chỉ tăng tốc backend.
- Scale database: "điều khiến người ta sốc nhất": Figma chạy trên một DB instance, máy mạnh nhất của AWS, theo nguyên tắc KISS. Họ đã gần chạm trần và cho rằng cần một tầng DB scale ngang.
- Người dùng quốc tế: hơn 80% WAU ở ngoài Mỹ, trong khi data center ở Oregon. Bước 1: đặt proxy gần user. Bước 2: thử đặt instance Multiplayer gần user, nghĩa là phải chọn data center tốt nhất cho từng file.
- LiveGraph: DB realtime theo schema, lấy cảm hứng từ GraphQL. Client đăng ký một query và nhận push khi kết quả thay đổi (đã lọc theo quyền), thay cho việc mỗi tính năng phải tự xây backend + frontend riêng.
Vì sao
Theo Figma: tốc độ và ổn định là ưu tiên số một, vì người dùng chuyển sang từ app desktop. Kiến trúc đơn giản đã đi được xa nhưng sắp chạm giới hạn.
Bài học cho SWE
- KISS đi xa hơn người ta nghĩ: một DB trên máy lớn nhất vẫn đủ cho Figma tới 2019–2020. Xem Scale dọc trước khi scale ngang.
- Đối chiếu với diễn biến thực tế: năm 2019 Figma nói cần DB scale ngang, nhưng bước tiếp theo họ làm (2020–2022) là tách dọc để mua thời gian, và tới 2023 mới shard ngang (Figma 2023, Figma 2024). Kế hoạch dài hạn thường đi qua những bước trung gian rẻ hơn.
- Giả định "nạp hết lúc khởi động" là nợ thiết kế lộ ra khi khách hàng lớn lên. Sửa nó cần cả product, không chỉ infra.
- Gán một tài liệu cho một instance làm realtime đơn giản (một chỗ giữ trạng thái), nhưng làm đa vùng khó hơn.
Liên quan
Được nhắc tới trong
Công ty (1)