< Architecting Scalable and Highly Available Database >
High availability is achieved by deploying infrastructure
across more than one zone in a region
한 지역의 둘 이상의 영역에 인프라를 배포하여 고가용성을 달성
- 한 지역에서 둘 이상의 영역에 걸쳐 인프라를 배포하여 고가용성에 달성
- 각 지역은 3개의 영역으로 분할되고 각 영역을 장애 경계로 생각
- 여러 영역에 인스턴스를 생성한 후 트래픽을 해당 백엔드 인스턴스로 라우팅하는 로드 밸런서를 생성하여
정상적인 인스턴스에만 트래픽을 전송
Failover replicas are used for database high availability
장애 조치 복제본은 데이터베이스 고가용성을 위해 사용
- 복제본은 데이터베이스 안정성을 보장하는데 사용
- 두 개의 데이터베이스를 서로 다른 영역에 배포 (하나는 마스터, 하나는 장애 조치 요청 마스터)
- 모든 데이터는 마스터가 다운되면 장애 조치를 취함
Scalable databases continue to work as the number of users
and amount of data grows very large
확장 가능한 데이터베이스는 사용자 수와 데이터 양이 매우 증가함에 따라 계속 작동
- 데이터가 증가함에 따라 많은 양의 쓰기 데이터베이스를 샤드라고 하는 조각으로 분할한 후
여러 노드 또는 서버를 사용해 서로 다른 샤드의 복사본을 생성하여 대용량 읽기를 처리 - 읽기 전용 복제본은 분석 및 보고에 사용하며 마스터는 권한을 처리하도록 남겨짐
- 마스터는 데이터가 해당 데이터와 동기화되도록 함
For global applications, create read replicas in multiple regions
글로벌 애플리케이션의 경우 여러 지역에 읽기 전용 복제본 생성
- 여러 지역에 읽기 복제본을 생성할 수 있으며 사용자의 요청은 지리적으로 가장 가까운 지역으로 라우팅되며
글로벌 로드 밸런서를 통해 이를 자동화할 수 있음 - 마스터는 여전히 권한을 처리하고 동기화
- 비동기 복제를 사용하는 경우 전세계적으로 증가된 지연 시간을 알고 있어야 하며
복제본은 짧은 기간 동안 유실된 데이터를 가질 수 있음. 이를 최종 일관성이라고 함
Distributed databases us clusters of nodes and multiple shards
to process high volume data
분산 데이터베이스는 대용량 데이터를 처리하기 위해 노드 클러스터와 여러 샤드를 사용
- 분산 데이터베이스는 노드 클러스터와 여러 샤드를 사용하여 대용량 쓰기를 처리
- 여러 서버를 사용하여 워크 로드가 증가함에 따라 워크로드를 분산할 수 있으므로 더 많은 노드와 샤드를 추가해
무한히 확장 가능한 것처럼 보이는 시스템을 제공할 수 있으며 이를 수평적 확장 또는 수평 확장이라고 함 - 더 큰 워크로드를 처리하기 위해 데이터베이스 서버를 더 크게 만드는 수직 확장과는 반대로
클라우드 스패너는 노드를 추가하여 수평으로 확장되는 관계형 데이터베이스
+) SQL 데이터베이스는 메모리 가상 CPU 및 디스크 공간을 수직으로 확장