Scaling AWS Infrastructure to Support Multiple Regions
Bài tóm tắt Grammarly 2021 3. Quy mô lớn Độ khó: Trung bình
Grammarly · 2021 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bài viết khi migration còn đang chạy; không có số liệu kết quả.
Bối cảnh
- Mục tiêu: đưa neural network và API gần user hơn (giao diện phản hồi nhanh), đồng thời tách môi trường để đạt SOC 2 Type 2 và ISO.
- Trước: một region, ba AZ; mỗi team một tài khoản AWS, thường một VPC mỗi tài khoản, nên QA, pre-production, production của một team chung VPC, cách ly bằng security group; nối VPC bằng peering.
- Vì sao không bền khi lớn lên (theo Grammarly): team đổi liên tục nên khó biết ai sở hữu và ai trả tiền; chạm giới hạn AWS theo tài khoản, VPC, AZ; không muốn quản lý tay hơn 2.500 IAM permission để tách môi trường trong một tài khoản; hàng trăm tài khoản và VPC nối peering thì quá phức tạp.
Thay đổi chính
- Mỗi tài khoản AWS = một môi trường của một project (least privilege, service control policy khác nhau theo môi trường; nhóm bằng organizational unit).
- Tách tài khoản khỏi VPC: phần cần latency thấp nhất nhưng phải tách quyền quản trị thì ở tài khoản khác nhau trong một VPC dùng chung (VPC sharing), cũng giảm phí traffic. Mỗi môi trường có một tài khoản networking trung tâm, giao cho team mạng.
- Transit Gateway thay VPC peering, mesh đầy đủ giữa các region; quy hoạch địa chỉ IP với route summarization (mỗi region một khối mạng, route toàn cục theo khối) nên khai báo route một lần. PrivateLink cho một số service xuyên môi trường.
- Shard dải IP theo cỡ (nhỏ, vừa, lớn); project lớn lên thì thêm dải mạng vào VPC, không phải dựng lại.
- Migration: lập tay bản đồ giao tiếp giữa service để không mang theo route cũ; công cụ nội bộ (Terraform + Go) tạo tài khoản mới tự động, self-service qua một form, khoảng hai giờ. Khó nhất là các service "dùng chung" (ví dụ công cụ test như Selenoid) không khớp mô hình "cô lập mặc định".
- Kết quả theo bài: sẵn sàng cho ít nhất năm region, mọi thứ (môi trường, project, mạng) cô lập mặc định.
Bài học cho SWE
- Đa region bắt đầu từ nền mạng và tài khoản: ranh giới theo môi trường/project, quy hoạch IP cho route tổng hợp được (Độ tin cậy và multi-region).
- Ranh giới theo team là ranh giới dễ đổi nhất; đặt ranh giới hạ tầng theo thứ ổn định hơn (project, môi trường).
- Một migration hạ tầng lớn chỉ đi được khi việc tạo môi trường mới là self-service và nhanh (Nền tảng nội bộ cho service (đường ray chung)).
Liên quan
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (2)