프로세스와 구조의 변증법
모든 것은 흐른다(만물유전). 하지만 우리는 흐르는 것을 붙잡아 분석하고, 재사용하고, 통제하기를 원한다. 바로 이 욕망이 ‘구축’을 탄생시켰다.
- 시간(프로세스): 이벤트, 함수 호출, 데이터 흐름, 상태 변화. 동적이며 예측 불가능하다.
- 공간(구조): 클래스, 모듈, 조직도, 건물의 평면도. 정적이며 예측 가능하다.
구축 패턴은 이 두 세계를 연결하는 ‘시간-공간 변환기’ 이다. 예를 들어:
- 파이프라인 패턴: 데이터가 시간에 따라 단계별로 변환되는 프로세스를, 공간상의 일련의 처리 단계(필터)로 고정시킨다.
- 레이어드 아키텍처: 시간에 따라 진화하는 요구사항을, 공간상의 수평적 계층으로 분리하여 변경의 영향을 국소화한다.
이 통찰의 실용적 의미
- 변경의 어려움은 공간화의 대가이다: 한번 구조(공간)로 고정된 시스템은 변화에 본질적으로 저항한다. 건물을 다시 짓는 것이 어렵듯이, 한번 짠 코드의 아키텍처를 바꾸는 것은 어렵다. 따라서 구축의 예술은 ‘어떤 시간적 흐름을 어떤 공간적 구조로 고정할 것인가’ 를 결정하는 일이다.
- 완벽한 구조는 없다: 시간은 멈추지 않는다. 따라서 모든 구조는 일시적이며, 결국 그 구조가 담고 있는 시간적 흐름과의 부조화로 인해 붕괴되거나 리팩토링되어야 한다. 이는 시스템의 노후화가 단순한 기술 부채가 아니라, 시간과 공간의 근본적인 불일치에서 비롯됨을 의미한다.
연결되는 생각
- 20260613-essence-of-patterns: 패턴의 본질과 제약의 역할.
- temporal-design: 시간성을 고려한 시스템 설계 방법론.
- refactoring-as-time-travel: 리팩토링을 과거의 시간-공간 결정을 수정하는 행위로 바라보는 관점.