728x90
반응형
2022.09.20 - [분류 전체보기] - [소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가
아키텍처 패턴 스타일 왜 등장했는가???
개발은 보통 완료된 후에도 오랜 시간 지속적으로 업그레이드되면서 향상된 서비스와 새로운 서비스를 제공해야 하는데,설계 없이 이런 유지보수, 진화의 작업을 하는 것은 장기적으로 큰 비용의 낭비를 가져오게 됩니다.
그래서 크고 복잡한 소프트웨어 시스템을 만드는 방법이 발전하게 되었습니다.
소프트웨어 아키텍처에 본격적으로 공부하기에 앞서
아키텍처 패턴 스타일의 주요 스타일에 대해서 간략하게 알아보자.!!
🎨 아키텍처 패턴 스타일
시스템 분할, 전체 제어 흐름, 오류 처리 방침, 서브시스템 간의 통신 프로토콜을 포함한다.
- 시스템 전체 구성 요소, 런 타임 제어, 데이터 전송 패턴 등을 명시한다.
먼저 용어 정리부터 간단하게 하자!
용어 정리
- 모듈
- 전체 프로그램 기능중에 특정 기능을 처리할 수 있는 소스코드
- 모듈화
- 소프트웨어의 성능 향상, 시스템 수정, 재사용, 유지관리 용이성을 위해 시스템의 기능들을 모듈 단위로 다누는 것
- 추상화
- 어떤 영역에서 필요로 하는 속성이나 기능을 추출하는 작업
- 문제를 전체적이고 포괄적인 개념을 설계한 후, 이를 세분화 하여 구체화시켜 나가는 행위
- 데이터 구조, 표현방법에 대한 추상화
- 처리 과정에 대한 추상화
- 상속성
- 일반적인 개념의 객체에서 보다 구체적인 개념의 객체의 관계 표현
- 상속관계의 클래스는 부모 클래스의 타입을 내포함
- 부무 클래스의 속성과 기능을 자식 클래스에서 사용하거나 재정의
- 다형성
- 동일한 메시지, 동일한 구현에 대하여 각 객체가 다른 표현과 결과를 나타내는 것
- 클래스의 상속, 인터페이스의 구현 시, 각각의 다른 구현을 가진 클래스들이 상위 타입으로 업캐스팅 되고
이 때, 각 클래스에서 오버라이딩한 메서드가 존재하는 경우 동일한 상위 타입으로 선언된다 하더라도 각각 다른 인스턴스의 메서드가 호출되는 것
- 정보 은닉
- 모듈간에 데이터를 감춰 접근하거나 변경하지 못하도록 하는 기법
- 캡슐화
- 데이터를 감싸서 외부에서 사용 가능한 부분만을 제공
- 클라이언트가 세부적인 사항을 알 필요 없음
- 단순 접근을 제공하여 오류 발생횟수 감소
- 추상화 단계 중 정보은닉을 포함하는 행위
- 객체의 속성과 메서드를 하나로 묶고, 실제 구현의 내용 일부를 감춰 은닉
주요스타일
클라이언트 서버
- 하나의 서버와 다수의 클라이언트로 구성
- 서버(1)
- 자원을 관리하고, 클라이언트가 요청하는 기능이나 자원을 제공
- 클라이언트(N)
- 자원 사용을 위해 서버에 접속
- 장점
- 데이터 집중, 보안
- 단점
- 병목, 비용(서버), 비강인성
- 활용
- 이메일, 문서 공유, 기타 온라인 애플리케이션
계층형
- 소프트웨어의 기능을
수직으로 상호 작용
하는여러 층으로 분할
- 층 사이는
메시지를 교환
- 각 하위 모듈은 특정한 수준의
추상화
를 제공 - 각 계층은 다음 상위 계층에 서비스를 제공
n-티어 아키텍처
라고 불린다.
- 장점
추상화
,캡슐화
, 응집성 높음, 재사용성
- 단점
- 이웃 층과의 커뮤니케이션이 제한적
- 활용
- 일반적인 데스크톱 애플리케이션
- 이커머스 웹 애플리케이션
✨ 일반적으로 볼수 있는 계층 4가지
프레젠테이션 계층 (Presentation layer) - UI 계층 (UI layer) 이라고도 함
애플리케이션 계층 (Application layer) - 서비스 계층 (Service layer) 이라고도 함
비즈니스 논리 계층 (Business logic layer) - 도메인 계층 (Domain layer) 이라고도 함
데이터 접근 계층 (Data access layer) - 영속 계층 (Persistence layer) 이라고도 함
이벤트 기반 아키텍처
- 이벤트 생산자
- 이벤트 스트림 생성
- 이벤트 소비자
- 이벤트 수신 대기
- 이벤트
- 실시간으로 전달되어, 발생 즉시 소비자가 이벤트에 응답한다.
- 장점
- 캡슐화, 확장성
- 단점
- 복잡성, 테스팅이 어려움
현재 마이크로 서비스 아키텍처(MSA)에서 가장 많이 도입
참고: https://www.samsungsds.com/kr/insights/msa_architecture_edm.html
MVC
Model
,Veiw
,Controller
로 분리한 패턴- View
- 결과를 표시하기 위한 인터페이스(
Model
로 데이터를 입/출력)
- 결과를 표시하기 위한 인터페이스(
- Model
View
또는Contoller
가 데이터를 저장하는 저장소Model
을 통해서View
와Contoller
는 데이터를 교환
- Contoller
View
에서 명령을 받으면Model
에 담긴 명령 데이터를 처리하고 결과를 다시Model
에 담아서View
에 제공
- 장점
- 확장성(여러개의
View
지원), 비동기, 각자의 역할에 더 충실()
- 확장성(여러개의
- 단점
- 복잡성(메커니즘 이해 필요)
- 활용
- 웹 애플리케이션 설계 아키텍처(
Spring MVC
)
- 웹 애플리케이션 설계 아키텍처(
파이프 필터
필터
사이에 데이터를 이동시키며단계적
으로 처리- 데이터의 변환을 수행하는
필터
로 구성 - 파이프는 버퍼링 또는 동기화 목적으로 사용가능
- 장점
- 단순성, 재사용, 병렬성
- 단점
- 자원의 낭비
- 활용
컴파일러
, 파싱, 의미 분석 필터
데이터 중심 아키텍처
공유 데이터 저장소
와공유 데이터 접근자
로 구성- 접근자는 공유 데이터를 추가, 조회, 삭제, 수정(
CRUD
) - 블랙보드
- 제어스레드 포함, 옵져버 패턴 사용
- 저장소
- 공유 데이터를 질의하여 변경사항 발견
- 장점
- 낮은 결합, 확장 용이
- 단점
- 단일 장애지점
peer to peer 스타일
- 각 peer(컴포넌트)는 동등하여 서비스를 요청하는 클라이언트인 동시에 서비스를 제공하는 서버
- 대칭적인 시스템(동일한 전송, 수신 데이터 양을 가지기 때문)
- 블록체인
- 각 노드가 상대방 노드를 비교하여 일관성 유지
- 장점
- 전담 서버 없음, 확장성, 신뢰성
- 단점
- 중앙 제어 불가, 노드 증가시 컴포넌트 성능 저하
728x90
반응형
'컴퓨터과학 > 0 + 소프트웨어 아키텍처(디자인 패턴)' 카테고리의 다른 글
[소프트웨어 아키텍처] 6. 상태 패턴(State Pattern -java) (0) | 2022.10.24 |
---|---|
[소프트웨어 아키텍처] 3. 커맨드 패턴(Command Pattern-java) (0) | 2022.10.20 |
[소프트웨어 아키텍처] 4. 옵저버 패턴(Observer Pattern -java) (0) | 2022.10.10 |
[소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가 (1) | 2022.09.20 |
[소프트웨어 아키텍처] 1-1) 소프트웨어 아키텍처 기초지식 (2) | 2022.09.20 |