분산 컴퓨팅 1. 분산 컴퓨팅이란 무엇인가?
- Distributed System
- 2024. 3. 10.
들어가기 전
- 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다.
요약
- 분산된 서버들끼리 네트워크 상에서 메세지를 주고 받으며 작업하는 것을 분산 컴퓨팅이라고 함.
- 비동기 통신은 네트워크를 통해서 보내진 메세지가 정해진 시간 내에 상대 서버에 전달되는 것을 보장할 수 없음을 의미함.
- 비동기 통신으로 메세지를 주고 받는 두 서버는 완전한 합의에 이를 수 없음. (무한히 상대방의 응답을 기다림)
두 장군 이야기
실생활에서 일어날 법한 분산 컴퓨팅 관련 예시를 공부해보자.
- A장군 / B 장군 / 적이 존재함
- A장군 / B 장군은 협공해야 적을 섬멸시킬 수 있음.
A장군 / B장군은 적을 섬멸하기 위해 반드시 협공을 해야한다. 전화 같은 것이 없기 때문에 사람을 보내 '협공 요청'을 보내고 '협공 응답'을 받아야만 협공을 할 수 있는 상태가 된다.
여기서 문제가 발생할 수 있는 부분은 다음과 같다.
A 장군의 협공 요청
A 장군이 협공 요청을 했을 때 다음 경우가 발생할 수 있다.
- A → B : 메세지 정상 전달. 응답도 받음.
- A → B : 메세지 정상 전달. 응답 받지 못함.
- A → B : 메세지 전달 X. 응답 받지 못함.
이런 세 가지 경우가 존재한다.
B 장군의 협공 응답
- B → A : 메세지 정상 전달.
- B → A : 메세지 전달 X
현재 상태의 메세지 전달 문제점은 무한히 재귀하며 아무런 일도 할 수 없다는 점이다. 아래 경우를 고려해보자.
- A → B : 메세지 정상 전달. 응답 받지 못함
이 경우에 A는 B가 협공에 응할 것이라고는 상상할 수 없다. 왜냐하면 B로부터 어떠한 응답도 받지 못했기 때문이다. B의 관점에서도 마찬가지인데, B 역시 A로부터 협공 응답 메세지를 받았다는 것을 확신할 수 없다. B → A로 메세지를 보냈을 때, A → B로 응답이 오지 않았다면 A가 메세지를 정확히 받았는지 알 수 없기 때문이다.
결론적으로 응답을 보냈을 때, 상대로부터 응답을 받지 못한다면 상대가 정상적으로 메세지를 받았는지를 확신할 수 없다. 따라서 A, B 장군은 서로의 응답만 기다리며 무한히 메세지를 보내는 상태가 된다.
분산 컴퓨팅의 정의
분산 컴퓨팅도 위와 유사한 상태가 된다. 서버는 네트워크를 통해 서로 통신하게 되는데, 상대 서버에 메세지를 보냈을 때 상대 서버가 받았을 수도 있고 받지 못했을 수도 있다.
- 서버는 네트워크를 이용해 비동기적으로 통신함.
- 상대 서버는 메세지를 받았을 수도 있고, 받지 못했을 수도 있음.
이것이 분산 컴퓨팅의 일반적인 특성인데, 이 특성은 분산 컴퓨팅을 더욱 이해하기 어렵게 만든다.
'Distributed System' 카테고리의 다른 글
분산 컴퓨팅 10. 벡터 시계와 스냅샷 찍기 (0) | 2024.03.17 |
---|---|
분산 컴퓨팅 3. 시간 동기화 문제와 논리적 시계 (램포트 시계) (0) | 2024.03.17 |
분산 컴퓨팅 2. 중재자와 2단계 커밋 프로토콜 (0) | 2024.03.10 |
분산 프로토콜 : SWIM (0) | 2023.12.16 |
분산 프로토콜 : plum tree (0) | 2023.12.14 |