피드로 돌아가기
How a Five Line Architecture Test Caught a Data Leak a Code Review Missed
Dev.toDev.to
Backend

CI 기반 Architecture Test 도입을 통한 Multi-tenant 데이터 유출 원천 차단

How a Five Line Architecture Test Caught a Data Leak a Code Review Missed

Sheikh Shahzaman2026년 6월 14일5intermediate

Context

코드 리뷰와 온보딩 가이드에 의존한 BelongsToTenant Trait 적용 방식의 한계로 인한 휴먼 에러 발생. 비즈니스 로직 검토에 집중한 리뷰 과정에서 Trait 누락을 발견하지 못해 실제 Multi-tenant 데이터 유출 사고로 이어진 상황.

Technical Solution

  • Pest PHP의 arch 함수를 활용하여 코드의 동작이 아닌 구조적 제약 사항을 검증하는 Architecture Test 설계
  • App\Models 경로의 모든 모델에 BelongsToTenant Trait 적용 여부를 강제하여 데이터 격리(Isolation) 보장
  • Controller 내 DB Facade 직접 접근 및 Service 내 HTTP Request 의존성 금지를 통해 계층 간 책임 분리(Separation of Concerns) 명문화
  • config 파일 외 env 호출을 금지하여 Production 환경의 Config Cache 적용 시 발생 가능한 Null 반환 런타임 오류 예방
  • 기존 레거시 코드의 대량 실패 방지를 위해 ignoring 메서드를 통한 점진적 마이그레이션 및 Rule 확장 전략 채택
  • CI 파이프라인에 통합하여 매 커밋마다 아키텍처 규칙 위반 여부를 자동 검증하는 강제 기제 마련

1. 가장 치명적인 단일 규칙(예: 보안, 데이터 격리)부터 하나씩 테스트 추가

2. 레거시 코드는 ignoring 리스트로 제외 후 스프린트마다 예외 항목 수를 줄이는 방식으로 리팩토링

3. 신규 프로젝트 시작 시 첫 커밋에 핵심 Architecture Test 세트를 포함하여 기술 부채 원천 차단

4. 공통적으로 적용되는 아키텍처 규칙은 공유 패키지화하여 여러 프로젝트에서 재사용

원문 읽기