피드로 돌아가기
Dev Log: deleting code and breaking the build on purpose
Dev.toDev.to
Backend

Public API Guardrail과 Deterministic PRNG 기반의 Mock 데이터 제너레이터 설계

Dev Log: deleting code and breaking the build on purpose

Ernesto Herrera Salinas2026년 6월 15일4intermediate

Context

레거시 프로토타입의 잔재로 인한 설계 결정의 오염과 의도치 않은 Public API 노출 위험 존재. .NET 버전 간 System.Random 알고리즘 불일치로 인한 데이터 생성 결과의 비결정성 해결 필요.

Technical Solution

  • 기존 프로토타입 코드를 전량 삭제하여 신규 설계 원칙과 레거시 간의 충돌 가능성 제거
  • PublicApiAnalyzers 도입을 통한 Public API의 명시적 계약화 및 비허가 심볼 노출 시 빌드 실패 유도
  • Canary Class 테스트를 통한 Guardrail의 실제 작동 여부 검증 및 경계 보호 체계 확립
  • .NET 8.0 및 Nullable Reference Types 적용과 warnings-as-errors 설정을 통한 코드 품질의 강제적 일관성 유지
  • SplitMix64로 시딩된 xoshiro256** PRNG 자체 구현을 통한 OS 및 런타임 버전 독립적 Determinism 확보
  • Reference Vector 기반의 검증 체계를 구축하여 알고리즘 구현의 정확성을 정밀하게 측정

1. Public API 변경 시 텍스트 기반의 화이트리스트(Allow-list) 관리 도구 도입 검토

2. 외부 라이브러리의 Random 함수 대신 결정론적 결과가 필요한 경우 검증된 PRNG 알고리즘 직접 구현

3. 신규 아키텍처 전환 시 레거시 코드의 부분적 유지보다 전량 삭제 후 Git History를 통한 참조 방식 권장

4. 설계 문서의 가설을 검증하기 위해 에지 케이스(예: 순환 참조 모델)를 미리 정의하여 테스트 스위트로 배치

원문 읽기