#AWS Certified Developer Associate
74. Amazon RDS 개요
Relational Database Service (관계형 데이터베이스 서비스)
Postgres, MySQL, MariaDB, Oracle, Microsoft SQL Server, Aurora(AWS Proprietary database)
Storage Auto Scaling - 자동 용량 조정
- 최대 용량을 지정
- 남은 용량이 10% 미만, 낮은 스토리지 상태가 5분동안 지속, 6시간 이상 지났을 경우 자동으로 스토리지 용량을 수정
75. RDS 읽기 전용 복제본과 다중 AZ
RDS Read Replicas - RDS 읽기 전용 복제본 - 읽기를 스케일링 함
- 읽기 전용 복제본을 최대 5개까지 생성할 수 있음
- 가용영역이나 리전을 걸쳐서 생성될 수 있음
- 복제본을 승격시켜 db 로 활용할 수 있음
- SELECT 문 만 사용 가능
읽기 전용 복제본의 사용 사례
- 생산DB (r/w 수행)
- 새로운 팀이 기존 데이터를 기반으로 몇가지 보고와 분석을 실시한다고 가정
- 만약 새로운 팀의 애플리케이션을 기존 db와 연결한다고 하면 오버로드가 발생하고 기존 시스템의 속도가 느려질 것
- 이때 새로운 워크로드에 대한 읽기 전용 복제본을 생성
- 기존db 와 복제본 사이 비동기식 복제가 발생
RDS Read Replicas - network cost
- aws 는 같은 가용 영역 안에서의 데이터 트레픽은 비용 발생 x
- read replicas 또한 같은 리전 안에서의 트래픽은 비용 발생 하지 않음
- 다른 리전으로 읽기 전용 복제본을 생성할 경우에는 비용 발생
RDS Multi AZ (Disater Recovery)
다중az는 주로 재해 복구에 사용됨
SYNC replication
- RDS Master DB instance (AZ A) <-> RDS Standby DB instance (AZ B)
- 마스터 db에 문제가 발생할 경우를 대비한 장애 조치
- 문제가 생길 경우 standbyDB를 masterDB로 승격
- 원하는 경우 읽기 전용 복제본을 다중az 로서 사용할 수 있다
from Single-AZ to Multi-AZ
- 설정을 수정하는 것 외에 다른 작업을 할 필요가 없음
- 설정만 수정하면 알아서 단일AZ에서 다중AZ 로 변경된다는 뜻
76. Amazon RDS 실습
여러 엔진 유형이 있다
프리티어 사용을 위해 버스터블 클래스를 선택하고
db.t2.micro 인스턴스 유형을 선택했다
다른 클래스에 여러 인스턴스 유형이 있어서 워크로드에 따라 선택할 수 있다
스토리지도 프리티어 사용 가능한 gp2 로 설정했다
최소 20gb 로 넉넉하고 storage autoscaling 기능의 임계값도 기본 1000gb 로 설정되어있다
강의에서는 다중az db인스턴스의 생성or미생성 만 있지만 최신버전에서는 3개의 옵션을 제공하는거같다
읽어보면 2번은 단순백업 az 인스턴스 생성인것 같고
3번은 말 그대로 단일 db 인스턴스고
1번 옵션이 새로 생겼는데 새로 읽기 워크로드를 처리하기 위한 용량을 늘린다고 하니
위에서 배운 read replicas(읽기 전용 복제본)을 생성하는 옵션인것 같다.
캡쳐에서 퍼블릭 액세스 아니요로 되어있는데 예로 했다
보안그룹은 새로 만들었고
포트는 3306번이라고 한다
2번 옵션인 IAM db인증이 중요하다고 한다
지금은 단순 암호 인증으로 하고 넘어감
추가 구성에서 여러 것들을 설정할 수 있는데
초기 db 이름, 백업, 모니터링, cloudwatch 로그 보내기, iam역할, 삭제 방지 를 설정할 수 있다
이후 sql gui 인 sqlectron 을 설치해줬다
https://github.com/sqlectron/sqlectron-gui/releases/tag/v1.38.0
본인은 우분투 환경이여서
를 받아주고
gdebi 패키지를 설치한 후 deb을 설치했다
db type 맞게 선택해주고
서버 앤드포인트 주소와 포트를 매핑시켜준 다음
id pass 입력하고 초기 db 이름까지 입력해주고 테스트를 눌러보면
connection test successfully 가 나온다
연결된 db에서 쿼리문 실행
INSERT DATA 나 SELECT 문 등 실행할 수 있다
rds 매니저의 작업 탭에서 읽기 전용 복제본을 만들 수도 있다
db 삭제 시에는 먼저 삭제 보호를 제거해야한다
요금 결제가 되기 전에 언넝 삭제
77. RDS 암호화 + 보안
Encryption (암호화)
- 만약 마스터데이터를 암호화 하지 않으면 복제본도 암호화할 수 없다
암호화된 RDS DB의 백업 암호화
- 암호화 되지 않은 RDS DB에서 스냅샷을 생성하면 스냅샷 자체는 암호화 되지 않음
- 반대로 암호화된 RDS DB에서 스냅샷을 생성하면 모든 스냅샷이 기본으로 암호화가 되지만 항상 기본값은 아님
- 암호화 되지 않은 스냅샷을 복제하여 암호화 할 수 있음
암호화 되지 않은 RDS DB의 백업 암호화
- 스냅샷을 생성, 복제한 후 암호화 활성
- 암호화된 스냅샷에서 DB 복원
- 이전 DB 데이터를 새로 복원한 DB로 옮기고 기존 DB를 삭제함
Security (보안)
Network & IAM
Network Security
- 대게 퍼블릭 서브넷이 아닌 프라이빗 서브넷에서 배포됨
- RDS 보안은 RDS DB에 연결된 보안그룹을 활용해 실행됨 (EC2 인스턴스의 보안그룹과 동일한 개념)
IAM Authentication (IAM 인증)
- MySQL, PostgreSQL 에서만 실행됨
- 인증 토큰 사용 (rds api 호출을 사용) (수명 15분)
- 장점 : 네트워크 안팎이 SSL로 암호화 된다는 것, 중앙에서의 사용자 관리 용이, IAM역할과 EC2 인스턴스 프로필로 쉽게 통합할 수 있음
78. Aurora 개요
AWS DB (not open sourced)
Postgres, MySQL과 호환
클라우드 네이티브 - 가용성 높음
RDS 보다 20% 정도 비쌈 - 규모면에서 훨씬 효율적
79. Aurora 실습
실제로 소규모 과금이 발생해서 만드는 과정만 봤음
80. 일래스틱캐시(ElastiCashe) 개요
캐시 - 높은 성능과 낮은 지연 시간을 가진 인 메모리 데이터베이스
일래스틱캐시 사용 - 읽기 집약적인 워크로드의 부하를 줄이는데 도움
유저 - 애플리케이션 - 일래스틱캐시 - RDS 로 접근해서 RDS 의 쿼리 조회의 부담을 덜어주는 서비스
REDIS - 자동 장애 조치로 다중 AZ를 수행하는 기술. 고가용성, 백업, 읽기 전용 복제본
MEMCACHED - 다중 분산 데이터, 데이터를 손실할 수 없는 단순 분산 캐시
81. 일래스틱캐시(ElastiCashe) 실습
redis 클러스터와 memcached 클러스터 유형을 선택해서 생성할 수 있다
redis 클러스터는 데이터베이스로 사용할 수 있지만
memcached 클러스터는 단순 캐시 역할을 한다.
redis 클러스터로 만들어보는 실습을 할 것 같다
엔진은 최신버전을 선택
포트는 일래스틱캐시 기본 포트인 6379번
파라미터 그룹은 기본에
노드 유형은 프리티어인 t2.micro 로 설정했고
복제본은 일단 0 개로 했다
복제본 옵션을 0 으로 지정하면 위치 탭의 다중AZ 옵션이 비활성화 된다
기본적으로 다 비활성화 되어있는데
사용을 눌러보면 해당하는 옵션들이 나타난다
레디스에만 있는 기능이라고 한다 - 맴캐시트에는 백업이 없다
다음 유지보수 기간은 없는걸로 하고 생성함
강의랑 비교해서 UI 가 상당히 다른데 강의는 2019년에 제작되었기 때문인듯 하다
81. 일래스틱캐시(ElastiCashe) 전략
https://aws.amazon.com/ko/caching/best-practices/
첫번째 전략
Lazy Loading / Cache-Aside / Lazy Population 란? (3개 모두 같은 전략을 다르게 부르는 말)
캐시에 데이터 있음
cache hit - 애플리케이션에서 ElastiCache 로 데이터를 요청했을때 캐시 안에 데이터가 있다면 캐시 히트를 반환 (데이터 반환)
캐시에 데이터 없음
cache miss - 애플리케이션에서 ElastiCache 로 데이터를 요청했을때 캐시에 데이터가 없는 경우 캐시미스가 발생
read from db - cache miss 발생 후 캐시가 RDS에서 데이터를 찾는 과정
write to cache - 같은 요청을 하는 다른 애플리케이션에 캐시히트를 반환하기 위해 캐시에 데이터를 기록함
Lazy Loading / Cache-Aside / Lazy Population 장점
- 오직 요청된 데이터만 캐싱됨 - 효율적
- 노드 실패가 발생해도 치명적이지 않음 - 단지 예열 지연이 발생
Lazy Loading / Cache-Aside / Lazy Population 단점
- 캐시에 데이터가 없을 경우(cache miss) 3번의 네트워크 호출이 발생 (read penalty)
- stale data : 오래된 데이터 - 데이터가 RDS 에 업데이트 된다고 해도 반드시 일래스틱 캐시에서 업데이트 되는 것은 아님
두번째 전략
Write Through
데이터베이스가 업데이트 될 때 캐시를 추가하거나 업데이트 하는 것을 의미
애플리케이션이 RDS 를 수정하려고 할때 캐시에 write 하는 함
장점
- 캐시 안의 데이터는 영원하지 않음 - reads are quick
- write penalty vs read penalty - lazy loading 은 읽기에 3번의 네트워크 호출이 필요한데 반해 write through 는 읽기에 1번이면 됨, 하지만 쓰기에 2번의 네트워크 호출이 필요
단점
- rds 에 데이터를 추가하기 전까지 일래스틱캐시 또는 일반적인 캐시가 필요한 데이터를 갖지 못할 수도 있음 - lazy loading 과 결합하여 문제를 보완할 수 있음
- rds 에 쓸 데이터가 많은데 캐시 용량이 작을 경우 데이터 손실이 일어날 수 있음
세번째 전략
Cache Evictions and Time-to-live(TTL) (캐시 제거와 TTL)
캐시 용량이 가득 찼을때 캐시 데이터를 제거하는 것
- 가장 최근에 사용되지 않은 항목 제거됨 (LRU-least recently used)
- TTL (ex.TTL 5 : 5분이 되면 캐시에서 삭제됨)
TTL은 짧으면 몇초에서 길면 몇일까지도 설정 가능 - 몇초의 TTL 은 매우 유용함
81. 일래스틱캐시(ElastiCashe) Redis 클러스터 모드
레디스에서 할 수 있는 일래스틱캐시 복제 방식은 2개이며 둘다 알아야 함
레디스는 '샤드'안에 캐시 노드들이 있음
1. Cluster Mode Disabled
primary node 1개, replicas 5개 - 선택적으로 0~5개까지 캐시를 복제할 수 있음
Asynchronous Replication - 복제본은 캐시간에 비동기적임
기본 노드(primary node)는 읽기와 쓰기에 사용됨 - 다른 노드는 읽기 전용
다른 읽기 전용 노드들은 문제 발생 시 primary node 를 대체할 수 있음
다중AZ 지원 - 기본적으로 활성화 - 손실 복구
2. Cluster Mode Disabled
데이터가 여러 샤드로 분할됨 - 쓰기를 확장할때 유용함
데이터가 모든 샤드에 걸쳐 분할됨
각 샤드의 동작은 1번과 동일함 - 각각 같은 노드 갯수를 가짐
다중AZ 지원 - 기본적으로 활성화 - 손실 복구
단일 마스터에 500개의 노드를 가질 수 있음 (복제본이 없다면(primary only) 500개의 샤드 가능)
끝!
'AWS > AWS Certified Developer Associate' 카테고리의 다른 글
[Udemy][day-18] AWS 강의 section 10 : VPC 기초 (0) | 2022.08.05 |
---|---|
[Udemy][day-14~17] AWS 강의 section 9 : Route 53 (0) | 2022.07.25 |
[Udemy][day-6~12] AWS 강의 section 7 : AWS기초: ELB + ASG (0) | 2022.07.12 |
[Udemy][day-4,5] AWS 강의 section 6 : EC2 인스턴스 스토리지 (0) | 2022.07.11 |
[Udemy][day-3] AWS 강의 section 5 : EC2 기초 (0) | 2022.07.04 |