Learning
토픽 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, 아키텍처 패턴, 품질 속성