Learn to stop using shiny new things and love MySQL
Bài tóm tắt Pinterest 2015 2. Tăng trưởng Độ khó: Cơ bản
Bài quan điểm của Marty Weiner (Pinterest); mọi nhận định là theo tác giả.
Pinterest · 2015 · 2. Tăng trưởng · Độ khó: Cơ bản — bài gốc
Bối cảnh
- Sau khoảng một năm scale gấp, Pinterest chạy cùng lúc MySQL, Memcache, MongoDB, Redis, Cassandra, Membase và Elasticsearch; theo tác giả, "mọi thứ đều cháy theo cách riêng". Các công ty database mới chào mời giải quyết mọi vấn đề scale.
- Theo tác giả, startup chọn công nghệ mới vì ba bẫy: nghĩ sản phẩm mới cần công nghệ mới; nghĩ công nghệ cũ chậm, không scale; và công nghệ cũ không được quảng cáo rầm rộ.
Thay đổi chính
- Đợt tái kiến trúc lớn, bỏ bớt "đồ xịn", với bốn câu hỏi cho mỗi công nghệ: có đáp ứng yêu cầu không, scale tới đâu (tránh scale sớm), chi phí có đáng không, trưởng thành tới đâu (quan trọng nhất sau yêu cầu cơ bản).
- Hai bài học: đừng là người dùng lớn nhất của một công nghệ (vấn đề bị khuếch đại); giữ đơn giản, công nghệ nào cũng sẽ hỏng.
- "Độ trưởng thành = (máu + mồ hôi) / độ phức tạp". Công nghệ non: khó tuyển người, ít cộng đồng để tra lỗi lúc 2 giờ sáng, dễ hỏng nặng. Theo tác giả, Pinterest từng mất dữ liệu bất ngờ trên gần như mọi công nghệ đã dùng, trừ MySQL; họ chưa bao giờ để bản gốc dữ liệu ở hệ nào khác ngoài MySQL thời đầu.
- Chỗ không nên dùng MySQL, theo tác giả: tìm kiếm không gian nhiều chiều (vector đặc trưng), ghi rất nhanh khi chấp nhận nhất quán cuối (HBase, Cassandra), hàng đợi/feed (dùng Redis, công ty lớn thì HBase; Pinterest dùng HBase cho feed), log (Kafka → Secor → S3 → MapReduce). Scale vượt một máy thì cần shard tự làm (bài hẹn viết sau).
Vì sao
- Tác giả cho rằng phần lớn startup có yêu cầu kỹ thuật bình thường; rủi ro của công nghệ non lớn hơn lợi ích.
Bài học cho SWE
- Đánh giá công nghệ theo độ trưởng thành và cộng đồng, không theo lời hứa của nhà cung cấp.
- Giữ bản gốc dữ liệu ở hệ bạn khôi phục được khi hỏng.
- Biết rõ giới hạn của công cụ quen (MySQL không hợp feed, log, vector) để chọn thêm công cụ có chủ đích.
Liên quan
- Chọn database theo workload
- Cách Pinterest shard MySQL (bài hẹn trong bài này): Pinterest 2015; giai đoạn tăng trưởng: Pinterest 2013
#MySQL#chọn công nghệ#độ trưởng thành#boring technology#MongoDB#Cassandra#Membase#Redis#HBase#Kafka#Secor
Được nhắc tới trong
Chủ đề (1)
Công ty (1)