Article: Enabling Evolutionary Architecture Through the Preservation of Change Locality

InfoQ · 2026.08.05

경계 드리프트가 조용히 무너뜨리는 것들

백엔드 시스템이 일정 규모 이상으로 성장하면, 어느 순간부터 단순한 기능 하나를 추가하는 데 여러 팀의 회의가 필요해지는 경험을 하게 된다. 기획 단계에서 "이건 간단한 작업"이라 예상했던 변경이 실제로는 서비스 A, B, C에 모두 영향을 미쳐 릴리즈 일정이 몇 주씩 밀리는 상황이다. 이 현상의 근본 원인은 경계 드리프트(Boundary Drift) 다. 도메인 경계가 명확히 설계되더라도, 시간이 지나면서 빠른 배포 압박과 예외 처리 코드가 쌓이면서 경계가 서서히 허물어진다.

경계가 무너지면 변화 지역성(Change Locality) 이 훼손된다. 변화 지역성이란 특정 변경이 하나의 팀 혹은 하나의 서비스 내부에서 완결될 수 있는 특성을 말한다. 이것이 깨지면 변경의 영향 범위가 여러 팀으로 퍼지고, 각 팀의 인지 부하(Cognitive Load)가 급증한다. 진화적 아키텍처(Evolutionary Architecture)의 전제는 "시스템이 변화에 안전하게 적응할 수 있어야 한다"는 것인데, 경계 드리프트는 그 전제를 정면으로 위협한다.

변화 지역성을 복원하는 세 가지 전략

1. 책임 재배치 (Redistributing Mechanics)

잘못된 위치에 놓인 로직이 경계를 오염시키는 가장 흔한 원인이다. 예를 들어 주문 서비스가 결제 정책을 직접 계산하거나, 알림 서비스가 사용자 자격 조건을 스스로 판단하는 경우다. 이런 코드는 처음에는 "임시방편"으로 추가되지만 시간이 지나면 사실상의 정책 소유자가 돼버린다.

// 나쁜 예: OrderService가 결제 정책을 직접 보유
public class OrderService {
    public boolean isEligibleForDiscount(User user, Order order) {
        return user.getMembershipTier().equals("GOLD")
            && order.getTotalAmount() > 100_000;
    }
}

// 개선: 책임을 도메인 소유자에게 재배치
public class DiscountPolicyService {
    public boolean isEligibleForDiscount(User user, Order order) { ... }
}

책임을 원래 도메인 소유자에게 돌려주는 것만으로도 변경 시 협의가 필요한 팀 수를 줄일 수 있다.

2. 핵심 정책 노출 (Exposing Essential Policy)

도메인 간 협력이 필요한 경우, 정책을 암묵적으로 내부에 숨기지 말고 명시적으로 노출해야 한다. 다른 팀이 정책의 존재를 모른 채 우회 로직을 추가하기 시작하면 경계 드리프트가 가속된다. 정책을 명확한 인터페이스나 이벤트로 노출하면 각 팀이 "무엇을 알아야 하는지"를 명확히 이해하고, 불필요한 커플링 없이 협력할 수 있다.

3. 예외 경로 리허설 (Rehearsing Exception Paths)

정상 경로의 경계는 잘 설계되더라도, 예외 처리 흐름에서 경계가 무너지는 경우가 많다. 예외 상황을 설계 단계에서 의도적으로 리허설하면, 예외 처리 코드가 엉뚱한 서비스에 흘러들어가는 것을 사전에 방지할 수 있다. 특히 분산 시스템에서 타임아웃, 부분 실패, 보상 트랜잭션 같은 시나리오를 팀이 함께 시뮬레이션하면 경계를 지키는 설계 결정을 사전에 내릴 수 있다.

소시오테크니컬 관점에서의 실무 함의

이 세 전략의 공통점은 단순한 코드 리팩토링을 넘어 팀 구조와 기술 구조를 동시에 정렬하는 소시오테크니컬 접근이라는 점이다. 콘웨이 법칙이 시사하듯, 시스템 경계는 결국 팀 간 커뮤니케이션 구조를 반영한다. 경계 드리프트를 기술 부채로만 보면 해결책이 리팩토링에 그치지만, 소시오테크니컬 문제로 보면 팀의 소유권과 책임 구조 자체를 재검토하게 된다.

4년 차 이상 개발자라면 코드 수준의 변경을 넘어 "이 변경이 어느 팀의 소유인가"를 설계 결정의 기준으로 삼아야 할 시점이다. 변화 지역성이 잘 보존된 시스템은 팀이 독립적으로 배포하고 실험할 수 있는 진정한 의미의 진화적 아키텍처를 가능하게 한다.

정리

  • 경계 드리프트는 시간이 지나면서 도메인 경계를 조용히 무너뜨려 단순 변경도 다팀 협의가 필요하게 만든다.
  • 변화 지역성 복원을 위해 책임 재배치, 핵심 정책 노출, 예외 경로 리허설 세 가지 전략을 실무에 적용할 수 있다.
  • 이 문제는 기술 부채를 넘어 팀 소유권 구조와 함께 다뤄야 진정한 진화적 아키텍처가 실현된다.
Source
InfoQ
원문 보기 →
← 목록으로 돌아가기