RDS란?
- 관계형 데이터베이스 서비스라고 함
- 대표적으로 Aurora, PostgreSQL, MySQL, MariaDB, Oracle, SQL Server 등의 RDS 엔진을 AWS에서 제공
- 관계형 DB이기 때문에 SQL 쿼리를 이용하는 DB용도에 사용
- DB 다운타임 없이 스토리지 용량만큼 자동으로 확장가능 (Auto Scaling)
- 3가지의 DB 스토리지 유형 제공
- 범용 SSD 스토리지 : 일반적인 용도
- 프로비저닝된 IOPS SSD 스토리지 : 빠른 I/O가 필요한 경우 사용
- 마그네틱 스토리지 : 액세스 빈도가 낮은 경우 사용
이 친구들!!
RDS의 백업 지원
- DB 인스턴스 백업 및 복구를 위한 두 가지 방법, 즉, 자동 백업 및 DB 스냅샷을 제공
- 자동 백업(Automated backup)
- 백업을 수행하는 백업 기간을 설정
- 백업 보존 기간은 1일부터 최대 35일까지 설정가능
- DB 인스턴스를 특정 시점으로 복구 가능 (Point in time recovery)
- RDS는 DB 트랜잭션 로그를 5분마다 백업하므로 가장 오래된 시점부터 5분전까지 시점으로 복구가능
- 자동백업을 비활성화 하려면 보존기간을 0으로 설정
- DB 스냅샷
- 사용자가 수동으로 스냅샷 생성가능 (수동 백업)
- 사용자가 지정한 만큼 백업을 보존할 수 있음 (스냅샷 보존기간 없음)
- 특정 시점으로 복구 또는 DB 스냅샷에서 복구 작업을 수행하면 새로운 엔드포인트를 가지는 새 DB인스턴스가 생성됨 (필요한 경우 기존 DB 인스턴스 삭제할 수 있음)
- Amazon RDS DB 스냅샷과 자동 백업은 S3에 저장
RDS의 보안
- SSL/TLS를 사용하여 애플리케이션과 DB 인스턴스 간의 전송 중 암호화 가능
- AWS Key Management Service (KMS)를 통해 관리하는 키를 사용하여 모든 DB 엔진에 대한 저장 중 암호화 가능
- 암호화되지 않은 DB 인스턴스 암호화 3가지 방법
- RDS 인스턴스 스냅샷 생성
- 암호화된 스냅샷 복사본 생성
- 암호화된 스냅샷에서 RDS 인스턴스 복원
- 암호화된 스냅샷에서 RDS 인습턴스 복원
- 암호/PW외에 IAM 사용자 및 역할을 통해 DB인증 적용 가능
- RDS에 보안그룹을 연결하여 IP주소, EC2 인스턴스에 대한 DB 연결 제어 가능
- RDS Audit Logs 기능을 사용해 보안 감사에 활용 가능
- 로그 데이터 장기 보관을 위해 로그 CloudWatch Log에 보낼 수 있음
RDS의 읽기 전용 복제본 (Read Relicat)
- 읽기만 가능한 DB 인스턴스의 복제본을 여러 개 만드는 기능
- 읽기를 별도로 분리하여 성능을 향상
- 원본 DB의 읽기/쓰기 트래픽을 분산시켜 성능 향상
- SQL쿼리를 많이 하는 리포팅 툴의 경우 읽기 복제본으로 연결하여 쿼리 성능 향상
- 읽기 전용 복제본이 작동하려면 백업이 활성화된 상태로 유지되어야 함
- 활성 상태의 장기 실행 트랜잭션이 있으면 완료 후에 읽기 전용 복제본을 생성하는 것을 권장
RDS의 다중 AZ (Multi-AZ)
- DB를 여러 가용영역에 배치 하는 것
- 가용영역 혹은 DB에 문제가 생겨 장애 발생시 Replica로 라우팅하여 DB를 Active로 바꿔 연결할 경우
- 내구성 및 가용성을 향샹 시킬 수 있음 (RDS DB 다운타임이 가장 적게 할 수 있다.)
- DB 인스턴스에 대한 업데이트는 가용영역 전체에서 예비 복제본에 동기식으로 복제
- 한곳의 DB가 장애 발생시 다른 곳으로 자동 연결하도록 장애 조치 수행 (재해 복구 용도로 사용)
- 복제본을 대기하는 것이지 Read / Write용도가 아니다. 즉, 읽기 트래픽 처리 불가능
- AZ RDS는 읽기 트래픽 분산 용도가 아니다.
복제와 다중 AZ를 고려한 아키텍처는 다음과 같다.
RDS의 RDS Coustom
- EC2에 RDS를 설치하여 구성하는 경우는 사용자가 서버를 포함한 모든 부분을 관리
- RDS는 AWS에서 DB와 OS를 모든 부분을 관리하는 완전 관리형 서비스
- 즉, RDS Custom은 사용자가 DB와 OS에 대한 관리 권한을 가진다.
- 사용자 지정 DB 및 OS 패키지 설치, 특정 DB 설정 구성, 파일 시스템 구성, 자체 라이센스 관리 등
- RDS보다 권한을 더 가진다.
RDS의 RDS Proxy
- 애플리케이션이 DB와 연결 풀링(Pool)하고 공유하도록 하는 기능 (서버와 db가 직접적으로 연결 x)
- 여러 애플리케이션 연결에서 db연결을 공유할 수 있으므로 DB 리소스를 효율적으로 사용가능하다.
- 1) DB 장애 조치 시간 감소
- 애플리케이션 연결을 유지하면서 예비 DB인스턴스에 자동으로 연결
- 2) 보안 개선
- DB에 AWS IAM인증을 필요에 다라 적용하고 AWS Secrets Manager에 보안 인증 정보를 안전하게 저장
- 풀이 중간역할을 하기 때문에 보안적으로 안정적
- 3) DB 성능 유지
- DB 연결 풀을 설정하고 매번 새 DB 연결을 여는 데 필요한 메모리 및 CPU 오버헤드 없이 이 풀에서 연결을 다시 사용
- 연결 요청이 지정된 한도를 초과하는 경우 애플리케이션 연결을 거부(DB 열린 연결 수 제어)하여 부하 감소
- 1) DB 장애 조치 시간 감소
RDS 실습
- RDS 서비스로 들어가 DB를 생성한다.
- 손쉬운 생성은 미리 구성되어 있는 것이므로 표준 생성을 클릭한다.
- MySQL을 선택한다. (버전은 8.0.23)
- 템플릿은 프리티어으로 한다.
- 이름은 database-1 , admin, ss1234로 비밀번호를 설정해준다.
- DB 인스턴스 클래스는 t2.micro를 선택한다.
- 스토리지 유형은 프로비저닝으로 선택을한다.
- 오토스케일링도 설정할 수 있다 (어느 용량이 늘어나면 스토리지가 늘어나도록) (여기선 x)
- [연결]에서 퍼블릭 액세스를 [예]를 클릭한다.
- default를 지우고 [새로 생성]을 누르고 RDS_SG라고 하나 VPC 보안그룹을 만들어주자
- DB인증은 암호인증으로 한다.
- 추가구성은 여러가지 옵션이 있다. (최대 35일까지)
- 생성!
우리가 사용한 프리티어는 다중 AZ를 지원하지 않는다...
DB를 클릭해서 확인할 수 있는 이 앤드포인트는 애플리케이션을 연결해서 접속할 수 있다.
데이터 읽기 및 쓰기가능하다!
DB인스턴스 생성할때 자동 백업을 활성화했기 때문에 자동백업도 가능하다.
또한 특정 시점으로 복원할 수 있다. (새로운 DB 인스턴스 생성 가능 - 위 방법 순서와 동일)
스냅샷도 가능한 것을 확인할 수 있다.
'Cloud Infra Architecture (AWS) > AWS SAA-C03' 카테고리의 다른 글
AWS ElastiCache란? (0) | 2023.01.11 |
---|---|
AWS Aurora란? (0) | 2023.01.11 |
AWS 데이터베이스 개요 (0) | 2023.01.11 |
AWS Global Accelerator란? (0) | 2023.01.11 |
AWS CloudFront 보안 (0) | 2023.01.11 |