-
Architectural Styles (4) - HierarchicalLearn/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)
'Learn > Architecture' 카테고리의 다른 글
Architectural Styles (5) - Distributed (0) 2023.04.10 Architectural Styles (3) - Implicit Invocation, Interaction Oriented (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