원문 캡처 · n-the-loop.com
원문 캡처 · n-the-loop.com

카프카는 정확히 한 번 처리 기능을 출시한 지 8년이 지난 뒤에도 정확성 문제를 막기 위해 프로토콜을 다시 설계해야 했다(Olshan과 Liu, 2022).1 이 글은 시스템 전체의 일관성을 개별 구성 요소에 맡길 수 없다는 주장이다.

글은 정확히 한 번 쓰기를 구현하는 데 분산 시스템 엔지니어 팀이 수년을 들였고, 새 구성 요소를 여럿 추가했으며 기존 구성 요소도 전면 재작성했다고 짚는다(Gustafson 외, 2016).1

카프카 제작자들의 설명에 따르면 정확히 한 번 처리는 시스템 끝에서 끝까지 이어지는 보장이다. 애플리케이션도 그 속성을 깨뜨리지 않도록 설계해야 한다(Narkhede와 Wang, 2017).

글의 주장은 두 가지 책임으로 이어진다. 시스템 전체를 이해하는 누군가가 구성 요소 밖에서 일관성을 살펴야 한다. 또 전체를 맡는 사람이 있어야 한다. 각 구성 요소의 담당자는 자기 부분이 제대로 작동한다고 말할 수 있지만, 전체 수준의 보장을 책임지는 사람은 따로 필요하다는 것이다.

글은 시스템 전체에 걸친 중요한 속성을 기계가 알아서 지켜 줄 것이라고 가정하지 말라고 주장한다. 그런 보장은 코드만으로 확보되는 것이 아니라 시스템을 이해하는 데서 나온다는 취지다.

카프카 프로토콜의 재설계가 막으려 한 정확성 결함의 구체적인 내용이나, 이 글이 제시한 책임 구조를 적용할 때의 조건은 원문에서 밝히지 않는다.↩︎