
206
3부
영향력
는 사고방식에 익숙해져야 한다. 대부분 아키텍처는 확장성에 관한 서비스 수준 계약과 테스트
를 수반하며, 보안 규정과 검증 메커니즘을 마련한다. 아키텍트는 종종 이 둘을 별개의 범주로
구별하곤 하지만 양쪽 모두 목적은 동일하다. 그것은 바로 아키텍처 기능 일부를 검증하는 것
이다. 모든 아키텍처 검증을 피트니스 함수로 구현하면, 자동화처럼 유익한 시너지를 내는 각
종 상호작용을 한층 일관성 있게 정의할 수 있다.
리팩터링 vs 재구성
개발자는 가끔 그럴싸해 보이는 용어를 한 가지 골라 광의의 동의어로 격상시키곤 한다. 리팩터링이 그 대표
적인 사례다. 마틴 파울러의 정의에 따르면 리팩터링은 외부로 드러나는 행동을 그대로 둔 채 기존 컴퓨터 코
드를 재구성하는 프로세스다. 리팩터링과 변화를 동의어로 여기는 개발자가 많지만 둘 사이에는 중요한 차이
점이 있다.
아키텍처를 리팩터링하는 일은 거의 없다. 그보다는 재구성
restructure
을 통해 구조와 행동 모두에 실질적인 변
화를 일으키는 경우가 많다. 아키텍처 패턴은 애플리케이션을 대표하는 아키텍처 특성을 부여하는 역할도 한
다. 아키텍처 교체는 이러한 대표 특성의 변화를 의미하며, 리팩터링과는 다르다. 예를 들어 아키텍트가 확장
성에 중점을 두고 이벤트 주도 아키텍처를 선택했다고 가정하자. 이후 ...