[1주차, 1장] 분산 컴퓨팅이란 무엇인가?
이 문서는 [월간-CS][24년 5월] 핵심 이론부터 프로그래밍 실습까지, 분산컴퓨팅을 위해서 작성된 문서입니다. 이 문서에는 그 어떤 저작권이 없으며, 편하게 참고 및 사용하셔도 됩니다.
“학습 목표” 분석하기
도서 “분산 컴퓨팅 1장 학습 목표”에서는 분산 컴퓨팅의 정의, 문제 지점을 아래와 같이 깔끔하게 설명해주고 있었습니다.
서로 떨어져 있는(분산된) 원격의 프로세스(실행 중인 프로그램)들이 어떻게 공동의 목적(기능)을 수행하기 위해서 메세지를 주고 받는 것을 “인간들이 메세지를 주고 받으며 협업하는 상황”에 묘사하고 있습니다.
“두 장군 이야기” 소개
서로 떨어져 있는(분산된)두 장군 A와 B(실행 중인 프로그램)이 정확하게 같은 시간에 적의 중대 Z를 습격하기 위해서는 어떤 문제가 있을까?
이런 환경에서는 아래 제약 조건들에 확률은 합의 성공률은 0에 수렴하게 됩니다.
만약 메세지의 1회 왕복을 최소 합의점으로 약속한다고 쳐도 합의 성귱률은 1/9에 불과합니다.
제약 조건
두 장군 A와 B는 중대 Z를 사이에 두고 동-서 방향으로 포위하고 있다.
두 장군 A와 B는 중대 Z를 습격할 시간을 사전에 합의하지 않았다.
두 장군 A와 B가 대화하기 위해서는 중대 Z의 척후병에 걸리지 않게 몰래 다녀야 한다.
장군 A가 장군 B에게 보낸 메신저가 중대 Z의 척후병에게 걸리면, 싸움의 승패에 따라서 메세지의 전달 여부가 결정된다.
이긴다면, 장군 A의 메세지는 장군 B에게 전달된다.
지거나 비긴다면, 장군 A의 메세지는 장군 B에게 전달되지 못한다.
장군 A가 장군 B에게 보낸 메신저의 도착 여부는 장군 B가 장군 A에게 메세지를 보내기 전에는 알 수 없다. 그 반대도 동일하다.
“분산 컴퓨팅의 정의” 소개
앞서 “두 장군 이야기” 소개에서 알게된 두 장군의 딜레마를 실제 환경에 빗대어 생각해보자.
중대 Z의 척후병 Z’ = 네트워크
메세지 A’ 혹은 B’ =컴퓨터들이 주고 받는 네트워크 패킷
서로 떨어져 있는 두 장군 A, B = 개별 장소에 있는 컴퓨팅 장치
즉 다른 장소에 있는 컴퓨터 장치는 네트워크를 통해 네트워크 패킷을 주고받으며 통신합니다.
“두 장군의 딜레마”와 같이, 네트워크 패킷의 도착 여부 및 도착 시간 준수는 보장되지 않습니다. 따라서 혼잡한 상황에서는 네트워크 패킷을 여러번 보내는 등의 방법을 활용하여, 네트워크 사용자 간의 합의를 통한 의사 결정을 보장하려고 노력한다.
“잘 전달하는 것”과 “합의를 통해서 의사결정”는 것은 다른 문제다.
— 20P, 핵심 이론부터 프로그래밍 실습까지, 분산컴퓨팅