의미
- 시스템의 근본적인 체계를 의미함
- 소프트웨어 아키텍처에는 다음 항목들이 포함됨
- 시스템의 모든 구성 요소
- 각각의 구성 요소가 상호 작용하는 방식
- 구성 요소가 작동하는 환경 및 소프트웨어 설계에 사용되는 원칙
S.O.L.I.D
소프트웨어 아키텍처의 구조적인 오류를 방지하기 위해 반드시 지켜야하는 원칙
Single Responsibility
서비스는 각각의 목표가 있어야함
Open-Closed Principle
소프트웨어의 모듈은 서로 독립적이면서도 확장할 수 있어야 함
Liskov Substitution Principle
독립적인 서비스는 상호작용하며 각각의 서비스를 대체할 수 있어야 함
Interface Segregation Principle
소프트웨어는 마이크로 서비스로 분할될 수 있되, 중복성이 없어야 한다.
Dependency Inversion Principle
상위 모듈은 하위 모듈에 의존해서는 안 되며 상위 모듈의 변경이 하위 모듈에 영향을 미치지 않음
장단점
장점
- 프로젝트를 위한 견고한 기반을 제공함
- 성능 향상에 도움이 됨
- 개발 비용을 절감함
단점
- 때로는 좋은 도구와 표준화를 얻는 것이 소프트웨어 아키텍처의 문제가 되기도 함
- 아키텍처를 기반으로 한 프로젝트의 성공을 초기에 예측하는 것이 항상 정확하지는 않음
더 알아보기
소프트웨어 아키텍처의 패턴
Types of Software Architecture Patterns
참고자료
What Is Software Architecture?
Fundamentals of Software Architecture