So You Think You Can Scale?
Bài tóm tắt Railway 2023 2. Tăng trưởng Độ khó: Trung bình
Railway · 2023 · 2. Tăng trưởng · Độ khó: Trung bình — bài gốc
Bài ra mắt tính năng của nhà cung cấp PaaS (Launch Week 01). Mọi nhận định ghi "theo Railway".
Bối cảnh
- Trước 9/2023, muốn scale ngang trên Railway thì người dùng phải tự nhân bản service và tự viết load balancing.
- Mô hình dữ liệu nội bộ chỉ có một deployment cho mỗi service.
Thay đổi chính
- Một "nút xoay" chọn số replica cho mỗi service.
- Orchestration: thêm khái niệm deployment instance (cùng setting, biến, môi trường, lặp lại được). Orchestrator riêng, không dùng Kubernetes, dựng trên Temporal: workflow build ảnh, rồi workflow deploy chọn region, chọn máy ("stacker") phù hợp, số lượng, và chạy các sub-workflow (chính là workflow deploy cũ) cho từng replica; đợi healthcheck của mọi replica.
- Mạng riêng: mỗi container nhận một IPv6 riêng, đẩy vào network control plane chạy theo sự kiện, lan tới mọi proxy và DNS server qua gRPC trong vài mili giây. Service A gọi B qua DNS riêng, chọn ngẫu nhiên một bản ghi AAAA; muốn thuật toán khác thì tự đặt NGINX/HAProxy.
- Mạng công khai: edge là đội Envoy với control plane Go; replica mới gây cập nhật CDS và vào bảng round-robin ngay.
- Replica trải trên nhiều máy; một replica chết thì mạng tự chuyển sang replica khác. Replica giới hạn trong một region; multi-region failover và autoscaling (kể cả scale to zero) là kế hoạch.
- API trước: mọi tính năng mở qua GraphQL API; người dùng tự viết autoscaler từ API metrics + API đổi số replica, đóng gói thành template.
Vì sao
- Theo Railway: nhân bản container là phần dễ; phần khó là mạng, để replica nói chuyện được với nhau không phải đổi code.
- Triết lý: xây primitive, dùng chúng cho tính năng của chính mình, rồi mở cho người dùng.
Bài học cho SWE
- Đi từ "một deployment / service" sang "nhiều instance" là đổi mô hình dữ liệu trước, rồi mới tới orchestration (Nền tảng nội bộ cho service (đường ray chung)).
- Control plane theo sự kiện đẩy endpoint mới tới proxy và DNS nhanh; load balancing đơn giản (ngẫu nhiên, round-robin) là đủ để bắt đầu.
- Nhiều replica trên nhiều máy cho chịu lỗi máy, chưa phải chịu lỗi region (Độ tin cậy và multi-region).
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)