Etsy
Mạch tiến hoá
Etsy shard MySQL từ khoảng 2010 bằng ORM tự viết: gán shard ngẫu nhiên, lưu ánh xạ trong một index DB, thành điểm hỏng chung. Từ 2018 họ chuyển sang Vitess mà không dời dữ liệu (vindex lai: SQLite cho ID cũ, hash cho ID mới); xong sau 5 năm Etsy 2026. Năm 2020 Etsy hoàn tất rời data center lên GCP; team lo migration trở thành team FinOps, dự báo chi phí theo mỗi visit Etsy 2024. Ở frontend, từ 2020 monorepo hơn 17.000 file JavaScript được chuyển dần sang TypeScript theo từng team kèm đào tạo Etsy 2021. Sớm hơn, năm 2017, hạ tầng ảnh bỏ chất lượng JPEG cố định để chọn theo từng ảnh, giảm 25–30% dung lượng và chi phí CDN Etsy 2017. Năm 2021, giá thầu quảng cáo chuyển từ điểm tính mỗi ngày sang dự đoán theo ngữ cảnh lúc request Etsy 2021. Các bài khác lấp những năm ở giữa: năm 2017 Etsy kể cách giữ cache hàng terabyte bằng consistent hashing và trải key nóng bằng cache smearing Etsy 2017; mùa lễ 2020 họ chuẩn bị capacity bằng quota GCP xin sớm và một scale day nhiều đội Etsy 2021; từ cuối 2020 tới 5/2022 các database thanh toán được shard bằng Vitess, kể thành ba phần: mô hình dữ liệu Etsy 2023, cutover Etsy 2023 và các loại lỗi chỉ hiện sau cutover Etsy 2023.
Timeline
Năm = năm sự kiện theo bài (có thể sớm hơn năm đăng bài).
| Năm | Giai đoạn | Thay đổi | Nguồn |
|---|---|---|---|
| 2010 | 2. Tăng trưởng | Shard MySQL qua ORM tự viết + index DB lưu ánh xạ. | Etsy 2026 |
| 2017 | 3. Quy mô lớn | Chất lượng JPEG theo từng ảnh (tìm nhị phân theo SSIM lúc upload): ảnh −25–30%, đỡ chi phí CDN. | Etsy 2017 |
| 2017 | 3. Quy mô lớn | memcached/Varnish: consistent hashing Ketama; cache smearing cho key nóng làm bão hoà card mạng. | Etsy 2017 |
| 2018 | 3. Quy mô lớn | Đưa Vitess vào giữa ORM và MySQL; shard các bảng payments bằng vindex. | Etsy 2026 |
| 2020 | 4. Điều chỉnh | Xong chuyển lên GCP; team FinOps dự báo theo chi phí mỗi visit, tối ưu GCS, CPU mới, nén mạng (2023–2024). | Etsy 2024 |
| 2020 | 3. Quy mô lớn | Chuyển frontend (hơn 17.000 file JS) sang TypeScript strict từng file, từng team; kiểu API sinh từ OpenAPI (bài 2021). | Etsy 2021 |
| 2020 | 3. Quy mô lớn | Mùa lễ 2020: Slush, báo GCP cận trên, scale day 15+ đội ở 3x traffic; Cyber Monday 1,5 triệu QPS MySQL, deploy giờ cao điểm (bài 2/2021). | Etsy 2021 |
| 2020→2022 | 4. Điều chỉnh | Thanh toán lên Vitess (12/2020–5/2022): 23 bảng, 40 tỉ dòng, 40 shard; shard theo shop_id cho ledger, khoá sẵn có cho payments; giảm 60% tải. | Etsy 2023 |
| 2020→2022 | 4. Điều chỉnh | Cutover bằng MoveTables: staging từ snapshot production, scatter query làm query x40, sửa bằng lookup vindex; không downtime. | Etsy 2023 |
| 2020→2022 | 4. Điều chỉnh | Giảm rủi ro cutover: transaction_mode=single, giữ reverse VReplication, --no_scatter, test mọi query. | Etsy 2023 |
| 2021 | 3. Quy mô lớn | Đấu giá quảng cáo theo ngữ cảnh: PC-CVR từ batch mỗi ngày sang dự đoán lúc request (tới 12.000/giây); A/B test khó cô lập vì chung ngân sách (bài 3/2021). | Etsy 2021 |
| 2026 | 4. Điều chỉnh | Xong chuyển ~1.000 shard (425 TB, 1,7M req/s) sang vindex; bỏ được index DB. | Etsy 2026 |
Concept liên quan
- Cache và invalidation
- Chi phí hạ tầng và build vs buy
- Deploy và release an toàn
- Đổi ngôn ngữ và runtime
- Giao dịch phân tán và nhất quán xuyên service
- Hot partition và thundering herd
- Kiến trúc frontend
- Load test và kiểm chứng capacity
- Migration không downtime
- Nền tảng ML (feature, training, serving, giám sát model)
- Quản lý fleet và migrate code hàng loạt
- Sharding và tách database
- Thử nghiệm A/B và nền tảng experimentation