PaaS 배포에 대한 고가용성 및 재해 복구 옵션 설명
Azure에서 제공하는 옵션만 구성할 수 있다는 점에서 PaaS는 가용성 부분에서 색다른 특징을 갖고 있습니다.
Azure SQL Database 및 Azure SQL Database Managed Instance의 SQL Server 기반 옵션의 경우, 옵션으로 활성 지역 복제(Azure SQL Database에만 해당) 및 자동 장애 조치(failover) 그룹(Azure SQL Database 또는 Azure SQL Database Managed Instance)이 있습니다.
Azure Database for MySQL에는 99.99의 가용성을 보장하는 서비스 수준 약정가 있습니다. 즉, 가동 중지 시간이 거의 발생하지 않습니다. Azure Database for MySQL에서 하드웨어 오류와 같은 노드 수준 문제가 발생하는 경우 기본 제공 장애 조치(failover) 메커니즘이 작동합니다. MySQL 데이터베이스에 대한 모든 트랜잭션 변경은 커밋 시 스토리지에 동기적으로 기록됩니다. 노드 수준 중단이 발생하면 데이터베이스 서버에서 자동으로 새 노드를 만들고 데이터 스토리지를 연결합니다.
애플리케이션의 관점에서 볼 때 모든 연결이 새 노드를 실행하는 과정의 일부로 삭제되고 진행 중인 트랜잭션은 모두 폐기되기 때문에 필요한 재시도 논리를 코딩해야 합니다. 이 프로세스는 일시적인 오류를 처리하도록 설계되어야 하므로 모든 클라우드 애플리케이션에 대한 모범 사례로 간주됩니다.
Azure Database for PostgreSQL은 표준 배포 모델의 MySQL과 비슷한 모델을 사용하지만 Azure PostgreSQL은 Citus라는 스케일 아웃 하이퍼스케일 솔루션도 제공합니다. Citus는 서버 그룹에 스케일 아웃 및 추가 고가용성을 제공합니다. 대기 복제본을 활성화하면 서버 그룹의 모든 노드에 대기 복제본이 구성되기 때문에 그룹 내 서버 수가 두 배로 늘어나 비용이 증가합니다. 이벤트에서 원래 노드가 응답하지 않거나 완전히 실패하는 등의 문제가 발생하는 경우 대기 복제본이 원래 노드를 대신합니다. 데이터는 PostgreSQL 동기 스트리밍 복제를 통해 동기화된 상태로 유지됩니다.
Azure Database for MySQL과 마찬가지로, Azure Database for PostgreSQL을 사용하는 솔루션은 끊기는 연결 및 진행 중인 트랜잭션의 손실로 인해 애플리케이션에 재시도 논리를 포함해야 합니다.
Azure Database for MySQL과 PostgreSQL 모두 읽기 복제본에 대한 옵션을 지원합니다. 즉, 보고와 같은 작업을 주 데이터베이스에서 오프로드하는 데 복제본을 사용할 수 있습니다. 또한 읽기 복제본은 다른 지역에 존재하므로 가용성을 향상시킵니다.