데이터 플랫폼에서 약한 격리 모델을 사용할 경우, 개발자는 잠재적인 오류 상태나 최종 사용자에게 보이는 불일치를 방지하기 위해 끊임없이 아키텍처 다이어그램을 분석하고 서비스 간의 데이터 흐름을 추적해야 합니다. 이는 “전역 추론(global reasoning)”을 요구하며, 모든 쿼리 변경이 시스템 전체의 다른 쿼리들과 어떻게 상호작용할지 고려해야 하는 막대한 인지 부하를 발생시킵니다.
이상 현상(Anomalies)과 전역 추론의 비용
-
이상 현상의 발생: 약한 격리 수준은 쓰기 스큐(write skew), 팬텀 읽기(phantom reads), 손실된 업데이트(lost updates), 반복 불가능한 읽기(unrepeatable reads) 등 다양한 이상 현상을 유발합니다. 스냅샷 격리는 쓰기 스큐를 방지하지 못하며,
read committed모드에서는 더 많은 이상 현상이 발생합니다. 심지어 PostgreSQL의repeatable read모드조차g2-item이라는 미묘한 이상 현상을 허용합니다. -
수동 검증의 어려움: 이론적으로 선행 그래프를 통해 이상 현상을 방지할 수 있으나, 실제로는 이 복잡한 검증 과정을 성공적으로 수행하는 개발자는 드뭅니다.
-
막대한 비용: 약한 격리 모델은 개발자에게 모든 가능한 트랜잭션 집합 검토, 다른 프로그래머의 제안 검토 등 막대한 작업을 요구하며, 이는 회의 시간, 분석 시간, 직원 급여 등 엄청난 비용으로 이어집니다. 이는 성능을 위한 최후의 수단으로 간주되어야 합니다.
스트림 처리에서의 일관성 도전
스트림 처리 시스템은 입력이 무한하고 계산이 지속되는 환경에서 주로 배포됩니다. 이러한 환경에서 “최종 일관성(eventual consistency)”과 같은 약한 격리 보장은 입력이 확정되지 않을 경우 출력 또한 결코 확정되지 않는 결과를 초래할 수 있습니다. 이는 사용자 기대와 크게 어긋나므로, 스트림 처리에서는 명확한 정확성 보장을 위해 엄격한 직렬화 가능성(strict serializability)과 같은 강력한 일관성 보장이 필수적입니다.