피드로 돌아가기
Custom behavior without custom code
Dev.toDev.to
Backend

Data-Driven Customization을 통한 Tenant별 코드 분기 제거 및 배포 제로 구현

Custom behavior without custom code

Ian Johnson2026년 5월 18일9intermediate

Context

SaaS 제품의 Tenant별 개별 요구사항 대응을 위해 if-statement 기반의 조건부 코드를 남발함으로써 발생하는 기술 부채 분석. 코드베이스의 복잡도 증가와 Refactoring 리스크 상승으로 인해 특정 엔지니어에게 의존하는 아키텍처적 병목 현상 발생.

Technical Solution

  • Extension Point 식별을 통해 시스템 내 Tenant별 가변 동작이 필요한 지점을 정의
  • Base Class 기반의 Strategy Pattern을 도입하여 가능한 동작(Behavior)의 규격을 코드 수준에서 선언
  • Concrete Implementation 클래스들을 구현하여 개별 비즈니스 로직을 캡슐화
  • Tenant 설정을 JSON 형태의 Data로 관리하여 런타임 시 적절한 클래스 인스턴스로 Hydration하는 구조 설계
  • Configuration을 순수 데이터로 제한하여 Remote Code Execution(RCE) 취약점을 원천 차단하는 보안 가드레일 설정
  • Code는 메뉴(가능한 동작의 집합)로, Data는 주문(선택된 동작과 파라미터)으로 역할 분리

1. Tenant별 if문 분기가 3개 이상 발견되는 지점을 Extension Point로 정의했는가?

2. 커스텀 로직 구현 시 새로운 클래스를 추가하는 방식(Open-Closed Principle)을 따르고 있는가?

3. 설정 데이터에 실행 가능한 코드나 스크립트가 포함되어 RCE 위험이 있지는 않은가?

4. Tenant 설정 변경이 애플리케이션 배포나 DB 마이그레이션 없이 즉시 반영되는 구조인가?

원문 읽기