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
- Vấn đề là khả năng tìm thấy và hợp đồng dữ liệu, không phải throughput; công nghệ chỉ có giá trị khi có team nền tảng biến nó thành đường đi chuẩn (Nền tảng nội bộ cho service (đường ray chung), Event-driven, message queue và Kafka).
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
#Kinesis vs Kafka#schema registry#Kafka Connect#KPL/KCL#Kinesis 5 reads/s per shard#enhanced fan-out#Streaming Platform team#Terraform provider#metadata and discoverability#data contracts
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (3)