Wix
Mạch tiến hoá
Năm 2015 Wix dùng MySQL như một kho key/value (blob, không join, không transaction, GUID do client sinh) cho bảng phân giải URL → site, active-active 3 DC, đọc khoảng 1 ms; theo Wix, "MySQL là NoSQL tốt hơn" Wix 2015. Năm 2021, Wix Inbox chuyển dữ liệu chat từ Cassandra tự quản (hot spot theo chatroom) sang DynamoDB bằng ba cách tuỳ thuộc tính dữ liệu Wix 2021. Năm 2022, sau khi bỏ cách dựng cache từ Kafka compact topic (khởi động pod quá chậm), họ làm thư viện cache chung trên DynamoDB Global Table với CDC phát qua Kafka Wix 2022. Năm 2020, team data-streams tổng kết sáu mẫu event-driven trên Kafka cho hơn 1.400 microservice Wix 2020 Wix 2020. Về CI/CD, cổng Lifecycle nối build, artifact, production và monitoring cho khoảng 1.000 developer (2020) Wix 2020. Năm 2021, Wix kể cách đưa hàng triệu site lên cache nhiều tầng bằng việc tách dữ liệu riêng của khách khỏi HTML Wix 2021, và cách chạy code backend của người dùng trên pool pod ấm Wix 2021. Cũng năm 2015, hệ experiment PETRI (A/B test và feature toggle dùng chung cơ chế) được viết lại và mở mã nguồn; sự cố tương thích tiến với loại filter mới dẫn tới quy tắc "loại lạ thì thí nghiệm vô hiệu" Wix 2015.
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 |
|---|---|---|---|
| 2015 | 2. Tăng trưởng | MySQL làm key/value cho routes/sites (khoảng 100 triệu bản ghi), active-active 3 DC, đọc khoảng 1 ms. | Wix 2015 |
| 2015 | 2. Tăng trưởng | PETRI, hệ experiment thế hệ ba (A/B + feature toggle), mở mã nguồn; client cũ kẹt khi gặp loại filter mới, sửa bằng UnrecognizedFilter. | Wix 2015 |
| 2019 | 3. Quy mô lớn | Hiệu năng site: SSR, cache HTML ở hơn 15 region (Varnish + Kafka), tách dữ liệu khách ra endpoint riêng, ETag, CDN, Brotli; CWV tốt tăng 10 lần (bài 2021). | Wix 2021 |
| 2020 | 3. Quy mô lớn | Phần 1 của sáu mẫu event-driven trên Kafka (hơn 1.400 microservice): consume and project, event-driven tới trình duyệt, KV trong RAM bằng compacted topic. | Wix 2020 |
| 2020 | 3. Quy mô lớn | Phần 2: schedule and forget, events in transactions (exactly-once), atomic KV store đếm batch. | Wix 2020 |
| 2020 | 2. Tăng trưởng | Cổng CI Lifecycle: từ TeamCity + FTP tay (khoảng 2011) lên khoảng 1.000 developer; SNAPSHOT → RC → GA, microservice nghe event qua Kafka. | Wix 2020 |
| 2021 | 3. Quy mô lớn | Cassandra → DynamoDB: migrate theo vòng đời, lặp toàn bộ (bỏ), tăng dần theo phòng chat. | Wix 2021 |
| 2021 | 3. Quy mô lớn | Velo trên Kore (Kubernetes): pool pod ấm gắn tạm theo site, site lớn thêm từng pod một. | Wix 2021 |
| 2022 | 3. Quy mô lớn | Thư viện cache xuyên region: DynamoDB Global Table + CDC qua Kafka cập nhật cache trong pod ở mọi region. | Wix 2022 |
Concept liên quan
- Cache và invalidation
- Chọn database theo workload
- CI và build ở quy mô lớn
- Deploy và release an toàn
- Độ tin cậy và multi-region
- Event-driven, message queue và Kafka
- 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
- Migration không downtime
- Multi-tenancy và cô lập tenant
- Nền tảng nội bộ cho service (đường ray chung)
- Scale dọc trước khi scale ngang
- Sinh ID phân tán
- Thử nghiệm A/B và nền tảng experimentation