AWS Developer Associate (3) - RDS, Aurora

Jongwon·2024년 1월 2일
0

AWS Developer Associate

목록 보기
2/6
post-thumbnail

RDS(Relational Database Service)

SQL을 쿼리 언어로 사용하는 DB를 관리하는 서비스입니다.
ex) Postgres, MySQL, MariaDB. OracleDB, Aurora

장점

  • Automated Provisioning 지원
  • OS Patching 가능
  • Backup/Restore 지원
  • Monitoring 지원
  • Read 성능 향상을 위한 Read용 복제본 제공
  • 여러 AZ에 걸쳐 세팅 가능
  • Maintenance windows(업그레이드용) 존재
  • Auto Scaling 가능
    => 단, Maximum Storage Threshold 지정 필요
  • EBS로 이관 가능

하지만 SSH를 통해 RDS 인스턴스로 접근은 할 수 없습니다.

Storage Auto Scaling 조건

  • Free Storage가 10% 미만일 때
  • Low Storage가 5분 이상 지속될 때
  • 수정된 지 6시간 이상 지났을 때

Read Replicas

최대 5개의 Replica 생성 가능하고 AZ 내, AZ 간, Region 간으로 선택이 가능합니다. 하지만 Application이 각 복제본과 직접 연결이 되어 있어야 합니다.

만약 Read Replica에 쓰기 작업을 진행하게 된다면, 해당 DB는 더이상 Read용이 아닌 독립적인 DB로 변하게 됩니다.

복제는 비동기적(Asynchronous)하게 일어나기 때문에 순간에는 올바른 데이터가 아닐 수 있지만, 결국엔 동일하게 됩니다.

Network Cost

RDS를 같은 Region의 다른 AZ로 이동시킬 때에는 비용이 발생하지 않습니다. 하지만 Cross-Region인 경우에는 비용이 부가됩니다.

Multi AZ

이 내용은 Read Replica와 비교하여 자주 출제가 된다고 합니다.
Multi AZ는 동기화(Synchronous)가 진행되는 복제입니다. 따라서 1개의 DNS Name만을 가지고 있습니다. 만약 복제본이 Ready 상태가 아니라면, 원본 DB의 변경도 진행되지 않습니다.

Multi AZ와 Read Replica는 정반대의 개념은 아닙니다. Read Replica를 Recovery를 위해 여러 AZ에 걸쳐서 구축할 수도 있습니다.

Scaling(R/W)를 위한 것이 아닌, 정말로 Recovery를 위해서만 사용되는 케이스입니다.

Multi AZ 장점

  • 가용성이 늘어남
  • Failure에 대응이 가능하고 DR(Disaster Recovery)가 가능함
  • App에 별다른 설정을 할 필요가 없음
  • DB를 멈추지 않아도 수정 버튼만 누르면 Snapshot을 기반으로 Multi AZ 설정가능

Aurora

AWS에서 제공하는 SQL 기반 DB입니다. Cloud 기반 환경에 최적화된 서비스로, MySQL이나 Postgres를 RDS에 올리는 것보다 3-5배 더 빠른 성능을 보여줍니다.

Aurora 장점

  • 데이터 양에 따라 자동으로 확장됨(Shared Storage Volume)
  • Replica를 최대 15개까지 지원함(Auto Scaling)
  • Failover에 즉각적인 대응이 가능함
  • Cross Region Replication을 지원함
  • 산업용으로 적합
  • 보안이 좋음
  • 백업과 복구에 좋음(백업을 하지 않아도 어느 시점에라도 복구 가능)
  • 모니터링 기능 제공

RDS보단 비싸다는 단점이 있습니다.

Aurora의 고가용성

Aurora는 기본적으로 3개의 AZ에 총 6개의 복사본을 저장합니다. 또한 데이터의 손상이 발생했을 때, 복사본과 비교하며 Self-Healing을 진행합니다.

Aurora의 Read Replica

Client는 Writer Endpoint를 통해 Write DB로 이동하게 됩니다.

이때, Write용 DB Instance가 Failure이어도, 다른 인스턴스로 리디렉션을 하는 것은 Writer Endpoint가 담당하게 됩니다.

Clinet가 Read 요청 시에 Reader Endpoint가 Load Balancing을 함으로써 하나하나 복사본에 연결하지 않아도 됩니다.

RDS & Aurora Security

저장 데이터(Data At-Rest)

AWS KMS를 통해 master & replica 암호화를 진행(단, Launch시 설정해야함)
=> 처음에 master를 encrypt하지 않았다면 이후 Read Replica도 암호화를 진행할 수 없음.
=> 처음에 진행하지 않았다면, Snapshot으로 복사하고 Restore 시 암호화를 진행해야 함.

전송 데이터(Data In-Flight)

In flight encryption은 TLS 암호화가 이미 되어있음. TLS Root 인증서로 Client가 복호화해야함.

IAM 인증

IAM Role이 있다면 ID/PW없이도 접근 가능

Security Group

Network Access를 통한 접근 제어도 가능

SSH

SSH 접근은 불가능. 단 RDS Custom을 사용하면 가능

Audit Logs

CloudWath Log를 통한 로그를 오랫동안 가지고 있을 수 있음

RDS Proxy

Master DB 인스턴스에 바로 접근하는 것은, DB가 Failure가 발생하면 피할 수 없습니다. 하지만 RDS 프록시를 통해 한 단계 거쳐서 이동하면 Failure를 줄일 수 있습니다.

  • 트래픽 급증 처리 가능
  • 새 연결 설정 시 오류 방지 가능(메모리나 CPU 오버헤드 등)
  • Code를 변경할 필요가 없음
  • IAM Authentication을 강화하고, AWS Secret Manager에 Credential을 안전하게 보관할 수 있음
  • Public Access가 불가능함(VPC를 통한 접근만 가능)
  • Lambda를 이용할 때 유용
profile
Backend Engineer

0개의 댓글

관련 채용 정보