프로세스와 구조의 변증법

모든 것은 흐른다(만물유전). 하지만 우리는 흐르는 것을 붙잡아 분석하고, 재사용하고, 통제하기를 원한다. 바로 이 욕망이 ‘구축’을 탄생시켰다.

  • 시간(프로세스): 이벤트, 함수 호출, 데이터 흐름, 상태 변화. 동적이며 예측 불가능하다.
  • 공간(구조): 클래스, 모듈, 조직도, 건물의 평면도. 정적이며 예측 가능하다.

구축 패턴은 이 두 세계를 연결하는 ‘시간-공간 변환기’ 이다. 예를 들어:

  • 파이프라인 패턴: 데이터가 시간에 따라 단계별로 변환되는 프로세스를, 공간상의 일련의 처리 단계(필터)로 고정시킨다.
  • 레이어드 아키텍처: 시간에 따라 진화하는 요구사항을, 공간상의 수평적 계층으로 분리하여 변경의 영향을 국소화한다.

이 통찰의 실용적 의미

  1. 변경의 어려움은 공간화의 대가이다: 한번 구조(공간)로 고정된 시스템은 변화에 본질적으로 저항한다. 건물을 다시 짓는 것이 어렵듯이, 한번 짠 코드의 아키텍처를 바꾸는 것은 어렵다. 따라서 구축의 예술은 ‘어떤 시간적 흐름을 어떤 공간적 구조로 고정할 것인가’ 를 결정하는 일이다.
  2. 완벽한 구조는 없다: 시간은 멈추지 않는다. 따라서 모든 구조는 일시적이며, 결국 그 구조가 담고 있는 시간적 흐름과의 부조화로 인해 붕괴되거나 리팩토링되어야 한다. 이는 시스템의 노후화가 단순한 기술 부채가 아니라, 시간과 공간의 근본적인 불일치에서 비롯됨을 의미한다.

연결되는 생각