1. 소프트웨어 아키텍처 (기본 구조)
ㅇ 소프트웨어 시스템의 구조를 정의하는 일련의 고수준 결정 사항 (설계 관점)
* (기능,속성,제약사항 등에 따라, 구성 요소들을 조직화하여, 전체 프레임워크를 표현하게됨)
- 서브시스템(컴포넌트,구성요소)들과 그들 간의 관계를 정의
. (대규모 시스템 > 서브 시스템 > 서비스 모듈)
- 서브시스템을 소프트웨어 또는 하드웨어로 구현할 지 여부
- 외부와의 인터페이스를 결정
- 전체 제어 구조 설계
- 중앙집중, 분산처리 방식을 정하는 등
ㅇ 영향 및 역할
- 시스템의 성능, 확장성, 유지보수성 등에 큰 영향을 미치며,
- 시스템의 성공적인 개발과 운영을 위해 중요한 역할을 합
2. 주요 소프트웨어 아키텍처 패턴들 例)
ㅇ 데이터 중심 아키텍처
- 데이터 저장소(데이터베이스)가 중심이 되는 구조
ㅇ 데이터 흐름 아키텍처
- 데이터가 연속적으로 흐르며 처리되는 방식
ㅇ 클라이언트 서버 아키텍처
- 클라이언트가 서버에 요청하고 서버가 응답하는 구조
ㅇ 계층형 아키텍처
- 기능을 계층으로 나누어 설계하는 방식 (例: 프레젠테이션, 비즈니스, 데이터)
ㅇ 마이크로서비스 아키텍처
- 하나의 큰 애플리케이션을 작고 독립적인 서비스 모음으로 구성하는 설계 방식
ㅇ MVC (Model/View/Controller) 아키텍처
- 모델(Model), 뷰(View), 컨트롤러(Controller)로 역할을 분리하는 구조
. 모델 : 사용자에게 안보이는 영역. DB,내부 알고리즘 등 백드라운드에서 동작하는 로직
. 뷰 : 사용자에게 보여주는 영역
. 컨트롤러 : 모델과 뷰 사이를 연결하는 역할. 사용자의 입력 처리와 흐름 제어를 담당
ㅇ P2P (Peer-to-Peer) 아키텍처
- 중앙 서버의 개입 없이, 노드들이 직접 통신하는 분산 네트워크
ㅇ 3-Tier 아키텍처
- 프레젠테이션, 애플리케이션(비즈니스 로직), 데이터베이스의 3계층 형태의 구조
- 또는, 클라이언트 (Tier 3) - 웹 서버 (Tier 2) - 데이터베이스관리시스템 (Tier 1)