AWS(Amazon Web Service)

[AWS] Amazon Aurora

yunseohhe 2024. 10. 7. 15:13

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