분산 시스템 개요
분산 시스템의 정의
분산 시스템은 목표를 달성하기 위해 여러 개의 컴퓨터 리소스를 사용하는 시스템이다. 시스템 아키텍처 관점에서 보면, 두 개 이상의 컴포넌트가 서로 협업하여 하나의 기능을 수행하는 것을 의미한다.
분산 시스템의 예시
| 유형 | 설명 |
|---|---|
| 엔터프라이즈 아키텍처 | 전통적인 대규모 시스템 아키텍처 |
| 마이크로서비스 아키텍처 | 여러 독립적인 서비스를 조합하여 하나의 기능을 수행 |
| 모놀리틱 + 외부 시스템 | 모놀리틱 애플리케이션이라도 검색 서버 등 별도의 시스템과 협업하는 경우 분산 시스템에 해당 |
분산 시스템의 특징
분산 시스템은 네트워크를 통해 데이터를 전달한다. 이는 분산 시스템의 가장 큰 특징이자 주요 도전 과제이다.
데이터 전달 방법
네트워크를 통해 데이터를 전달하는 방법은 크게 두 가지로 분류할 수 있다:
1. Remote API
| 구분 | 내용 |
|---|---|
| 구조 | 서버 + 클라이언트 |
| 데이터 처리 위치 | 서버 측(Create, Update, Delete 등) / 클라이언트 측(서버에서 데이터를 가져와 처리) |
| 주요 사용 케이스 | 사용자 요청에 즉각적으로 응답해야 할 때 (게이트웨이, 실시간 데이터) |
| 장점 | 구조가 간단, 빠르고 쉽게 개발 가능 |
2. Message Queue
| 구분 | 내용 |
|---|---|
| 구조 | 퍼블리셔 + 메시지 큐 + 컨슈머 |
| 데이터 처리 위치 | 주로 컨슈머 |
| 주요 사용 케이스 | 배치 작업이나 비동기 작업 |
| 장점 | 비동기 처리에 적합 |
| 단점 | 구조가 비교적 복잡 (컴포넌트 3개) |
네트워크의 신뢰성 문제
분산 시스템의 모든 컴포넌트는 네트워크로 연결되어 있다. 하지만 네트워크는 신뢰할 수 없는 매체이다.
발생 가능한 문제
| 문제 | 설명 |
|---|---|
| 패킷 유실 | 네트워크 상에서 패킷이 중간에 누락될 수 있음 |
| 네트워크 다운 | 수초에서 수십 시간까지 다운될 수 있으며, 간헐적인 데이터 유실이 발생할 수 있음 |
개발자의 책임
데이터를 전파할 때 항상 데이터 유실에 대비해야 한다.
이것이 데이터 전달 보장 메커니즘이 필요한 이유이다.
참고 자료
Last updated on