GitHub Enterprise Cloud with data residency: How we built the next evolution of GitHub Enterprise using GitHub
Bài tóm tắt GitHub 2024 3. Quy mô lớn Độ khó: Trung bình
GitHub · 2024 · 3. Quy mô lớn · Độ khó: Trung bình — bài gốc
Bài có phần quảng bá (dùng chính sản phẩm GitHub để làm); phần kỹ thuật chủ yếu là cách mở rộng pipeline deploy sang target mới.
Bối cảnh
- Doanh nghiệp muốn kiểm soát dữ liệu của mình nằm ở vùng địa lý nào. GitHub làm Enterprise Cloud with data residency: namespace riêng trên
ghe.com, tách khỏi github.com, chạy trên Azure; bắt đầu từ EU (10/2024). Dự án nhiều năm, bắt đầu bằng PoC mùa hè 2022, hơn 100 team và hơn 2.000 issue.
Thay đổi chính
- Kiến trúc: mở rộng, không tách nhánh. Sau vài hướng thử, họ làm sản phẩm mới như một tập tính năng mở rộng Enterprise Cloud, để luôn đồng bộ tính năng với github.com; dùng vùng của Azure thay vì tự xây data center. Kiến trúc hai bên gần giống nhau để giảm độ phức tạp, rủi ro và chi phí phát triển.
- Một pipeline cho mọi target: vẫn mô hình deploy then merge (deploy nhánh trước khi merge) qua merge queue. Thứ tự: deploy song song tới các môi trường nhân viên dùng (gồm một môi trường data residency nội bộ) → test tự động và tay → canary (load balancer chuyển dần phần trăm traffic github.com) → toàn bộ github.com → deploy và kiểm tra data residency ở EU → mới merge PR. Deploy tới github.com và data residency cách nhau vài phút. Target nào lỗi thì rollback toàn bộ, sửa xong chạy lại từ merge queue. Feature flag vẫn dùng để mở dần theo nhóm khách.
- Sinh pipeline tự động cho hơn 100 service, để thêm target mới thì mọi service tự deploy tới đó theo thứ tự nhất quán.
- Tự dùng: chuyển công việc hằng ngày của đội GitHub Enterprise Importer sang một môi trường data residency riêng; đã deploy tới đó hơn 8.000 lần.
Vì sao
- Một sản phẩm tách nhánh sẽ lệch tính năng và đòi pipeline riêng; coi vùng mới là thêm một target deploy của cùng code giữ được mọi môi trường đồng bộ và theo dõi chung (Deploy và release an toàn, Độ tin cậy và multi-region).
Bài học cho SWE
- Thêm vùng/môi trường mới thì thêm target vào pipeline chung, không dựng pipeline riêng.
- "Chỉ merge khi đã deploy thành công ở mọi target" giữ main luôn khớp với production ở mọi nơi; cái giá là một target lỗi làm dừng tất cả.
- Sinh cấu hình deploy từ một nguồn cho mọi service để target mới không phải sửa tay từng service.
Liên quan
- GitHub 2021 (pipeline deploy trước đó) · GitHub 2026 · Grab 2022 (sinh cấu hình pipeline)
- Deploy và release an toàn · Độ tin cậy và multi-region
#Data residency#ghe.com#Azure#Deploy then merge#Merge queue#Canary#Feature flag#Deployment pipeline sinh tự động#Dogfooding
Được nhắc tới trong
Công ty (1)