시스템 아키텍처(system architecture)
시스템의 구성 요소와 구성 요소 간의 관계, 그리고 동작 방식을 정의하는 설계도(청사진)이다.
시스템 아키텍처의 정의가 다양한 이유
시스템 아키텍처는 하나의 고정된 정의가 존재하지 않는다.
그 이유는 ‘Architecture’ 자체가 ‘구조(Structure)‘를 설명하는 개념으로, 시스템을 바라보는 관점, 해결해야하는 요구사항, 그리고 시스템의 범위와 적용 분야 등에 따라 강조하는 요소가 달라지기 때문이다.
- 관점: 개발자/시스템 설계자/운영자/네트워크 엔지니어/경영진 등
- 요구사항: 성능/보안/확장성/유지보수성/가용성/비용 등
- 시스템의 범위: 기업 전체 시스템/쇼핑몰 시스템만/주문 서비스 하나만/주문 서비스 내부 클래스 구조만 등
- 적용 분야: 임베디드/웹/모바일 앱/클라우드/의료 시스템/자동차 시스템 등
- 기술 및 개발 패러다임의 변화: 새로운 개발 패러다임이나 기술의 등장으로 아키텍처를 바라보는 방식과 설계 방법이 변화함.
시스템 아키텍처의 공통적인 특징
여러 정의를 종합하면 시스템 아키텍처는 다음과 같은 공통적인 특징을 가진다.
- 시스템의 구성 요소와 각 요소의 역할을 정의함.
- 구성 요소 간의 관계와 상호작용을 정의함.
- 시스템과 외부 환경(다른 시스템, 사용자, 네트워크 등) 과의 관계를 설명함.
- 요구사항을 만족하도록 시스템을 논리적으로 구성함.
- 하드웨어와 소프트웨어를 모두 포함한 전체 시스템의 구조를 다룸.
- 시스템의 생명주기(설계, 구현, 운영, 유지보수) 전반에 걸쳐 활용되는 장기적인 설계 기준이 됨.
- 시스템 설계와 구현의 기준이 되는 원칙과 제약을 제공함.
시스템 아키텍처의 역할
시스템 아키텍처는 단순한 설계도가 아니라 다음과 같은 역할을 수행한다.
- 시스템의 전체 구조를 이해할 수 있도록 함.
- 개발자와 설계자 간의 공통된 의사소통 수단
- 설계와 구현 방향을 제시하는 기준
- 시스템의 변경과 확장을 용이하게 함.
- 시스템의 성능, 확장성, 보안, 유지보수성 등의 품질 속성을 만족하기 위한 기준
- 복잡한 시스템을 관리 가능한 구조로 설계