여기 정리하는 내용들은 Udemy 강의를 통해 배운 내용들을 정리하였습니다.
출처 - Udemy AWS Certified Developer Associate 2022 - New!


RDS는 Relational Database Service의 약자입니다. 그리고 SQL을 사용합니다.
AWS RDS에서 여러 종류의 SQL을 허용하는데요. 아래와 같습니다.

  • PostgreSQL
  • MySQL
  • MariaDB
  • Oracle
  • Microsoft SQL Server
  • Aurora (AWS Proprietary database)


RDS를 쓰는 이유

  • Automated provisioning, OS patching
  • 지속적인 백업과 특정 timestamp로 복구가 가능
  • dashboard를 통한 모니터링
  • Read Replica를 통한 향상된 read performance
  • Multi AZ setup 가능
  • Maintenance windows for upgrads
  • Scaling 가능
  • Storage backed by EBS


하지만 RDS를 사용하면 instance로 SSH 할 수 없습니다.

RDS Backups

자동으로 해주는 기능들이 많이 있습니다.

  1. 관리 하는 시간 동안 백업을 자동으로 해줍니다. (Daily full backup)
  2. 5분마다 Transaction logs 백업
  3. 그래서 가장 오래된 백업부터 5분전 백업까지 restore 가능
  4. 7~35 days retention


DB Snapshots 기능을 통해 Manually triger 한 백업을 만들어 원하는 기간 만큼 보유할 수 있습니다.


RDS - Storage Auto Scaling

예측하기 힘든 workloads에서 유용한 기능입니다.
Maximum Storage Threshold를 정해서 unlimitedly 늘어나지 않게 해줍니다.
Free storage가 10% 이하 일때, Low-storage 가 5분 동안 지속될때, 마지막 modification 이후 6시간이 지났을때 마다 storage를 modify합니다.


RDS Read Replicas 와 Multi AZ 이해하기

Read Replicas

Replicas는 사본, 복제품, 복사본 같은 느낌의 단어인데요.
데이터 베이스에서 더많은 read를 하기위해 RDS DB의 복제품을 만들어서 그 복제품으로 부터 read를 요청하게 하는 것이라고 이해했습니다.
이렇게 하면 기존에 있던 DB에서 read가 늘어지 않아 성능에 영향을 주지 않기 때문입니다.

  • 애플리케이션이 더 많은 reads할 떄, 5개 까지 Read Replicas를 늘리 수 있습니다.
  • Read Replicas는 AZ, Cross AZ, Cross Region 모두에서 가능하여 선택할 수 있습니다.
  • Replication은 ASYNC여서 reads는 항상 일관됩니다.
  • Read Replicas에서는 SELECT statements만 사용됩니다. (INSERT, UPDATE, DELETE는 안되요.)
  • 기본적으로 network cost는 data가 AZ밖을 나갈 때면 발생하는데,
    replicas를 사용하면 Region을 나가기 전까지는 무료입니다.


Multi AZ

SYNC replication!!
scaling 되지 않습니다.
read나 write 할 수 없습니다.
increase availability
그래서 disaster recovery 용입니다.


Read Replicas에 Multi AZ 기능을 탑재할 수 있습니다.
Multi AZ를 탑재하기 위해서 DB를 stop 할 필요 없습니다. (zero downtime operation)
just click “modify” for the database
Multi AZ setup때는 DB snapshot이 자동으로 생성됩니다.

RDS Security - Encryption

At rest encryption

Master & read replicas를 Encrypt 하기 위해 AWS KMS를 사용합니다.
launch time에 define 해줘야합니다.
master 먼저 encrypt해야만 read replicas도 encrypt할 수 있습니다.

Oracle and SQL Server은 Transparent Data Encryption(TDE)가 가능합니다. (Encryption의 다른 방법입니다.)

In-flight encryption

SSL certificates를 사용합니다. in flight

Snapshot이 경우 기존 DB의 Encrypted 여부에 따라 Snapshot의 encryption이 정해진다.
하지만 Unencrypted 된 것을 encrypt 할 수 있습니다.


  • un-encrypted RDS database 를 encrypt 하기
    1. the un-encrypted db 에서 snapshot을 생성한다.
    2. 그 snapshot 을 복제하고 and 복제된 snapshot이 encrypt가능하게 설정한다.
    3. encrypted 설정된 snapshot에서 db를 복구한다.
    4. 새로운 db에 Migrate Application한다. (un-encrypted db는 삭제한다.)


RED Security - Network & IAM

  • Network Security
    • RDS db를 private으로 deploy 합니다.
    • security group을 통해 통제합니다.
  • Access Management
    • IAM policy로 매니저를 정해줍니다.
    • IAM-based authentication을 이용할 수 있습니다. (MySQL&PostgreSQL 같은 경우)
      • 이 경우 password가 아닌 authentication toekn이 필요합니다.
      • auth token은 15분 동안만 이용할 수 있습니다.

Responsibility

AWS는

  • 고객이 SSH access하지 못하도록 합니다.
  • 고객이 manual DB patching 못하게 합니다.
  • 고객이 manual OS patching 못하게 합니다.
  • 고객이 audit the underlying instance 를 할 수 없게 합니다.