CS/SRE

Ch23. 치명적인 상태 관리하기: 신뢰성을 위한 분산에 대한 합의

12.tka 2023. 10. 29. 17:52
728x90

분산 시스템

분산 컴퓨팅 또는 분산 데이터 베이스로 알려져 있다. 하나의 분산 시스템은 서로 다른 머신들에 위치해 있는 독립된 컴포넌트들의 묶음이며 이 묶음은 하나의 공통된 목적을 달성하기 위해 서로 메시지를 주고받는다.

 

분산에 대한 합의

신뢰할 수 있는 고가용성 시스템을 효과적으로 구축하기 위해 분산에 대한 합의가 필요하다. 분산에 대한 합의 문제는 신뢰할 수 없는 네트워크에 연결된 프로세스의 그룹들이 원하는 수준의 합의점에 도달하는 문제를 다루는 것이다. 예를 들어 분산 시스템의 여러 프로세스들은 분산 록이 발생했든, 아니면 큐의 메시지가 이미 처리되었든지 여부와는 무관하게 설정 중에서 중요한 부분들을 일관되게 확인할 수 있어야 한다. 이는 분산 컴퓨팅 분야에서는 매우 기본적인 개념이다.

 

CAP 이론

CAP 이론은 분산 시스템은 일관성(Consistency), 가용성(Availability), 분할 허용성(Partition Tolerance) 세 가지 속성 중에서 동시에 두 가지 속성만을 만족시킬 수 있다고 주장한다. 예를 들어, 일관성과 가용성을 모두 만족시키려고 하면, 네트워크 분할에 대한 허용성이 낮아진다. 반대로, 가용성과 분할 허용성을 모두 만족시키려고 하면, 일관성이 낮아질 수 있다.

  • 일관성(Consistency): 모든 노드에서 동시에 같은 데이터를 보여줘야 함
  • 가용성(Availability): 모든 요청이 성공 또는 실패와 상관없이 응답을 받아야 함
  • 분할 허용성(Partition Tolerance): 네트워크 분할이 발생하더라도 시스템이 계속해서 정상적으로 작동해야 함

 

합의가 필요한 이유

책에서는 분리된 뇌 문제, 사람이 개입해야 하는 장애 조치, 그룹-멤버십 알고리즘의 오류 예시를 통해서 합의가 필요한 이유를 말하고 있다. 결론적으로 말하자면 분산 시스템에서의 합의는 시스템의 일관성, 신뢰성, 안정성을 보장하고, 장애에 대한 허용성을 향상하며, 여러 노드 간의 작업을 효과적으로 동기화하고 조정하는 데 필수적이기 때문에 필요하다고 생각한다.

 

합의 알고리즘 (Paxos)

Paxos는 제안 -> 제안 전파 -> 제안 수락 혹은 거부 -> 합의 도달 -> 학습 -> 실행 순으로 동작한다.

  1. 제안: 제안자는 특정 값을 합의하고자 할 때, 고유한 일련번호와 함께 제안을 만든다. (일련번호는 다른 제안과 구별하기 위해 사용, 높은 일련번호를 가진 제안이 우선)
  2. 제안 전파: 제안자는 만들어진 제안을 수락자들에게 보낸다.
  3. 제안 수락 혹은 거부: 제안이 수락자에게 도착했을 때, 제안의 일련번호가 수락자가 마지막으로 수락한 제안의 일련번호보다 크다면, 수락자는 제안을 수락한다. 그렇지 않다면, 제안을 거부한다.
  4. 합의 도달: 충분한 수의 수락자가 제안을 수락하면, 제안은 합의에 도달한 것으로 간주된다. 충분한 수는 시스템에 따라 다르지만, 일반적으로 수락자의 과반수를 의미한다.

책에서 Paxos 프로토콜은 제안의 일련번호와 그 값의 처리에 대해 동의하는 것뿐이기 때문에 유용하지 않을 수 있다고 나와있다. 하지만 일련번호를 활용해서 메시지의 순서를 보장할 수 있고 일부 노드가 장애 나더라도 나머지 노드를 활용해서 과반수 이상 로직을 정상적으로 수행할 수 있다면 충분히 효율적으로 사용할 수 있는 프로토콜이라고 생각한다.

 

분산 합의 시스템 모니터링

시스템의 특징에 따라서 모니터링의 핵심 지표는 다를 수 있지만 장애나 문제를 감지하고 적절한 조치를 취하기 위해 모니터링이 필요하다는 사실은 변함이 없다. 리더의 존재 여부, 합의 트랜잭션 횟수, 확인된 제안의 횟수 및 합의된 제안의 횟수 등의 지표를 적절하게 설정해서 모니터링을 꼭 하도록 하자.

728x90