패턴을 제약 조건으로 바라보기
발아점
전통적인 패턴 사용법은 “이 문제에 어떤 패턴을 적용할까?”라는 질문에서 시작한다. 하지만 이 접근법은 종종 과잉 설계(over-engineering)나 패턴의 부적절한 적용으로 이어진다.
핵심 전환
패턴을 해결책이 아닌 제약 조건으로 바라보면 관점이 달라진다. 패턴은 “이렇게 해야 한다”가 아니라 “이 조건을 만족해야 한다”를 알려준다. 이는 설계 공간을 오히려 확장시킨다.
예시: 레이어드 아키텍처
- 템플릿적 접근: “Controller → Service → Repository” 계층 구조를 무조건 따라야 함
- 제약 조건적 접근: “의존성은 한 방향으로만 흘러야 하며, 각 계층은 자신의 하위 계층만 알아야 함”이라는 조건을 만족하는 모든 구조가 허용됨
정원에서의 성장
이 통찰은 단순한 방법론적 조언을 넘어, 시스템 설계의 본질에 닿아 있다. 모든 좋은 설계는 창의성과 제약 사이의 긴장에서 탄생한다. 패턴을 제약 조건으로 보는 것은 이 긴장을 생산적으로 활용하는 방법이다.