10장. 최종 일관성
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
최종 일관성은 사람들이 분산 시스템과 이벤트 기반 데이터 제품에 대해 갖는 주요 관심사 중 하나입니다. 그러나 최종적인 일관성이란 사람마다 다른 의미를 가질 수 있습니다. 예를 들어, 애플리케이션 개발자는 대규모 분산 데이터베이스의 경우나 이벤트 소싱을 사용하여 상태를 구축할 때와 같이 일관된 읽기 후 쓰기를 제공하지 않는 데이터베이스를 사용할 수 있습니다. 이벤트 기반 데이터 메시에서는 이벤트 기반 데이터 제품을 구독하는 여러 소비자 시스템의 영향과 각기 다른 속도로 데이터를 읽는 개별 소비자와 함께 작업하는 방법에 더 많은 관심을 기울입니다.
꽤 오랫동안 이벤트 일관성에 대해 연구하고 노력하며 고민해 온 사람들이 있습니다. 팻 헬랜드도 바로 그런 사람으로, 이 주제에 대한 수많은 사고 리더들의 통찰과 의견을 모은 훌륭한 글을 썼습니다.
더그[테리]가 1995년 Bayou 논문에서 최종 일관성이라는 표현을 사용한 이후로 저는 그의 관점에 관심이 많았습니다. 그가 정의한 최종 일관성이란 개체 컬렉션의 각 개체에 대해 각 개체의 모든 복제본이 결국 동일한 값을 갖는다는 의미였습니다. 그러자 그는 이렇게 말했습니다: "그래, 나는 그것을 궁극적 수렴이라고 불렀어야 했어."
팻 헬란드
헬랜드는 2015년 박사 학위 논문인 "분산 시스템을 위한 데이터 중심 프로그래밍"에서 피터 알바로가 정의한 내용을 설명합니다:
모든 메시지가 전달되었을 때 모든 복제본이 저장된 값 집합에 동의하면 시스템은 수렴 또는 "최종적으로 일관된" 시스템이라고 할 수 있습니다.
피터 알바로
테리와 알바로 모두 최종 일관성에 대한 동일한 정의에 동의하며(하하!), 독립적인 복제본이 결국 동일한 저장 값 집합으로 수렴하는 것에 초점을 맞췄습니다. 앞으로도 '최종 일관성'이라는 용어를 계속 사용하겠지만, 실제로는 데이터의 수렴에 대해 이야기하고 있다는 점을 명심하세요 .
이벤트 스트림을 지속적으로 구체화하는 소비자는 데이터 저장소에 어떤 데이터가 있는지에 대한 정보를 쉽게 제공할 수 있지만, 어떤 데이터가 없는지는 알려줄 수 없습니다. 데이터 저장소는 결국 수렴하기 때문에 쿼리 시에는 데이터가 없다고 알려주지만 바로 다음 클록 주기에서 해당 데이터를 즉시 수신하여 처리할 수 있습니다. 그러나 소비자는 주어진 오프셋을 따라잡았는지 여부를 알 수 있으며, 컨버전스에 대한 질문을 해결할 때 이 지식을 사용할 수 있습니다.
이벤트 중심 세계에서 이벤트 일관성에 관한 많은 질문과 우려( )는 그로 인해 '나쁜 일'이 일어날 것이라는 우려에서 비롯됩니다. 이는 종종 아키텍처 요약 논문의 단점 섹션에 나열된 위협적인 용어로 사용되기도 합니다. 그러나 주의해야 할 몇 가지 큰 문제가 있기 때문에 꼭 단점일 필요는 없습니다. 두 개의 독립적인 소비자 서비스가 아직 통합되지 않은 이유는 크게 두 가지입니다:
- 서비스가 지연되고 있습니다. ...