ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Architectural Styles (4) - Hierarchical
    Learn/Architecture 2023. 4. 9. 21:24
    Category Style Sub-style
    Hierarchical Main-Subroutine  
    Master-Slave  
    Layered Virtual Machine
      Microkernel

     

    # Hierarchical Architecture

    말그대로 계층 구조이다. 

     

    ## Main-Subroutine Style

    프로시저가 계층 구조로 구성되어있으며 단일 쓰레드이다. 

    Main과 Sub은 강한 결합으로 구성된다. 

    장점

    • sub routine간은 분리되어 테스트가 용이하다. (Testability)

    단점

    • 전역 데이터를 쓰는 경우가 많으므로 보안이 취약하다. (Security)
    • 전역 데이터에 변경이 있을 경우 전체에 영향을 미친다. (Modifiability)
    • Main과 Sub이 강하게 결합되므로 가용성이 낮다. (Availability)
    • 단일 쓰레드 구조이므로 성능이 떨어진다. (Performance)

     

    ## Master-Slave Style

    master와 이를 복제한 slave로 구성된 구조로 fault tolerance를 지원하는 형태이다. 

    slave는 master와 같은 기능을 가지지만 알고리즘은 다를 수 있다. 

     

    아래와 같이 DB를 이중화할 수 있다. 

    장점

    • 다중화가 가능하여 장애에 잘 대비할 수 있다. (Availability)
    • Slave 변경이 다른 Slave나 Master에 미치는 영향이 적다. (Modifiability)
    • Slave가 공격받으면 Master에서 대비할 수 있다. (Security)

    단점

    • Master가 공격받으면 치명적이다. (Security)
    • Slave끼리 복잡하게 엮어서 서비스 할 경우 테스트가 어렵다. (Testability)

     

     

    ## Layered Style

    이름 그대로 레이어로 나눠진 구조이다. 

    장점

    • 오직 하위 계층만 고려하면 되므로 수정이 용이하다. (Modifiability) 
    • 각 계층의 정보를 다른 계층에 노출되지 않도록 감출 수 있다. (Security)

    단점

    • 상위에서 하위 계층으로 접근 시 중간 계층을 거쳐야 하는 오버헤드가 있다. (Performance)
    • 레이어 수를 정하는게 쉽지 않다. 

     

    ## Virtual Machine

    플랫폼과 어플리케이션 사이에 VM을 두는 구조이다. 

    장점

    • VM이 타 시스템과의 상호 운영시 발생하는 불일치 문제를 처리하게 할 수 있다. (Interoperability)
    • VM이 플랫폼 의존적인 부분을 감춰주므로 이식성이 높다. (Modifiability)

    단점

    • VM의 오류가 어플리케이션에 영향을 준다. (Availability)
    • VM이 중간에서 인터프리터 역할을 하므로 오버헤드가 된다. (Performance)

     

    ## Microkernel

    핵심적인 부분을 Microkernel에 담아두는 구조이다. 

    아래는 하나의 예시일 뿐이고 다양한 구현 방법이 있다. 

    장점

    • 분산형 구조로 설계하면 가용성을 높일 수 있다. (Availability)
    • 어댑터를 통해서 클라이언트간의 불일치를 해결할 수 있다. (Modifiability)
    • 플러그인 추가, 변경이 다른 플러그인이나 Core에 영향을 주지 않는다. 

    단점

    Monolithic 구조에 비해 느리다. (Performance)

    Core 쪽에 공격받으면 치명적이다. (Security)

     

     

    댓글

Designed by Tistory.