피드로 돌아가기
Engineering Post: Locking the public surface before writing a single feature
Dev.toDev.to
Backend

Build-time 가드레일 기반의 Zero-Zero-API Baseline 설계 전략

Engineering Post: Locking the public surface before writing a single feature

Ernesto Herrera Salinas2026년 6월 15일4intermediate

Context

기능 구현 전 API 설계 단계에서 의도치 않은 Public Interface 노출로 인한 하위험 관리 필요. 단순한 코드 리뷰에 의존하는 API 관리 방식의 한계를 극복하기 위해 빌드 시스템 수준의 강제적 제어 장치 설계 요구

Technical Solution

  • PublicApiAnalyzers를 도입하여 PublicAPI.Shipped.txt 파일에 정의된 심볼 외의 모든 public 멤버 선언 시 RS0016 에러 발생 구조 설계
  • TreatWarningsAsErrors 설정을 통해 누락된 XML 주석(CS1591) 및 API 불일치를 빌드 실패로 연결하여 API 설계를 강제적 결정 사항으로 격상
  • M0 단계에서 Zero-API Baseline을 설정하여 기능 구현 전으로 Public Surface를 완전히 잠금 처리
  • Canary 클래스를 활용한 의도적 빌드 실패 테스트로 API 가드레일의 작동 여부를 검증하는 'Testing the test' 프로세스 수행
  • Directory.Build.props를 통한 net8.0, Nullable enable 등 프로젝트 전반의 공유 제약 사항 단일화
  • Shared TestModels 프로젝트를 분리하여 다양한 테스트 프로젝트 간의 피처 일관성 확보 및 순환 참조 모델 검증 환경 구축

- PublicApiAnalyzers를 통해 API 변경 사항을 텍스트 파일로 추적하고 PR 리뷰의 객관적 지표로 활용 - TreatWarningsAsErrors 설정을 통해 문서화 및 Nullability 처리를 사후 작업이 아닌 빌드 필수 조건으로 설정 - 기능 구현 전 Canary 테스트를 통해 구축한 아키텍처 제약 사항이 실제로 작동하는지 우선 검증 - 공유 테스트 모델을 별도 프로젝트로 분리하여 단위/수용/벤치마크 테스트 간 데이터 정합성 유지

원문 읽기