피드로 돌아가기
Dev.toBackend
원문 읽기
Public API Guardrail과 Deterministic PRNG 기반의 Mock 데이터 제너레이터 설계
Dev Log: deleting code and breaking the build on purpose
AI 요약
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. 설계 문서의 가설을 검증하기 위해 에지 케이스(예: 순환 참조 모델)를 미리 정의하여 테스트 스위트로 배치