The Data Infra Behind Zillow's 3x Growth in Experiment Volume
Bài tóm tắt Zillow 2023 3. Quy mô lớn Độ khó: Trung bình
Zillow · 2023 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bối cảnh
- Giữa 2020, gần 200 triệu người dùng unique mỗi tháng. Các team dùng gần một chục công cụ thí nghiệm mua hoặc tự viết, mỗi cái giải một phần: có nơi gán bucket tốt nhưng PM chờ data scientist hàng tuần để có scorecard; có nơi mua công cụ nhưng chỉ đo metric cục bộ, không thấy tác động lên mục tiêu khách hàng hay sang mảng kinh doanh khác.
- Hạ tầng: hơn 4.000 "application" (service, pipeline, stream, thư viện), nhiều cái cũ trên hạ tầng dùng chung không tự deploy được. Spark tốn hơn 15% ngân sách cloud của nhóm Data/AI cho hơn 13.000 job; on-call của team thí nghiệm mất khoảng một nửa thời gian cho sự cố cụm (scale, deploy, cấp instance).
Thay đổi chính
- Lập team ZEXP; chiến lược lai mua và tự xây: mua phần gán bucket/feature flag (SDK cho mọi ngôn ngữ, team sản phẩm tự onboard, log exposure theo giờ); tự xây phần phân tích.
- ZGCP (Zillow Group Container Platform): tạo và quản lý cụm Kubernetes với CI/CD, observability, config/secret, autoscaling, chi phí theo team; archetype theo ngôn ngữ để dựng service trong vài phút.
- ZACS (Zillow Analytics Compute Services): Spark trên Kubernetes sau một SDK/API; scheduler YuniKorn đặt giới hạn theo team để ai cũng có capacity dự đoán được; plugin orchestrator mới nên chuyển job chỉ cần đổi plugin spark-submit; JupyterLab nối ZACS qua SparkMagic.
- Streamz: hơn 2 tỷ event/ngày; producer tự tạo topic Kafka + bảng data lake đi kèm + job Flink, tất cả bằng Terraform, có chủ sở hữu để quy chi phí và alert; schema Avro gắn với event id để validate. Data Portal gom schema registry, data catalog, data contract, cấu hình phát hiện bất thường, metric, job SQL. Luminaire contracts: producer và consumer định nghĩa test trên dữ liệu stream/batch, chạy theo lịch, kết quả dùng làm kiểm tra sẵn sàng của dependency.
- ZEXPy (Python/PySpark): interface cho nguồn exposure/metric, checkpoint dữ liệu trung gian theo trial, platform, segment để chạy lại từng phần và debug; chạy local giống hệt production nhờ ZACS. AB Testing Hub trên Data Portal: cấu hình, scorecard, cảnh báo SRM, ghi quyết định; FastAB là API nguồn sự thật duy nhất cho mọi thí nghiệm, kể cả trạng thái job để tự backfill.
- Kết quả trong 2 năm: số thí nghiệm gấp 3, tiết kiệm chi phí và thời gian (theo Zillow, không nêu số).
Vì sao
- Nền tảng thí nghiệm chỉ tin được khi dữ liệu exposure và event tin được; nên tác giả coi nền tảng compute và dữ liệu chung là điều kiện tiên quyết (Thử nghiệm A/B và nền tảng experimentation, Pipeline dữ liệu và analytics).
- Cụm Spark dùng chung cần quota theo team để một team không ăn hết capacity của team khác (Multi-tenancy và cô lập tenant); đường đi chuẩn (archetype, plugin) làm việc chuyển nền tảng gần như miễn phí (Nền tảng nội bộ cho service (đường ray chung)).
Bài học cho SWE
- Mua phần commodity (gán bucket), tự xây phần khác biệt (phân tích theo metric của doanh nghiệp).
- Một API nguồn sự thật cho mọi thí nghiệm cho phép meta-analysis và học từ thí nghiệm cũ.
- Checkpoint từng stage của pipeline phân tích để chạy lại từng phần thay vì cả ngày dữ liệu.
Liên quan
Thử nghiệm A/B và nền tảng experimentationNền tảng nội bộ cho service (đường ray chung)Pipeline dữ liệu và analyticsMulti-tenancy và cô lập tenant
#ZEXP#build vs buy assignment#ZEXPy PySpark analysis library#AB Testing Hub#FastAB API#ZGCP Kubernetes platform#ZACS Spark on Kubernetes#YuniKorn per-team quotas#Streamz Kafka + Flink#Data Portal#Luminaire data contracts
Được nhắc tới trong
Chủ đề (4)
Công ty (1)
Bài tóm tắt (5)