[AWS] RDS: Aurora 멀티 리전 구성

글로벌 서비스를 운영하게 되면 지역의 분산화는 필수적인 단계 중 하나라고 할 수 있다.
아무래도 지리적으로 멀어지다보면 레이턴시가 늘어나고 느려질 수밖에 없기 때문이다.

그럴때는 보통, 서버나 DB를 여러 리전에 걸쳐 구성하고, 가까운 리전의 리소스를 호출하게 만드는 것이 기본이다.
다행히도 Aurora는 완벽하지는 않지만 멀티리전 구성을 지원한다.

이렇게 중심 클러스터를 하나 두고, read only 복제본을 다른 리전에 두는 식이다.

writable 클러스터를 추가로 만드는건 지원되지 않는다. 그래서 쓰기 작업을 하려면 여전히 중심 클러스터까지 쏘긴 해야 한다... AWS는 어째서인지 이런 분산시스템에 대한 지원은 열성적이지 않다.

여러 리전에 설쳐 write/read 가능한 고성능의 분산 데이터베이스를 원한다면 cockroachDB를 쓰거나 Cloud Spanner 같은 솔루션을 사용해야 한다. 안타깝게도 AWS에는 그런 관리형 서비스가 없다.

이외에도 제한사항이 몇가지 있는데, 이건 최대 5개의 read 클러스터 복제본을 허용한다. 중심 리전까지 합해서 6개까지의 리전만 허용한다는 것이다.




비용

클러스터를 추가로 띄우는 비용은 기존의 비용 규칙을 따르고, 쓰기 데이터 동기화에 발생하는 비용도 있다.




master 클러스터

멀티리전을 구성하려면, 먼저 중심이 되는 리전에 클러스터를 만들어줘야 한다.

저 필터로 멀티리전이 지원되는 버전을 골라서 만들 수 있다.
그리고 클러스터의 DB 인스턴스 타입은 db.r5 이상이거나, serverless v2여야 한다.




slave 클러스터 만들기

리전에 복제하는 방법은 어렵지 않다.
master 클러스터를 선택한 상태에서, 리전 추가 버튼을 눌러준다.


그리고 원하는 리전과 옵션을 고르고 만들어주면 된다.


그럼 read-only 클러스터가 생성될 것이다.
버지니아 근방의 서버나 시스템에서는 저 엔드포인트를 통해 query를 사용하면 되는 것이다.

근데 write가 안된다는 점에서 반쪽짜리라는 느낌을 지울 수가 없다... 이래도 쓰는 사람이 많으려나.



참조
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database.html
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-getting-started.html#aurora-global-database-creating