들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 스냅샷은 프로세스 / 채널 State가 모두 포함됨. 분산 시스템의 스냅샷을 챈디 - 램포트 알고리즘을 통해서 작성할 수 있음. 챈디 - 램포트 알고리즘은 마커를 이용해서 채널의 State를 정확히 기록함. 10.1 단체 메세징 어플리케이션 문제 10.2 벡터 시계 10.3 전역 스냅샷 분산 시스템에서 특정 시점의 상태를 잘 보존해둔다면 분산 시스템 운영에 많은 도움이 될 수 있다. 예를 들어 장애가 발생해서 분산 시스템을 전체 재기동 해야하는 경우, 해당 시점의 상태로 돌아가는데 사용할 수 있기 때문이다. 분산 시스템에서 상태 보존의 대상이 되는 것은 크게 두 가지..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 참여자들은 시간 동기화가 되어야 하는 경우가 많음. 분산 시스템에서 시간 동기화가 이루어지지 않는다면, Data Inconsistency가 발생할 수 있음. 분산 시스템의 완전한 시간 동기화는 '절대적 시간' 기준으로는 달성하기 어려움. 분산 시스템의 시간 동기화는 '램포트 시계'를 기준으로 '논리적 시간'으로 동기화 할 수 있음. 시간 동기화가 되지 않아 발생하는 Data Inconsistency는 램포트 시계를 포함한 프로토콜로 해결할 수 있지만, 적절한 프로토콜이 수립되어야 의미가 있음. 3.1 이중화 된 데이터베이스 문제 분산 시스템에서 시간 동기화를 알아보기..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 핵심 요약 2.1 계좌 이체 문제 A → B로 1,000원을 이체하는 경우를 고려해보자. 이를 위해서는 다음 두 가지 동작이 원자적으로 일어나야 한다. A 계좌에서 1,000원 감소. B 계좌에서 1,000원 증가 A, B가 서로 직접 소통하는 경우에는 이 작업은 원자적으로 이루어지지 않거나, 평생 아무런 일도 발생하지 않을 것이다. A → B : B 계좌 1,000원 증액 요청 B → A : B 계좌 1,000원 확인 응답 A → B : 메세지 2번의 확인 응답 ... 먼저 메세지 1번에 대해 B가 적절히 응답하지 못하는 경우, A는 자신의 계좌에서 1,000원 감소시킬 수 없다. 만약 그렇게 한다면 A의 계좌..
들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 요약 분산된 서버들끼리 네트워크 상에서 메세지를 주고 받으며 작업하는 것을 분산 컴퓨팅이라고 함. 비동기 통신은 네트워크를 통해서 보내진 메세지가 정해진 시간 내에 상대 서버에 전달되는 것을 보장할 수 없음을 의미함. 비동기 통신으로 메세지를 주고 받는 두 서버는 완전한 합의에 이를 수 없음. (무한히 상대방의 응답을 기다림) 두 장군 이야기 실생활에서 일어날 법한 분산 컴퓨팅 관련 예시를 공부해보자. A장군 / B 장군 / 적이 존재함 A장군 / B 장군은 협공해야 적을 섬멸시킬 수 있음. A장군 / B장군은 적을 섬멸하기 위해 반드시 협공을 해야한다. 전화 같은 것이 없기 때문에 사람을 보내 '협공 요청'을 ..
1. 클러스터란 무엇인가? 사용자 관점에서 클러스터는 '단일 머신'처럼 보이도록 만들어주고, 동적으로 변화하는 다른 서버 네트워크와 통신할 때 발생하는 모든 복잡성으로부터 안전하게 보호하는 역할을 한다. 클러스터에 많은 서버가 있더라도 사용자 입장에서는 하나의 서버로 접속하는 것처럼 보일 수 있고, API를 사용할 때도 하나의 서버와 통신하는 것처럼 동작하게 해준다. 그런데 클러스터가 이 기능을 구현하기 위해서 해결해야하는 프로토콜과 책임이 존재한다. 2. 클러스터 0계층 아래는 클러스터가 가져야 할 가장 기본적인 부분이다. 이것은 클러스터 0계층이라고 부를 수 있다. 1.1 어떻게 클러스터에 조인할까? 클러스터에 조인하려는 새로운 서버 노드가 있다면, 이미 클러스터에 조인한 다른 노드와 통신하는 방법을..