ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Architectural Styles (3) - Implicit Invocation, Interaction Oriented
    Learn/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)

    댓글

Designed by Tistory.