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