Skip to Content
공부시스템 설계분산 시스템에서 데이터를 전달하는 효율적인 방법분산 시스템 개요

분산 시스템 개요

분산 시스템의 정의

분산 시스템은 목표를 달성하기 위해 여러 개의 컴퓨터 리소스를 사용하는 시스템이다. 시스템 아키텍처 관점에서 보면, 두 개 이상의 컴포넌트가 서로 협업하여 하나의 기능을 수행하는 것을 의미한다.

분산 시스템의 예시

유형설명
엔터프라이즈 아키텍처전통적인 대규모 시스템 아키텍처
마이크로서비스 아키텍처여러 독립적인 서비스를 조합하여 하나의 기능을 수행
모놀리틱 + 외부 시스템모놀리틱 애플리케이션이라도 검색 서버 등 별도의 시스템과 협업하는 경우 분산 시스템에 해당

분산 시스템의 특징

분산 시스템은 네트워크를 통해 데이터를 전달한다. 이는 분산 시스템의 가장 큰 특징이자 주요 도전 과제이다.

데이터 전달 방법

네트워크를 통해 데이터를 전달하는 방법은 크게 두 가지로 분류할 수 있다:

1. Remote API

구분내용
구조서버 + 클라이언트
데이터 처리 위치서버 측(Create, Update, Delete 등) / 클라이언트 측(서버에서 데이터를 가져와 처리)
주요 사용 케이스사용자 요청에 즉각적으로 응답해야 할 때 (게이트웨이, 실시간 데이터)
장점구조가 간단, 빠르고 쉽게 개발 가능

2. Message Queue

구분내용
구조퍼블리셔 + 메시지 큐 + 컨슈머
데이터 처리 위치주로 컨슈머
주요 사용 케이스배치 작업이나 비동기 작업
장점비동기 처리에 적합
단점구조가 비교적 복잡 (컴포넌트 3개)

네트워크의 신뢰성 문제

분산 시스템의 모든 컴포넌트는 네트워크로 연결되어 있다. 하지만 네트워크는 신뢰할 수 없는 매체이다.

발생 가능한 문제

문제설명
패킷 유실네트워크 상에서 패킷이 중간에 누락될 수 있음
네트워크 다운수초에서 수십 시간까지 다운될 수 있으며, 간헐적인 데이터 유실이 발생할 수 있음

개발자의 책임

데이터를 전파할 때 항상 데이터 유실에 대비해야 한다.

이것이 데이터 전달 보장 메커니즘이 필요한 이유이다.

참고 자료

[NHN FORWARD 22] 분산 시스템에서 데이터를 전달하는 효율적인 방법 

Last updated on