피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Merge Queue Merge Base 계산 오류로 인한 2,092개 PR 코드 소실 사고
GitHub Broke Git: The Merge Queue Bug That Silently Deleted Your Code
AI 요약
Context
GitHub Merge Queue는 PR의 순차적 병합을 위해 임시 브랜치를 생성하여 CI를 검증하는 구조임. 기존 아키텍처는 Main 브랜치의 최신 지점(Tip)을 기준으로 Diff를 적용하여 병합 일관성을 유지함.
Technical Solution
- Feature Flag 설정 미비로 인해 Merge Base 계산 로직이 잘못 적용된 신규 코드 경로가 운영 환경에 노출됨
- 임시 브랜치 생성 시 Main의 최신 지점이 아닌, PR의 최초 분기 지점을 기준점으로 설정하는 Regression 발생
- PR의 Diff가 아닌 분기 지점부터의 전체 내용을 Main에 강제 푸시하여 타 엔지니어의 기커밋 내용을 덮어쓰는 구조적 결함 초래
- 내부 일관성만 검증하는 CI 특성상 Main 브랜치와의 상태 불일치를 감지하지 못한 채 Green Check 출력
- Ruby 기반 레거시 코드의 성능 한계 극복을 위해 Go 언어로의 마이그레이션 및 퍼블릭 클라우드 인프라 이전 추진
실천 포인트
- Squash Merge 적용 시 병합 전후의 Git Tree 상태를 비교 검증하는 자동화 테스트 구축 - Feature Flag 적용 시 모든 코드 경로에 대해 완전한 격리가 이루어졌는지 검증하는 정적 분석 도입 - 인프라의 Status Page 수치와 실제 데이터 무결성 지표를 분리하여 정의하고 모니터링