WTF는 Distributed Snapshots?
Source: Dev.to
Distributed Snapshots란?
간단히 말하면, Distributed Snapshots는 네트워크에 있는 여러 머신이나 노드가 동시에 자신의 현재 상태를 “스냅샷”으로 찍고, 이 스냅샷들을 결합해 시스템 전체의 단일하고 통합된 뷰를 만드는 기술을 말합니다.
이를 그룹 셀카를 찍는 고급 버전이라고 생각하면 됩니다: 각 노드가 자신의 상태(스냅샷)를 사진처럼 캡처하고, 이 사진들을 이어 붙여 전체 시스템의 완전한 그림을 만드는 것이죠.
유용한 비유로는 협업 문서를 들 수 있습니다. 각 협업자의 컴퓨터가 주기적으로 문서 상태를 스냅샷하고 이를 다른 사람들과 공유함으로써, 서로 다른 부분을 동시에 작업하더라도 모두가 최신 버전을 볼 수 있게 합니다.
왜 지금 주목받고 있나요?
Distributed Snapshots가 주목받는 이유는 분산 시스템의 핵심 과제인 일관성을 해결해 주기 때문입니다.
여러 노드가 함께 작업하면 상태가 어긋날 수 있습니다. 동시에 스냅샷을 찍으면 각 노드가 시스템에 대한 일관된 뷰를 갖게 되며, 이는 신뢰할 수 있는 의사결정과 협조된 행동에 필수적입니다.
많은 머신과 서비스가 협력해 확장 가능하고 신뢰성 있는 인프라를 제공해야 하는 클라우드 컴퓨팅의 확산은 이 기술을 특히 가치 있게 만듭니다. 시스템이 더 효율적이고, 신뢰성 있게, 그리고 안전하게 동작하도록 돕습니다.
실제 활용 사례
- 블록체인 네트워크(예: 비트코인, 이더리움)는 Distributed Snapshots를 사용해 모든 노드가 블록체인 상태에 대한 일관된 뷰를 공유하도록 하여, 트랜잭션 유효성에 대한 합의를 이루고 무결성을 유지합니다.
- 클라우드 기반 데이터베이스는 장애나 네트워크 파티션이 발생하더라도 여러 노드 간 데이터 일관성을 유지하기 위해 Distributed Snapshots를 활용합니다.
논란, 오해, 그리고 과대광고
Distributed Snapshots는 강력하지만, 분산 시스템의 모든 일관성 문제를 해결하는 만능 해결책은 아닙니다. 모든 문제를 해결한다는 과대광고는 부정확합니다.
또한 Distributed Snapshots가 분산 트랜잭션이나 합의 프로토콜과 어떻게 연관되는지에 대한 혼란도 있습니다. 관련은 있지만 각각은 고유한 목적을 가지고 있으며, 서로 대체할 수 없습니다.
TL;DR
Distributed Snapshots는 여러 머신이 동시에 자신의 상태를 스냅샷하고, 이를 결합해 단일하고 통합된 뷰를 만드는 기술입니다. 이 기술은 분산 시스템의 일관성 문제를 해결하는 데 도움이 되며, 블록체인, 클라우드 데이터베이스 등 실용적인 적용 사례가 많아 현재 주목받고 있습니다.