공부하기싫어
article thumbnail

#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 실습

create db

여러 엔진 유형이 있다

 

instance

프리티어 사용을 위해 버스터블 클래스를 선택하고

db.t2.micro 인스턴스 유형을 선택했다

다른 클래스에 여러 인스턴스 유형이 있어서 워크로드에 따라 선택할 수 있다

 

storage

스토리지도 프리티어 사용 가능한 gp2 로 설정했다

최소 20gb 로 넉넉하고 storage autoscaling 기능의 임계값도 기본 1000gb 로 설정되어있다

 

Availability & durability

강의에서는 다중az db인스턴스의 생성or미생성 만 있지만 최신버전에서는 3개의 옵션을 제공하는거같다

읽어보면 2번은 단순백업 az 인스턴스 생성인것 같고

3번은 말 그대로 단일 db 인스턴스고

1번 옵션이 새로 생겼는데 새로 읽기 워크로드를 처리하기 위한 용량을 늘린다고 하니

위에서 배운 read replicas(읽기 전용 복제본)을 생성하는 옵션인것 같다.

 

network

캡쳐에서 퍼블릭 액세스 아니요로 되어있는데 예로 했다

보안그룹은 새로 만들었고

포트는 3306번이라고 한다

 

authentication

2번 옵션인 IAM db인증이 중요하다고 한다

지금은 단순 암호 인증으로 하고 넘어감

 

추가 구성에서 여러 것들을 설정할 수 있는데

초기 db 이름, 백업, 모니터링, cloudwatch 로그 보내기, iam역할, 삭제 방지 를 설정할 수 있다

 

이후 sql gui 인 sqlectron 을 설치해줬다

https://github.com/sqlectron/sqlectron-gui/releases/tag/v1.38.0

 

Release v1.38.0 · sqlectron/sqlectron-gui

Features Sign and notarize builds for macOS Bugfixes Fix bug where switching tab causes loss of editor focus (#687, #690) (thanks @synle) Fix clicking on link to docs from config modal Dependen...

github.com

본인은 우분투 환경이여서

sqlectron_1.38.0_amd64.deb

를 받아주고

gdebi 패키지를 설치한 후 deb을 설치했다

 

sqlectron

 

db connect

db type 맞게 선택해주고

서버 앤드포인트 주소와 포트를 매핑시켜준 다음

id pass 입력하고 초기 db 이름까지 입력해주고 테스트를 눌러보면

connection test successfully 가 나온다

 

Sqlectron

연결된 db에서 쿼리문 실행

INSERT DATA 나 SELECT 문 등 실행할 수 있다

 

 

read replicas

rds 매니저의 작업 탭에서 읽기 전용 복제본을 만들 수도 있다

 

db 삭제 시에는 먼저 삭제 보호를 제거해야한다

delete 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) 실습

ElastiCache dashbored

redis 클러스터와 memcached 클러스터 유형을 선택해서 생성할 수 있다

redis 클러스터는 데이터베이스로 사용할 수 있지만

memcached 클러스터는 단순 캐시 역할을 한다.

 

redis 클러스터로 만들어보는 실습을 할 것 같다

 

cluster option

엔진은 최신버전을 선택

포트는 일래스틱캐시 기본 포트인 6379번

파라미터 그룹은 기본에

노드 유형은 프리티어인 t2.micro 로 설정했고

복제본은 일단 0 개로 했다

 

location

복제본 옵션을 0 으로 지정하면 위치 탭의 다중AZ 옵션이 비활성화 된다

 

보안

기본적으로 다 비활성화 되어있는데

사용을 눌러보면 해당하는 옵션들이 나타난다

 

backup

레디스에만 있는 기능이라고 한다 - 맴캐시트에는 백업이 없다

 

다음 유지보수 기간은 없는걸로 하고 생성함

 

강의랑 비교해서 UI 가 상당히 다른데 강의는 2019년에 제작되었기 때문인듯 하다

 

 

 

 

81. 일래스틱캐시(ElastiCashe) 전략

https://aws.amazon.com/ko/caching/best-practices/

 

Caching Best Practices | Amazon Web Services

Lazy caching, also called lazy population or cache-aside, is the most prevalent form of caching. Laziness should serve as the foundation of any good caching strategy. The basic idea is to populate the cache only when an object is actually requested by the

aws.amazon.com

 

첫번째 전략

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개의 샤드 가능)

 

 

 

 

끝!