들어가기 전 이 글은 핵심 이론부터 프로그래밍 실습까지 분산 컴퓨팅을 읽고 정리한 글입니다. 몇몇 참고 글도 있습니다. 요약 분산 시스템의 스냅샷은 프로세스 / 채널 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장군은 적을 섬멸하기 위해 반드시 협공을 해야한다. 전화 같은 것이 없기 때문에 사람을 보내 '협공 요청'을 ..
들어가기 전 이 글은 이펙티브 파이썬을 공부하며 작성한 글입니다. 코드 : https://github.com/chickenchickenlove/effective-python/tree/master/item40 요약 파이썬에서는 부모 클래스가 자동으로 초기화 되지 않는다. 다중 상속보다는 믹스인 클래스로 합성해라. 다중 상속을 사용할 경우, 메서드의 실행 순서는 mro를 따른다. (Class.mro() 호출한 순서대로 메서드가 호출됨). [부모 클래스].__init__()를 이용해 직접 부모 클래스를 초기화 할 수 있다. mro 순서와는 다르게 부모 클래스가 초기화 됨. (개발자에게 혼란을 가져옴) 이렇게 할 경우, 다이아몬드 상속에서 부모 클래스가 여러 번 초기화 된다. (개발자에게 혼란을 가져옴) 부모 ..