
39
1
장
진화적 소프트웨어 아키텍처
다. 그러나 건축과 마찬가지로 완벽한 아키텍처란 존재하지 않는다. 아키텍처마다 설계자의 트
레이드오프 취급 방식이 다를 뿐이다. 아키텍트는 다양한 아키텍처 스타일을 통해 대부분 문제
를 구현하고 해결할 수 있다. 그러나 그중에서도 특정 문제에 더 잘 어울리며 부작용이 없고 손
이 덜 가는 해결책이 존재하기 마련이다.
장기적인 목표를 뒷받침할 만한 구조와 거버넌스를 확보하는 것, 또한 이들이 불필요한 형식과
저항을 낳지 않을 정도로 제한하는 것, 이 두 조건 사이에 균형을 유지하는 것이 바로 진화적
아키텍처의 핵심이다.
요약
유용한 소프트웨어 시스템은 정적이지 않다. 문제 도메인이 변화하고 생태계가 진화함에 따라
시스템은 성장과 변화를 거듭하며 더 나은 기능성과 복잡성을 제공해야 한다. 아키텍트와 개발
자는 함께 소프트웨어 시스템을 우아하게 발전시켜야 하며, 이를 실현하는 데 필요한 엔지니어
링 관행을 이해해야 한다. 다른 한편으로는 변화를 촉진하는 최적의 아키텍처 구축 방법을 고
민해야 한다.
또한 아키텍트는 자신이 설계한 소프트웨어와 이를 구축하는 데 쓰인 다양한 개발 관행을 관리
할 책임이 있다. 다행스럽게도, 진화를 장려하는 메커니즘은 핵심적인 소프트웨어 거버넌스 활
동을 자동화하는 방법을 함께 제공한다. 이를 현실화시키는 ...