ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Architectural Styles (2) - Data Flow, Data Centered
    Learn/Architecture 2023. 4. 7. 23:04
    Category Style
    Data Flow Batch Sequential
    Pipe and Filter
    Process Control
    Data Centered Shared Repository
    Blackboard

    # Data Flow Architecture

    데이터를 연속적으로 처리하는 시스템에 적합한 구조이다. 

    프로세스가 진행되는 중간에는 인터렉션이 없다는 특징이 있다. 

    여기서는 복잡하지 않은 선형적인 구조만 살펴본다. 

     

    구성 요소는 아래와 같다. 

    컴포넌트 - Data Transformer 

    커넥터 - Data Channel로 I/O에 관련된 것들, buffer 등

     

    ## Batch Sequential

    독립적인 프로그램을 순차적으로 실행하면서 데이터를 처리하는 구조이다. 

    • 컴포넌트 : 독립적인 프로그램
    • 커넥터 : 파일

    한 프로그램이 끝나야 다음 프로그램으로 넘어간다. 

    장점

    • 입출력 형식만 맞추면 변경이나 재사용이 좋다. (Modifiability)
    • 각 단계별로 테스트하면 되므로 테스트가 용이하다. (Testability)

    단점

    • 동시 실행이 안되는 구조이므로 느리고 병목 또한 성능에 영향을 준다. (Performance)
    • 프로세스간 데이터가 넘어가며 노출이나 위변조 가능성이 있다. (Security)
    • 프로세스 중 하나만 멈춰도 전체가 멈춘다. (Availability)

     

    ##  Pipe and Filter Style

    위의 batch sequential과 비슷하나 동시 실행이 가능한 형태이다. 

    loop또한 허용된다. 

    • 컴포넌트 : 필터 (데이터를 변형시키는 역할)
    • 커넥터 : 파이프 (데이터를 보존하고 순서를 유지시켜주는 역할)

    필터에는 두 가지 종류가 있다. 

    • Active filter : 직접 데이터를 읽어오고 변환하고 보낸다. pipe가 passive가 된다. 
    • Passive filter : 변환만 담당하며 읽고 보내는 역할은 active pipe가 해준다. 

     

    장점

    • Batch Sequential과 유사하게 단순하며 변경이나 재사용, 테스트가 용이하다.  (Modifiability, Testability)
    • Batch Sequential과 다르게 병렬 처리가 가능하다. (Performance)

    단점

    • Interactive I/O를 처리하기 어렵다. 이건 Data Flow Arch 공통 
    • 필터가 너무 큰 작업을 하거나 전체 시스템 규모가 크면 느리다. (Performance)
    • 하나의 작업이 멈추면 전체가 진행이 안된다. (Availability)

     

    ## Process Control Style

    데이터 흐름이 변수에 의해 진행되는 구조이다.

    시스템을 안정적으로 유지해야 하는 경우 많이 사용된다. (예 - Cruise Control System)

     

    장점

    • 외부 환경이 예측이 어렵고 방해 요소가 많은 경우에 잘 대응할 수 있다. 
    • 프로세스 제어가 변수 형태이므로 테스트가 쉽다. (Testability)

    단점

    • Unit 하나가 망가지면 시스템 전체가 영향을 받는다. (Availability)

     

    # Data Centered Architecture

    아래와 같이 데이터를 중심으로 상호작용하는 구조이다. 

    클라이언트를 쉽게 늘리거나 변경할 수 있는 장점이 있다. 

    하지만 가운데 데이터가 털리거나 변경되면 시스템 전체가 영향을 받는다. 

     

    Data store이 Active냐 Passive냐에 따라 두 가지 스타일로 나뉜다. 

    ## Shared Repository Style

    Data store가 passive, Client가 active인 스타일이다. 

    대표적으로 DBMS가 여기에 해당된다. 

    장점

    • Data Store를 통해 상호작용 하므로 일관성을 보장할 수 있다. (Interoperability)
    • 클라이언트 추가, 변경이 자유롭다. (Modifiability)
    • 클라이언트간 데이터 이동이 없으므로 오버헤드를 줄일 수 있다. (Performance)
    • 각 클라이언트가 독립적으로 테스트를 수행할 수 있다. (Testability)

     

    단점

    • Data Store이 망가지거나 공격받으면 전체 시스템이 영향을 받는다. (Availability, Security)
    • Data Store 변경이 어렵다. (Modifiiabiltiy)
    • Data Store의 네트워크 속도에 영향을 받는다. 특히 분산처리되면 느릴 수 있다. (Performance)
    • 데이터에 동시에 영향을 미치는 클라이언트가 있다면 테스트가 어렵다. (Testability)

     

    ## Blackboard Style

    Data store가 active, Client가 passive인 스타일이다. 

    해결 전략이 알려져있지 않은 경우 많이 사용되는 구조이다. 

    knowledge source는 단순히 데이터를 사용하는게 아니라 blackboard를 통해 상호작용한다. 

    controller는 blackboard를 관찰하면서 어떤 knowledge source를 쓸지 결정한다. 

     

    아래와 같은 여행 예매 시스템에서 비행기를 일단 예약하면 예산과 장소 등 다양한 정보가 업데이트된다. 

    그러면 controller는 호텔, 자동차 예매등을 실행한다. 

    장점

    • 독립적인 knowledge source들은 동시에 실행 가능하다. (Performance)
    • Data Centered 이므로 상호작용하는 요소들이 같은 Data Store를 바라본다. (Interoperability)

     

     

    단점

    • Blackboard에 문제가 생기면 전체 시스템이 영향을 받는다. (Availability)
    • 클라이언트들이 모두 Data Store에 접근하므로 보안에 취약하다. (Security)

     

    댓글

Designed by Tistory.