일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 프로젝트
- 컴퓨터구조
- fatch
- 산업은행it
- 산업은행청년인턴
- CPU스케줄링
- JPA
- 2178
- DB replication
- 파이널프로젝트
- CS
- 해시
- 백준
- springboot
- 스케일아웃
- 폰켓몬
- Spring JPA
- SpringBatch
- BFS
- 코테
- 외래키제약조건위반
- 운영체제
- 트리맵
- 그래프탐색
- 임베디드타입
- findById
- 구현
- 프로그래머스
- 트리셋
- flyway
- Today
- Total
나 JAVA 봐라
[AWS RDS] Multi-AZ, Read Replica 본문
프로젝트를 aws를 통해 배포하기로 했다.
그에 따라 DB도 RDS를 사용하기로 했는데, 이 후 Replication, Auto scale까지 고려하다보니 따져봐야할 것들이 많아졌다.
그렇다고 무턱대고 생성하기에는.. 추후 배포 후 운영 단계에서 많이 힘들어질 것 같았다.
그래서 프로젝트 운영 시 필요한 기능들을 따지다보니 AWS 서비스에 대해 하나씩 공부하게 되었다.
AWS.. 공부할수록 없는게 없어서 왜 비싼지는 알 것 같고, 동시에 잘 써먹으려면 CS 지식을 바탕으로 AWS 서비스도 잘 공부해야겠다는 필요성을 느꼈다... ㅠ
현재 진행형으로 계속 공부 중인데, 공부한 것들이 머리에서 휘발되기 전에 어떤 서비스들을 어떤 이유로 찾아보게 되었는지 순서대로 정리해보려고 한다!
처음에는 단순히 DB replication만 하려고 했다.
DB replication 작업 자체는 데이터베이스를 생성한 후에 클릭 몇 번만 하면 Read Replica가 생성된다.
그래서 RDS에서 데이터베이스 생성 버튼을 눌렀는데, Multi-AZ 옵션 설정에 대해 나왔다.
알아보니 가용성을 위해 Stand-By 인스턴스를 하나 더 생성하는 옵션이라고 한다.
그럼 Read Replica나 Stand-By 인스턴스나 둘 다 DB 서버를 두 대 띄우는건데 뭔 차이가 있는거지???
이 때부터 물음표 백만개 찍히기 시작함
Read Replica 란 ?
- primary instance의 복제본으로 read 작업만 수행하는 인스턴스
- primary instance로 가는 요청 중, read 요청을 수행하기 때문에 부하를 분산해준다.
- read replica의 주요 목적은 "확장성"
- RDS에서는 여러 종류의 DB를 제공하는데, 각 DB에 따라 read replica 생성 방식이 다르다. 공식 문서를 보니 Aurora와 비 Aurora의 차이인 듯하다.
- 기본적으로는 '비동기식' 복제를 한다.
(Aurora는 해당 안되는 것 같다.)그렇기 때문에 Primary에 변경사항이 생겨도 read replica에 바로 반영되지 않고, 일정 주기로 변경된 데이터가 read replica로 전송된다. - 읽기 성능을 높이거나, 읽기 부하가 많은 애플리케이션을 운영할 때 read replica를 사용하는 것이 적합하다.
Multi - AZ 란 ?
- 여러 개(Multi)의 AZ(가용 영역)에 RDS를 분산하는 기술
- A라는 AZ에 있는 Primary instance에 문제가 생길 경우, 다른 AZ에 있는 Standby instance가 기존의 Primary의 역할을 대신한다.
- 즉, Multi - AZ의 주요 목적은 "가용성"
- "가용성"을 위한 기능이기 때문에, read replica같이 read 요청을 수행하는 등의 역할을 하지 않는다. Primary에 문제가 생기기 전까지는 아무것도 안한다. 그래서 이름이 standby이다.
계속 대기하다가 문제생기면 튀어감 - Primary instance에서 변경되는 데이터를 Standby instance에 '동기식' 복제를 한다. 그렇기 때문에 Primary에 변경사항이 생기면 standby에 즉시 반영된다. 즉, standby는 항상 최신 데이터를 갖는다.
(공식 문서에서 Aurora만 비동기식 복제를 지원한다고 하여, 이 부분에 대해 알아볼 필요가 있다.) - 고가용성과 장애 복구에 대한 처리가 중요한 경우 Multi - AZ가 적합하다.
그리고, 둘을 나눠서 설명하다 보니 둘 중 하나만 선택할 수 있다! 고 이해할 수도 있을 것 같다는 생각이 든다.
Read replica 생성 시에도 Multi - AZ 기능을 사용할 수 있다.
그리고 공식 가이드를 보니까 Aurora이냐 아니냐에 따라서 read replica든 multi - AZ든 복제 방식 등에 차이가 많다.
(ex. Aurora의 읽기 전용 복제본은 Primary와 동일한 기본 스토리지를 공유하기 때문에, 데이터를 복제본 노드에 복사할 필요가 없음)
위의 내용은 비 Aurora를 기준으로 작성했다.
공식 가이드를 많이 읽어야할 것 같다. (아래 참고 링크)
위의 내용을 비교하여 표로 정리해보았다.
Multi - AZ | Read Replica | |
목적 | 고가용성 | 확장성 |
복제 방식 | 동기식 복제 | 비동기식 복제 |
가격 | 비싸다. 동기식 복제이기에 더 많은 CPU와 메모리 리소스를 필요로 하고, 고가용성이 목적이기에 서비스 중단을 방지하고자 standby instance도 primary와 같은 성능을 제공하기 때문이다. | 싸다. |
이렇게 정리하고보니, 우리 팀은 Read Replica만 하는 것이 맞다고 판단했다.
근데 여기까지 하고보니 read / write 요청에 따라 로드밸런싱 해주는 것은 어떻게 해야하는지 의문이 생겼다.
그래서 로드밸런싱을 위한 aws 서비스에 대해서도 공부했다. (ELB, RDS proxy,...)
=> 결론부터 말하면 aws 서비스 사용 없이 yaml 로 처리해주었다. ^^
https://yejin-code.tistory.com/17
Spring Boot + AWS RDS 연동 및 Read/Write 분산 처리
사전 작업으로 AWS RDS로 mysql를 띄운 후, read replica를 생성했다. read/write 요청에 따른 분산 처리를 어떻게 할까 고민하면서 aws 서비스를 사용해보려 했지만 여러 이슈로 애플리케이션에서 분산 처
yejin-code.tistory.com
참고
https://aws.amazon.com/ko/rds/features/read-replicas/
Amazon RDS 읽기 전용 복제본 | 클라우드 관계형 데이터베이스 | Amazon Web Services
Amazon RDS 읽기 전용 복제본은 Amazon RDS 데이터베이스(DB) 인스턴스의 성능과 내구성을 높여줍니다. 읽기 전용 복제본을 사용하면 손쉽게 단일 DB 인스턴스의 용량 한도 이상으로 탄력적으로 스케일
aws.amazon.com
https://yeddong.tistory.com/entry/RDS-Read-Replicas
[RDS] Read Replicas
RDS의 Read Replica 란? - primary writer instance의 복제본으로 read-only만 가능하다. - 재해복구(DR)을 위해 사용하거나, primary instance의 부하를 분산하기 위해 사용한다. - DB 엔진별로 limiation이나 특이사항이
yeddong.tistory.com
'DevOps, MLOps > AWS' 카테고리의 다른 글
[AWS SAA-C03] 7장 EC2 - Instance Storage (1) | 2024.06.19 |
---|---|
[AWS SAA-C03] 6장 EC2 - Associate (0) | 2024.06.18 |
[AWS SAA-C03] 5장 Amazon EC2 - Basics (7) | 2024.06.13 |
[AWS SAA-C03] 4장 AWS IAM (0) | 2024.06.12 |
[AWS SAA-C03] 1~3장 AWS 클라우드 개요 (0) | 2024.06.11 |