Google Cloud Spanner
Google Cloud Spanner는 관계형 모델을 유지한 채 여러 리전에 걸쳐 수평 확장과 강한 일관성을 제공하는 분산 데이터베이스입니다. 지역을 넘어서는 트랜잭션과 글로벌 서비스의 기준 데이터 계층 역할을 맡습니다.
▶아키텍처 다이어그램
🔍 구조 다이어그램점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다
서비스가 여러 리전으로 퍼지면 한 리전 안에 묶인 관계형 DB는 지연과 용량에서 먼저 막힙니다. 그렇다고 데이터 모델을 포기하면 SQL과 트랜잭션을 다시 설계해야 합니다.
전통적인 관계형 DB는 한 서버를 키우는 데는 강했지만, 전 세계 사용자와 장애 복구를 동시에 상대하기에는 구조적 한계가 있었습니다. Google 내부의 분산 데이터베이스 경험을 바탕으로, 관계형 모델을 버리지 않고도 글로벌 확장을 하려는 요구에서 Spanner가 등장했습니다.
데이터를 여러 노드와 리전에 분산하고, 쓰기는 합의 과정을 거쳐 하나의 일관된 결과로 확정합니다. 애플리케이션은 SQL과 트랜잭션을 그대로 쓰면서도, 내부에서는 복제와 조정이 동시에 일어납니다.
Spanner와 Cloud SQL은 둘 다 관계형 데이터를 다루지만, Cloud SQL은 한 리전에서 익숙한 DB 운영을 유지하는 DB이고 Spanner는 여러 리전에 걸친 일관성과 수평 확장을 전제로 합니다. 지역 하나의 웹 서비스면 Cloud SQL, 전 세계 사용자와 강한 일관성이 같이 필요하면 Spanner가 맞습니다.
여러 지역의 사용자와 데이터를 같은 기준으로 다뤄야 하는 결제, 계정, 재고 같은 핵심 운영 데이터에 적합합니다. 한 리전 안에서 충분한 서비스나 가벼운 조회 중심 데이터에는 과할 수 있습니다.