How to Pitch Apache Kafka

Bài tóm tắt Zillow 2020 3. Quy mô lớn Độ khó: Dễ

Zillow · 2020 · 3. Quy mô lớn · Độ khó: Dễ — bài gốc

Bài quan điểm của một kỹ sư Data Platform về cách thuyết phục lãnh đạo đầu tư Kafka; phần về Zillow là quyết định lập team Streaming Platform. Các so sánh Kinesis/Kafka ghi theo tác giả.

Bối cảnh

  • Zillow chạy trên AWS và dùng SQS, SNS, Kinesis. Theo tác giả, lý lẽ "Kafka throughput tốt hơn" không thuyết phục được lãnh đạo; ở công ty trước, chính ông từ chối Kafka vì không thấy ROI của việc thêm người vận hành.
  • Vấn đề thật ở Zillow: mỗi team tự tạo stream Kinesis trong tài khoản AWS riêng; người khác không biết stream tồn tại, không biết schema, ý nghĩa trường, đảm bảo chất lượng; đổi schema làm consumer production hỏng, và theo tác giả "nhiều RCA ra đời" từ đó.

Thay đổi chính

Lý do chọn Kafka, theo tác giả:

  • Hệ sinh thái: Schema Registry (kiểm schema lúc ghi, tiến hoá có tương thích nên consumer không crash vì deserialize), Kafka Connect (tích hợp với hệ ngoài AWS).
  • Client: KPL là daemon C++ khó debug, KCL cần DynamoDB để lưu offset; ở hai công ty gần nhất tác giả đều phải tự viết KPL mỏng hơn. Kafka lưu offset trong chính nó.
  • Kinesis giới hạn 5 lần đọc/giây/shard, consumer chia nhau throughput nên phải biết về nhau (enhanced fan-out tốn thêm tiền); Kafka chỉ bị giới hạn bởi tài nguyên.

Quyết định ở Zillow: lập team Streaming Platform, mục tiêu Kafka là "hệ thần kinh trung ương" về event:

  • Terraform provider riêng để team tự tạo topic (cân bằng phi tập trung và kiểm soát, ví dụ chặn topic 10.000 partition).
  • Metadata bắt buộc khi tạo topic (chủ sở hữu, mô tả, dữ liệu riêng tư, lineage, schema), nối với Data Portal.
  • Dịch vụ cấu hình tiêm sẵn config producer/consumer, cùng thư viện client cho trường hợp phổ biến.
  • Mẫu ingestion chung qua Kafka Connect và qua Data Streaming Platform (proxy trước Kafka); nối với team Data Governance làm data contract và phát hiện bất thường.

Vì sao

Bài học cho SWE

  • Đề xuất công nghệ bằng tác động lên tổ chức (thời gian tìm dữ liệu, sự cố do đổi schema, chi phí hiện tại), không bằng benchmark.
  • Self-service cần rào chắn: provider tạo tài nguyên có giới hạn và metadata bắt buộc.

Liên quan