피드로 돌아가기
AI Added Caching to Your Code — And Quietly Polluted Your Business Logic
Dev.toDev.to
Backend

Decorator Pattern을 통한 Caching 계층 분리와 비즈니스 로직 오염 제거

AI Added Caching to Your Code — And Quietly Polluted Your Business Logic

Recca Tsai2026년 6월 9일8intermediate

Context

AI 기반 코드 생성 시 Caching 로직이 Service나 Repository 내부에 직접 삽입되어 단일 책임 원칙(SRP)을 위반하는 문제 발생. 단순 클래스 분리만으로는 Concrete Class 간의 강한 결합도와 호출자의 의존성 증가라는 아키텍처적 한계 존재.

Technical Solution

  • IUserRepository 인터페이스 정의를 통한 데이터 액세스 표준 계약 수립
  • Core Repository 구현체에서 Caching 지식을 완전히 제거하여 DB 쿼리 책임만 유지
  • 인터페이스를 구현하는 CachedUserRepository를 Decorator로 설계하여 Caching 로직 캡슐화
  • DI Container 수준에서 Decorator를 중첩 구성하여 호출자에게는 인터페이스만 노출
  • Logging, Retry 등 Cross-cutting Concern을 동일한 Decorator 구조로 확장 가능한 유연성 확보
  • Interface 기반 의존성 주입을 통한 Concrete Class 간 결합도 제거 및 테스트 격리 달성

1. Caching 도입 전 인터페이스 경계(Interface Boundary)를 먼저 정의했는가?

2. 비즈니스 로직 클래스가 Cache 라이브러리나 키 생성 전략을 직접 알고 있는가?

3. Caching 전략 변경 시 Core Repository 코드를 수정해야 하는 구조인가?

4. Mock 객체 생성 시 Cache와 DB 의존성을 각각 독립적으로 테스트할 수 있는가?

원문 읽기