Nguồn: GitHub Engineering Blog

Tóm tắt

GitHub đối mặt với một vòng phụ thuộc vòng tròn nghiêm trọng: để deploy GitHub, cần truy cập GitHub, nhưng nếu GitHub bị down thì không thể deploy để sửa nó. Đội kỹ thuật đã nghiên cứu cách phát hiện và ngăn chặn các phụ thuộc vòng tròn này — bao gồm direct dependencies (script deploy tải binary từ GitHub), hidden dependencies (công cụ tự kiểm tra update), và transient dependencies (service gọi qua API tới service khác rồi mới tới GitHub).

Giải pháp là sử dụng eBPF (extended Berkeley Packet Filter), một công nghệ cho phép chạy các chương trình tùy chỉnh trong Linux kernel và hook vào network egress. Cụ thể, đội GitHub sử dụng BPF_PROG_TYPE_CGROUP_SKB để lọc network của từng deployment process riêng biệt — đặt process vào cGroup riêng, đính kèm eBPF program vào cGroup đó, và selectively block các kết nối ra bên ngoài trong quá trình deploy.

Thay vì block toàn bộ outbound traffic (điều này sẽ ảnh hưởng đến production traffic vì đây là stateful hosts), eBPF cho phép block chỉ các process deployment scripts trong khi các process khác vẫn hoạt động bình thường. Proof of concept được viết bằng Go sử dụng thư viện cilium/ebpf, cho phép compile và load eBPF programs trực tiếp mà không cần build kernel modules.

Kết quả là GitHub có thể phát hiện proactively các circular dependencies trước khi chúng gây ra incident, thay vì chỉ phát hiện khi sự cố đã xảy ra. Đây là một use case thực tế thú vị của eBPF trong môi trường production — vượt ra ngoài observability và security để áp dụng vào deployment safety.

👉 Đọc bài gốc