더북(TheBook)

이러한 변화가 없다면 단순히 소프트웨어 제품을 설계하고 출시한 뒤 다음 과제로 넘어가면 됩니다. 하지만 실제로 이렇게 돌아가는 소프트웨어 시스템은 거의 없습니다. 오늘날 소프트웨어 개발은 개별 제품을 생산하기보다 클라이언트 수백만 명과 서버 수천 개에 걸쳐 실행되는 시스템을 지속적으로 변경하고 관리하는 것이 훨씬 더 중요합니다. 시스템 변경은 시스템의 구성 요소를 수정하는 것이며, 이는 현재와 이전 버전의 다른 구성 요소와도 동시에 호환되어야 합니다. 아울러 병렬적으로 또 다른 시스템을 변경하기도 합니다. 즉, 지속적인 시스템 변화는 당연한 현상입니다.

이러한 시스템 변화 때문에 소프트웨어 개발에서는 소프트웨어 아키텍처가 필요한 것입니다. 소프트웨어 아키텍처는 단순히 하나의 설계를 만드는 것을 넘어 시간 흐름에 따라 설계가 어떻게 발전해야 하는지도 고려하기 때문입니다. 1장에서 설명했듯이, 시스템 아키텍처는 반복적으로 설계를 생성하는 템플릿 역할을 합니다. 각 설계는 이전 설계와 구별되지만 동시에 서로 연관되며, 제약을 받습니다. 다시 말해 각 아키텍처는 그에 부합하는 여러 잠재적인 설계 집합을 나타냅니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.