-
Architectural Styles (5) - DistributedLearn/Architecture 2023. 4. 10. 00:00
Category Style Sub-style Distributed Multi-tier Client-Server Broker Dispatcher Service-Oriented Microservice Edge-Based ## Multi-tier
어떻게 구성하냐에 따라 2-tiered, 3-tiered 등 N-tiered로 구성 가능하다.
2-tiered가 아래의 Client-Server 구조이고, 3-tiered는 아래 그림과 같다.
참고로 Layer는 논리적인 구분을, Tier는 물리적인 구분을 뜻한다.
장점
- 비즈니스 로직에 변화가 있어도 미들 티어 정도로 한정된다. (Modifiability)
- 서버를 확충하여 처리량 개선 가능 (Performance)
- 중요한 자원이 있다면 Tier 분리를 할 수 있다. (Security)
단점
- Tier간 통신 오버헤드가 있다.
- Tier가 증가할 수록 서버쪽 Tier의 가용성이 전체에 영향을 줄 수 있다. (Availability)
## Client-Server
장점
- 서버를 이중화하면 가용성을 높일 수 있다. (Availability)
- 클라이언트와 서버는 독립적으로 변경될 수 있다. (Modifiability, Usability)
- 서버의 장비를 개선하거나 동시 처리를 구현하여 속도를 높일 수 있다. (Performance)
단점
- 분산 환경이므로 테스팅이 용이하지 않다. (Testability)
- 서버가 공격받거나 멈추면 영향이 크다. (Availability, Security)
## Broker
분산 컴퓨팅 환경에서 broker가 서버와 클라이언트를 중개해주는 구조이다.
브로커는 적절한 서버를 찾아주고 클라이언트에게 결과를 전달한다.
여러 브로커간의 통신은 브릿지가 중개해준다.
장점
- bridge를 통해 상호 운영성을 지원할 수 있다. (interoperability)
- Client는 서버를 몰라도 수정이 용이하다. (Modifiability)
- 런타임에도 서버 추가가 가능하다.
단점
- 브로커에 문제 발생 시 모든 서비스가 영향을 받을 수 있다. (Availability)
- 간접 통신으로 인한 성능 저하 (Performance)
- 분산된 통신으로 인한 테스팅 어려움 (Testability)
## Dispatcher
브로커 스타일의 변형으로 클라이언트가 어떤 서버랑 통신할지 "찾아만" 준다.
서버는 사전에 dispatcher에 등록되어야 한다.
dispatcher에서는 location map이 필요하다.
장점
- 브로커와 마찬가지로 runtime에 서버 교체가 가능하다.
- 인터페이스만 동일하면 서버 교체가 용이하다. (Modifiability)
단점
- Dispatcher 장애는 전체에 영향을 줄 수 있다.
- 간접 통신으로 인한 성능 저하 (Performance)
- 분산된 통신으로 인한 테스팅 어려움 (Testability)
## Microservice
각 서비스는 독립적이고 각 팀별로 관리한다.
API Gateway가 각 서비스의 노드를 알 필요없게 진입점 역할을 해준다.
장점
- 빠르게 버그를 잡을 수 있고 새로운 기능 추가가 용이하다. (Modifiability)
- 서비스 하나에 문제가 생겨도 전체 시스템이 중단되지 않는다. (Availability)
- 다른 서비스의 플랫폼, 기술, 언어 등의 영향을 받지 않는다. (Interoperatability)
- 각 서비스마다 데이터를 다루므로 보안 측면에서 좋다.
단점
- 파편화 되므로 관리가 어렵다.
- 개별 서비스의 테스트는 용이하지만 의존성이 있으면 어려워진다. (Testability)
- 서비스간 통신 오버헤드가 있을 수 있다. (Performance)
- 거버넌스 관리가 어렵다.
## Edge Computing
중요한 계산을 Edge로 이동시켜 처리하는 방식
장점
로컬에서 컴퓨팅이 수행되므로 중앙 서버에 문제가 생겨도 어느정도 처리가 가능하다. (Availability)
최종 사용자 가까이에서 이루어지므로 보통 빠르고 보안상 유리하다. (Security)
단점
로컬 기기가 보안에 취약하면 보안 위험이 커진다. (Security)
분산 컴퓨팅이므로 테스팅이 어렵다.
'Learn > Architecture' 카테고리의 다른 글
Architectural Styles (4) - Hierarchical (0) 2023.04.09 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