Aurora
- AWS 고유의 기술이다.
- 오픈 소스는 아니지만, Postgres 및 MySQL과 호환되도록 만들었다.
- Aurora 데이터베이스에 호환 가능한 드라이버가 있는데, Postgres 및 MySQL 데이터베이스에 연결하면 작동함을 의미한다.
- 클라우드에 최적화되어 있고, 여러 가지 최적화를 통해서 RDS의 MySQL보다 5배 높은 성능이며, Postgres보다는 3배 높은 성능이다.
- 오로라의 스토리지는 자동으로 확장한다.
: 10GB에서 시작하지만 데이터베이스에 더 많은 데이터를 넣을수록 자동으로 128TB까지 커진다.
: DB나 SysOps로써, 저장 디스크를 신경 쓰지 않아도 된다는 것이다.(신경 쓰지 않아도 자동으로 커지니깐!) - 읽기 전용 복제본의 경우 15개의 복제본을 둘 수 있다.
: MySQL에서는 5개만 가능하다.
: 복제 속도도 훨씬 빠르다 - 오로라의 장애 조치는 즉각적이다. 따라서, 다중 AZ나 MySQL RDS 보다 훨씬 빠르다.
그리고 기본적으로 클라우드 native이기 때문에 가용성이 높다. - 비용은 RDS에 비해 약 20%정도 높지만 스케일링 측면에서 훨씬 더 효율적이다.
그래서 오히려 비용을 절감할 수 있는 것이다.
Aurora High Availability(고가용성) and Read Scaling(읽기 스케일링)
- Aurora는 사용자가 세 AZ에 걸쳐 무언가를 기록할 때마다 6개의 사본을 저장한다. 따라서, 오로라는 가용성이 높다.
: 쓰기에는 6개 사본 중 4개만 있으면 된다. (= AZ 하나가 작동하지 않아도 괜찮음을 뜻한다.)
: 읽기에는 6개 사본 중 3개만 있으면 된다. (= 읽기 가용성이 높다.)
: 일종의 자가 복구 과정이 있다. 그래서 일부 데이터가 손상되거나 문제가 있으면 백엔드에서 P2P 복제를 통한 자가 복구가 진행된다.
: 단일 볼륨에 의존하지 않고, 수 백개의 볼륨을 사용한다. 백엔드에서 진행되는 과정이며 리스크를 크게 감소시켜준다.
- 위에 이미지를 보면 세 개의 AZ가 있고, 공유 볼륨(로직 볼륨)이 있다.
복제, 자가 복구, 그리고 자동 확장 기능을 수행한다. - 만약 파란색의 데이터를 여기에 쓰게되면 각기 다른 세 AZ에 6개의 사본이 생긴다.
주황색의 데이터를 쓰면 역시 서로 다른 AZ에 6개의 사본이 생긴다. 그리고 데이터를 더 많이 쓸수록 계속해서 세 AZ에 6개의 사본이 생기는 것이다. 각기 다른 볼륨에 기록되면 스트라이프(Striped)형식으로 되어 매우 잘 작동한다. - 위의 이미지를 보면 쓰기를 받는 인스턴스는 하나 뿐이다. 따라서 오로라에도 마스터가 존재하고 여기서 쓰기를 받게 된다. 그리고 마스터가 작동하지 않으면 평균 30초 이내로 장애 조치가 시작된다. 장애 조치는 매우 빠르다.
- 마스터 외에 읽기를 제공하는 읽기 전용 복제본을 15개까지 둘 수 있다. 따라서 복제본을 많이 두고 읽기 워크로드를 스케일링 할 수 있다.
: 마스터에 문제가 생기면 읽기 전용 복제본 중 하나가 마스터가 되어 대체한다.
(즉, RDS와는 작동 방식이 꽤 다르다고 할 수 있다. 그러나 기본적으로 마스터가 하나인 건 동일하다.)
: 복제본들은 리전 간 복제를 지원한다. - 기억해야 될 점
: 마스터는 하나고, 복제본은 여럿이며 스토리지가 복제된다
: 작은 블록 단위로 자가 복구 또는 확장이 일어난다.
Aurora DB Cluster
- 클라이언트가 있을 때 수많은 인스턴스와 어떻게 접속할까?
: 공유 볼륨은 10GB에서 128TB까지 자동으로 확장되며, 스토리지에 쓰는 것은 마스터만이 가능하다.
마스터가 바뀌거나 장애 조치가 실행될 수 있으므로 오로라에서는 라이터(Writer) 엔드포인트를 제공한다.
그리고 라이터 엔드포인트는 DNS 이름으로 항상 마스터를 가리킨다.
따라서, 장애 조치 후에도 클라이언트는 라이터 엔드포인트와 상호작용하게 되며 올바른 인스턴스로 자동으로 리다이렉트된다. - 위의 이미지에 다수의 읽기 전용 복제본이 있고, 읽기 전용 복제본을 15개까지 생성 가능하며 자동 스케일링을 설정해서 항상 적절한 수의 읽기 전용 복제본이 존재하도록 할 수 있다.
그러나 자동 스케일링이 켜져 있는 경우, 앱의 입장에서는 복제본이 어디에 있고, URL은 무엇이고, 어떻게 연결하는지 파악하기 어려울 수 도 있다.
그래서 "리더(Reader)" 엔드포인트가 있는데, 이는 라이터 엔드포인트와 정확히 같은 기능을 한다.
모든 읽기 전용 복제본과 자동으로 연결된다. 따라서, 클라이언트가 리더 엔드포인트에 연결될때마다 읽기 전용 복제본 중 하나로 연결되며 이런 방식으로 로드 밸런싱을 도와주는 것이다.
(로드 밸런싱이 문장 레벨이 아닌 연결 레벨에서 일어난다는 사실을 기억해야 한다!)
Aurora의 Features(기능들)
- 자동 장애 조치
- 백업 및 복구
- 격리 및 보안
- 산업 규정 준수
- 자동 스케일링을 통한 버튼식 스케일링
- 제로 다운타임 자동 패치 설정 등등
- Backtrack(백트릭)
: 과거 어떤 시점의 데이터로도 복원할 수 있게 해준다.
: 이는 백업에 의존하지 않으며 다른 방법을 사용한다.
(예를 들어, 어제 오후 4시 상태 돌아가고 싶다고 했다가, 다시 어제 오후 5시 상태로 돌아가고 싶다고 해도 가능하다는 뜻이다)
'AWS(Amazon Web Service)' 카테고리의 다른 글
[AWS] RDS & Aurora 백업 (1) | 2024.10.09 |
---|---|
[AWS] Aurora Replicas(복제본) (2) | 2024.10.08 |
[AWS] Amanzon RDS (1) | 2024.10.06 |
[AWS] ASG(Auto Scaling Group) (1) | 2024.10.05 |
[AWS] ELB의 연결 드레이닝 (0) | 2024.10.04 |