-
Architectural Styles (3) - Implicit Invocation, Interaction OrientedLearn/Architecture 2023. 4. 9. 00:31
Category Style Implicit Invocation Event Based Message Based Interaction Oriented Model-View-Controller Presentation-Abstraction-Control # Implicit Invocation Architecture
직접 프로시저를 호출하는 방식이 아닌 구조가 여기에 해당된다.
## Non-buffered Event-Based Style
observer pattern이라고 보면 된다.
https://push-and-sleep.tistory.com/49
[Design Pattern] Observer Pattern
# 개요 한 쪽의 오브젝트가 변화가 있을 때, 다른 오브젝트들이 노티아야 할 때 사용하는 패턴 Observer Pattern은 아래와 같은 상황을 해결하기 위해 사용된다. 아래의 예시에서 WeatherData는 WeatherStati
push-and-sleep.tistory.com
아래와 같이 buffer없이 event listner가 event source에 등록되는 방식이다.
장점
- 사용할 수 있는 Framework가 많이 있다.
- Event Listener을 동적으로 교체나 추가할 수 있다. (Modifiability)
단점
- Event Listener의 응답 여부나 순서를 예측하기 어려워 테스트가 어렵다. (Testability)
- indirect invocation에 대한 오버헤드가 있다. (Performance)
## Buffered Message-Based Style
메시지를 중재하는 버퍼가 있다.
- Message Producer : 버퍼에 메시지를 보내는 역할로 누가 메시지를 받을지 모른다.
- Message Consumer : 버퍼로부터 받는 역할로 누가 보냈는지 모른다.
pub/sub 구조가 여기에 해당한다.
장점
- 컴포넌트의 오류가 큰 영향을 주지 않는다. 다만 버퍼가 문제가 생기면 영향이 있다. (Availability)
- producer와 consumer이 느슨한 결합이므로 수정이 용이하다. (Modifiability)
- Consumer들이 동시 처리가 가능하다. (Performance)
단점
- producer와 consumer가 독립적이므로 디버깅이 어렵다. (Testability)
- Indirection에 대한 오버헤드가 있다. (Performance)
# Interaction Oriented Architecture
사용자와 상호작용 하는 부분을 분리한 구조이다.
아래와 같이 세 파트로 구성된다.
Data module / Control module / View presentation module
## MVC (Model-View-Controller) Style
- Model : 비즈니스 로직을 구현을 담당
- Controller : 전체를 관장하는 역할을 담당
- View : 유저에게 표시하는 부분을 담당
위와 같이 Observer pattern이며 데이터 변화가 있으면 notify 후 update하는 구조이다.
View와 Controller가 Model에 등록되어있어야 한다.
장점
- View가 분리되어있어서 교체, 추가, 삭제 등 변경이 용이하다. (Modifiability, Usability)
단점
- 복잡도가 높고 View에서 데이터쪽 접근이 효율적이지 않다. (Performance)
- 상호작용하는 구조이므로 디버깅이 어렵다. (Testability)
- 구조상 업데이트가 너무 많아질 수 있다. (Performance)
## PAC(Peresentation-Abstraction-Control) Style
agent가 트리 구조로 구성된 형태이다.
시스템을 계층적으로 나눠야 하는 경우에 적합하다.
각 agent는 세 가지 파트로 구성되어있다.
- Presentation : 유저 인터페이스 (MVC의 V 느낌)
- Abstraction : 데이터와 로직 (MVC의 M 느낌)
- Control : Presentation과 Abstraction 중재 (MVC의 C 느낌)
장점
- agent를 새로 추가하거나 제거하기 쉬우므로 변경이 용이하다. (Modifiability)
- agent 내부에서 Presentation이나 Abstraction을 변경하는 것이 다른 agent에 영향을 주지 않는다. (Modifiability)
- agent별로 테스팅이 용이하다. (Testability)
- MVC와 마찬가지로 유저 인터페이스가 분리되어있어서 사용성을 개선하기 좋다. (Usability)
- 각 agent별로 멀티태스킹이 가능하므로 성능을 개선할 수 있다. (Performance)
단점
- agent간 테스트는 multi-tasking을 고려하면 어렵다. (Testability)
- 시스템 전체 복잡도가 높아지면 agent간 통신 오버헤드가 발생한다. (Performance)
'Learn > Architecture' 카테고리의 다른 글
Architectural Styles (5) - Distributed (0) 2023.04.10 Architectural Styles (4) - Hierarchical (0) 2023.04.09 Architectural Styles (2) - Data Flow, Data Centered (0) 2023.04.07 Architectural Styles (1) - 개요 (0) 2023.04.07 [Design Pattern] MVC Pattern (0) 2022.09.25