아키텍쳐

[강의 정리] Distributed System 5.3: Replication using broadcast

hayz 2023. 3. 31. 16:45

# 강의 영상


정리

이전 장 2023.03.31 - [아키텍쳐] - [강의 정리] Distributed System 5.2: Quorums (정족수) 에서 살펴본 quorum 방식은 기본적으로 best-effort broadcast 를 이용합니다. (best-effort broadcast: client 가 보내는 모든 read/write 를 전체 replica로 전송 될 때, protocol 이 안정적이지가 않아서 올바른 순서로 오지 않을 수 있음)

다른 방법으로는 이전 2023.03.22 - [아키텍쳐] - [강의 정리] Distributed System 4: Broadcast protocols and logical time 에서  살펴본 broadcast 프로토콜이 있습니다. 한번 FIFO-total order broadcast 를 사용한다면 어떨지 생각해 봅시다. 

     FIFO-total order broadcast 를 사용하면 replication system 을 구성하기 훨씬 쉬워집니다. 우리가 매 update 연산을 replica 에 보내게 되면 해당 replica 는 그들의 state 를 기반으로 메시지를 업데이트 합니다. 그리고 이같은 방식을 state machine replication (SMR) 이라고 합니다. replica 가 메시지가 들어오면 각자의 state 를 기반으로 동작하기 때문이죠. 우리는 이 update 로직이 결정론적(deterministic) 하다는 것만 요구됩니다. 이는 만약 두개의 replica 가 동일한 state 를 가졌을 때 둘다 동일한 메시지가 들어오면 같은 결과가 나오는 것을 말합니다. 이는 error 에도 마찬가지로 적용이 되어서, 하나의 replica 에서는 성공하고 다른 곳에서는 실패했다면 일관성이 없다고 판단하게 됩니다. 

 

SMR 의 주요한 특징 중에 하나는 한 state 에서 다른 state 로 갈 때 결정론적인 이상 꽤나 복합적으로 표현 될 수 있다는 겁니다. 예를 들어, 임이의 비즈니스 로직을 담은 데이터베이스 트랜잭션을 실행 시킬 수도 있고, 이 로직은 broadcast 된 메시지와 현재 데이터베이스의 상태에 따라 달라집니다. 이런 식으로 각 replica 가 독립적으로 동일한 결정론적인 트랜잭션을 실행하도록 하는 분산 데이터베이스가 있습니다. (active replication 이라고 불리우는) 이러한 원칙은 블록체인, 분산 장부의 토대가 되는 개념입니다. "chain of blocks" 즉 블록체인은 broadcast 된 메시지를 정렬시켜 놓은 그 이상 이하도 아닙니다. 그리고 그 각 replica 에서는 각자의 연산을해 상태를 결정짓게 됩니다. 즉 "스마트 계약(smart contract)"은 특정 메시지가 전달 될 때 replica 가 실행하는 결정론적인 프로그램일 뿐입니다. 

 

SMR 의 단점은 total-order broadcast 의 한계가 있다는 점입니다. 이전에 얘기 했던것과 같이, 노드가 메시지를 total-order 로 보내려고 할 때, 이 메시지를 즉시 보낼 수 없습니다. SMR 의 fault tolerance 는 SMR 의 total-order broadcast 에 달려 있습니다. 그럼에도 이러한 방식은 많이 사용하고 있는 방식입니다. 

 

 

이전의 내용을 복습해 보면, total-order broadcast 를 진행하는 한 방법은 하나의 노드를 leader 로 지칭 하고, 모든 들어오는 메시지를 leader 를 통하도록 하는 방법이 있습니다. 이 원칙 또한 여러 분산 데이터베이스에서 많이 사용되고 있습니다. (leader, primary, master 등으로 불리며)