토픽 42 / 192·소프트웨어 설계와 아키텍처
소프트웨어 아키텍처 (Software Architecture)
소프트웨어 아키텍처 (Software Architecture)
소프트웨어 시스템의 고수준 구조로, 구성요소(컴포넌트), 그들 간의 관계, 그리고 설계 및 진화를 이끄는 원칙을 정의한 것
목적: 품질 속성 달성, 의사결정 기록, 의사소통 수단, 재사용
구성요소
- •컴포넌트(Component): 기능 단위
- •커넥터(Connector): 컴포넌트 간 상호작용
- •제약조건(Constraint): 설계 규칙
아키텍처 뷰(4+1 View)
- •논리 뷰(Logical): 기능적 요구사항 (클래스, 객체)
- •프로세스 뷰(Process): 동시성, 성능 (프로세스, 스레드)
- •개발 뷰(Development): 모듈 조직 (패키지, 컴포넌트)
- •물리 뷰(Physical): 배포, 인프라 (노드, 네트워크)
- •+1 유스케이스 뷰: 시나리오로 검증
아키텍처 스타일: 계층형, 클라이언트-서버, 마이크로서비스, 이벤트기반, 파이프필터
품질 속성과 연관: 성능, 확장성, 보안, 가용성, 유지보수성
문서화: C4 모델, UML 컴포넌트/배포도, ADR
비교: 아키텍처(What/High-level) vs 설계(How/Detail)
연관: 4+1 View, 아키텍처 패턴, 품질 속성