소프트웨어 시스템의 아키텍처란?
- 사람들이 만들어낸 시스템의 형태다.
- 이를 통해 시스템이 쉽게 개발, 배포, 운영, 유지보수되도록 만들어진다.
개발
- 개발팀들이 시스템을 쉽게 개발할 수 있도록 만드는데 도움을 주어야한다.
배포
- 소프트웨어 아키텍처는 시스템을 단 한번에 쉽게 배포할 수 있도록 도움을 주어야 한다.
운영
비용차원
- 아키텍처가 운영에 큰 영향을 주지는 않는다. 한정된 자원을 효율적으로 사용하기 위해 아키텍처를 개선하는 것 보다 하드웨어를 추가하는 비용이 더 싸기 때문.
개발자
- 시스템 아키텍처는 개발자에게 시스템을 운영하는 데 필요한 요구를 알려준다.
- 좋은 시스템 아키텍처는 유스케이스, 기능, 시스템의 필수 행위를 일급 엔티티로 격상시키고, 이들 요소가 개발자에게 주요 목표로 인식되도록 한다. 이를 통해 시스템을 이해하기 쉬워지며, 따라서 개발과 유지보수에 큰 도움이 된다.
유지보수
- 시스템 아키텍처는 유지보수하기 위해 필요한 탐사 시간을 줄여준다.
- A컴포넌트가 어떤 컴포넌트에 의존성을 가지고 있는지 명확하게 보여줄 수 있으므로, 에러를 찾기 위한 디버깅 작업 시간을 줄여 줄 수 있다.
선택사항 열어 두기
- 시스템 아키텍처는 세부사항과는 독립적인 고수준의 정책을 세워두되 최대한 선택 가능한 세부사항 결정 경우의 수를 검토할 수 있어야 한다.
- 프레임워크, 데이터베이스, 웹 서버 등과 같은 기술(세부사항)이 개발 방향을 이끌게 해서는 안되고, 시스템을 구축하게 하기 위한 하나의 도구로써 자리 잡도록 설계를 해야 한다.