Aurora Serverless
- Aurora의 온디맨드 Auto Scaling 구성
- 애플리케이션 요구사항을 기반으로 자동으로 시작 및 종료하고 용량을 확장 또는 축소 함
- 데이터베이스 용량을 관리하지 않고도 클라우드에서 데이터베이스를 실행할 수 O
- 인스턴스를 미리 프로비전 하거나 관리할 필요X
- T2.micro / T2.midium 등의 인스턴스 타입 역시 선택 불필요
- V1과 V2가 존재하는데 이 강의를 할 때는 V2는 아직 Preview 상태라서 V1기준으로 서술 하겠음
Aurora Serverless 특징
1. OnDemand
2. Single-AZ
- 하나의 AZ에서만 동작 함
- 단, Multi-AZ Failover를 지원 함
: 하나의 AZ에서 장애 발생 시, 다른 AZ로 바로 복구를 해줌 - 기존의 Provisioned(Aurora) 보다 느림
- 용량은 10Gb ~ 128Tb로 자동 스케일링
- DB Cluster Parameter Group만 지원 함
--> DB Cluster Parameter Group: 클러스터 전체에 적용
--> DB Instance Parameter Group: 개별 인스턴스에 적용
3. ACU(Aurora Capacity Unit) 단위로 컴퓨팅 조절
(1) 약 2gb RAM, CPU, 네트워크
(2) 최대/최소 ACU 설정 가능
- 부하에 따라, 정해놓은 변동폭 안에서 자유롭게 변함
- 부하가 많다 --> 높은 ACU
(3) AWS에서 Warm Instance pool에서 인스턴스를 준비하고 스케일링에 따라 인스턴스를 할당/회수
(4) 최소 0ACU까지 스케일 다운 가능 == 스토리지 비용만 지불
- 단, 0ACU에서 1이상의 ACU로 전환하는데 시간 소요(25~40초)
- 선택적 기능이기 때문에 최소 1ACU이상 유지 가능
- 디폴트 5분, 최대 24시간 까지
- 7일동안 이용내역이 없으면 스냅샷으로 저장, 요청 발생시 자동 복구
Aurora Serverless 아키텍쳐
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2Fa32d23b3-7d23-4cdb-a38e-63789f134ac7%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.34.40.png)
- 외부에서 직접 액세스X, Public IP 없음
- Bastion Host 등을 이용하여 VPC를 통해서 액세스 해야함
Requester Router
- Connection을 계속 유지시켜줌
- 계속 연결을 받아주고 Instance Layer가 바뀜에도 불구하고 계속 Connection을 유지하고 라우트를 해줌
- Instance Layer에서 계속 구성이 바뀌는데, 바뀔때마다 Connection이 끊어지면 지속적으로 동작을 못하기 때문
Instance Layer
- Requester Router에서 받은 요청들을 처리, 연산
- Storage Layer와 연동
- Instance는 Stateless, 아무데나 왔다갔다 함
Storage Layer
Work Flow
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2F18f2e857-2b97-4383-bc96-ac2b5f54c3bd%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.50.47.png)
- 요청이 들어왔을 때 Warm Instance pool에서 Instance 하나를 할당
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2F027bc3ee-343d-40ec-9d88-386bb7d1b038%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.52.50.png)
- Requester Router를 통해서 인스턴스가 요청을 받고 Storage에 접속해서 쿼리, 트랜잭션 등을 처리
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2F92a68529-0758-4d99-b429-1c80b0cdb545%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.54.26.png)
- 요청이 많아지게 되면 Warm Instance pool에서 더 많은 인스턴스들을 할당(ACU 최대에 따라 하겠쥬?)
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2Fc462cad2-3277-4130-8f75-cdc41933c1d0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.55.59.png)
- 많은 요청들을 처리
- 그림에서 인스턴스 사이즈는 같게 그렸지만 사실은 수시로 변함
- 변함에도 불구하고 Requester Router 덕분에 Connection을 유지O
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2F3f1ed787-9b38-4b65-9fdb-a540f40a2e26%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%208.58.39.png)
- 요청이 줄어들어서 인스턴스가 많이 필요가 없다고 하면 Aurora Serverless에서 인스턴스를 회수 함
- 적정한 ACU을 유지하여 비용 최적화 함
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2F83dc4f7e-36d3-46c9-8f92-0d8978f63208%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.02.12.png)
- 아무런 요청이 없다면 마지막 인스턴스도 회수를 하여 0ACU 상태로 유지 함
(0ACU 설정 하였을 때)
- Aurora Serverless에서 커넥션 없을 때를 계속 찾음
--> 이것을 Scaling Point라고 함
Aurora Serverless의 보안과 복구
1. Multi-AZ Failover
2. 기본적으로 암호화 되어있음 : 비활성 불가
3. 패치/업데이트 시 스케일링 포인트를 찾아 업데이트
- 스케일링 포인트: 쿼리 처리가 없는 상태
- 하루이상 찾지못하면 클러스터 이벤트로 알려줌
- 이후 TimeoutAction 설정에 따라 롤백 혹은 자동업데이트
Aurora Serverless의 제약사항
1. VPC 밖에서 액세스 불가능
- 직접 밖에서 로그인 불가능
- Public IP 할당 불가능
- Data API 또는 Bastion Host 등의 방법으로 접근
2. Replica / 클로닝 / Backtrack / Multi-Master 불가능
3. 포트는 3306(MySQL) / 5432(PostgreSQL) 고정
4. Inter Region VPC Peering 불가능
5. 엔진 버전 고정
Data API
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2Fd19d3092-2615-4ee4-8c4e-245f0a9fedf3%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.24.15.png)
- Aurora Serverless용 Data API를 사용하면 Aurora Serverless DB 클러스터에 대한 웹 서비스 인터페이스로 작업할 수 있다.
- Data API에서 DB 클러스터에 지속적으로 연결하지 않아도 됨
- 대신 AWS SDK와의 통합과 보안 HTTP 엔드포인트를 제공한다.
- 연결을 관리하지 않고 엔드포인트를 사용하여 SQL문을 실행 할 수 있다.
cf) 기존, 전통적인 rdbms
![](https://velog.velcdn.com/images%2Fcombi_areum%2Fpost%2Fe2becf43-b787-4e4b-a9b9-33261504d656%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-03-12%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.23.47.png)
- 전통적인 rdbms는 커넥션 유지가 어렵다.
- DB에는 커넥션의 제한숫자가 있다
- 근데 람다는 순식간에 100-200개도 줄었다 늘었다 하기 때문에 제한된 수가 넘어서 bottleneck이 발생 할 수 있다.
- 그것을 해결하기 위해서 AWS에서 출시 한 것이 Amazon RDS Proxy 임
- 또 한가지가 Data API 이다.
참고