AWS Aurora Serverless DB 사용하기

Alli_Eunbi·2022년 8월 17일
0
post-thumbnail
post-custom-banner

Serverless RDS

Rds에도 serverless한 버전이 있다니!
serverless auroraDB는 aws에서 제공하는 serverless DB이다.
serverless rds는 서버에 대한 걱정 없이 사용 가능한 db를 의미한다.
기존에는 디비를 저장할 서버를 구매하여 스케일링을 진행했다면, serverless db는 알아서 스케일링을 진행해주며 mysql보다 5배는 빠른 속도, 병행쿼리일 경우 거의 100배에 가까운 속도를 지원한다고 한다.

다만 서버리스의 한계점이라면 비용문제인데, aurora serverless DB의 비용은 생각보다 크다.
일반적인 mysql rds를 사용한 경우 1시간당 $0.208 비용이 나오면, aurora serverless의 경우 $0.4 정도를 지불해야한다.
이건 최소 단위일 경우 이고, 만약 rds의 용량이 더 필요할 경우 가격은 두배 혹은 그 이상(!)을 지불해야 한다.
따라서 aws cloud watch를 활용한 비용 탐지 경보기를 생성하는 것도 중요하다.

아래는 실제로 aurora db를 사용하다 발생한 비용문제에 대한 블로그 글인데 도움이 많이 되어 첨부하였습니다.
https://brunch.co.kr/@cebi750/10#comment

이번의 경우 toy project이기때문에 rds 하나를 사서 주기적으로 돈을 내봤자 I/O 와 트래픽 자체가 없어 돈낭비라 생각이 들어 aurora serverless db를 활용해봤다.

rds를 만들다 보면 aurora db와 aurora serverless db 가 헷갈릴 수 있는데 serverless로 사용 하고 싶으면 aurora serverless를 사용 해야한다. serverless에는 v1과 v2로 버전이 두개가 존재한다. 현재는 v2만 사용가능하다.
v1과 v2에는 여러가지 차이점이 존재한다. v1의 경우 퍼블릭 액세스가 불가능하고 트래픽이 적은 서비스를 위해 제공되는 db라면 v2는 스케일링이 유동적으로 가능해야 하는 서비스에 적합한 db 이다.

v1의 사용 예시는 개인 블로그 혹은 토이 프로젝트와 같이 많은 사용자가 접속하지 않는 경우에 사용하고, v2는 배달 서비스와 같이 특정 시간에 사용자가 몰리는 경우에 사용할 수 있다.


Aurora Serverless DB 생성

먼저 aws의 rds에 접속하여 데이터 베이스 생성을 클릭하면 위와 같이 클릭 몇번으로 생성할 수 있다. 처음 선택 탭에 표준 생성과 손쉬운 생성 두개가 있다.
물론 표준생성으로 serverless db를 구축할 수 있으나 상당히 번거로운 것 같아 손쉬운 생성을 클릭하여 db를 만들었다.

mysql은 8.0 버전과 연동 되는 점을 참고하고, mysql 호환을 클릭한다.
인스턴스 크기는 상황에 따라 다르지만, toyproject이기때문에 가장 작은 acu를 사용 가능한 개발/테스트를 클릭하였다.
클러스터 식별자 및 마스터 정보 등은 본인이 원하는 이름으로 설정해주면 된다.

생성이 잘되면 위와 같이 클러스터 하나와 인스턴스 하나가 만들어진다.
클러스터는 1개 이상의 인스턴스를 갖게 되고 인스턴스 데이터들을 관리하는게 클러스터라고 생각하면 된다. 클러스터는 복제본을 관리하기도 하고 인스턴스들의 region(지역) 및 세팅들에도 영향을 미친다.

따라서 클러스터의 파라미터 그룹은 인스턴스의 파라미터 그룹과 설정 범위도 다르다.


파라미터 그룹 및 용량 세팅하기

파라미터 그룹은 timezone, charset과 같은 세팅을 변경할때 필요하다.
아래는 파라미터 그룹을 생성하는 것을 보여준다. 여기서 사진과 다르게 설정해야하는 부분은 파라미터 그룹 패밀리에서 aurora-mysql8.0을 선택해줘야 aurora serverless 파라미터로 설정 가능하다는 점이다.
사진과 같이 5.7을 적용하면 aurora-db의 파라미터로만 설정이 가능해진다.

유형에서는 db cluster prarameter group으로 설정해야 클러스터의 파라미터 그룹으로 지정될 수 있기 때문에 꼭 바꿔준다.

이후 생성을 하고 나면 아래의 링크와 같이 설정을 변경해준다.
default 파라미터 그룹은 절대 수정이 안되므로 새로운 parameter group을 꼭 만들어주는 것을 잊으면 안된다.
https://jintrue.tistory.com/entry/AWS-RDS-mysql-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80-%EC%83%9D%EC%84%B1-%EA%B6%8C%ED%95%9C-%EC%84%A4%EC%A0%95

설정이 완료되면 클러스터에서 다시 수정 버튼을 눌러 아래와 같이 새로 생성한 파라미터 그룹으로 변경해준다.

파라미터 그룹 수정이 끝나면, 요금 폭탄에서 벗어나기 위해 클러스터 수정 페이지에서 용량을 재설정 해준다.

이렇게 변경하고 나면 한가지 깨닫는게 있다. 최소 ACU는 0이 될 수 없다는 것이다. 무슨 말이냐면 rds가 아예 꺼지는 일은 없다는 것이다.
찾아보니 이전에는 최소 acu가 0으로 설정 가능했었다. 정확하게 어느 시점부터 안되는건진 모르겠지만 예상으로는 v2부터는 0으로 설정이 불가능해진것 같다. (v1은 올초에 eol(end of life)가 되었기에 사용할 수 없다.)
이전에 0이 었을때는 cold start가 20초가량 걸렸다고 하니 acu를 최소 용량인 0.5로 설정하면 cold start 시간은 없어질 것이다. 대신 매달 돈이 나오겠지만 ㅎ

용량은 최소 ACU 0.5로 설정하고 최대 ACU는 일단 3대로 설정 했다.
이건 필요에 따라 설정해주면 된다. 과금이 절대 안나오고 싶다면 최대를 1로 바꿔도 된다.ㅋㅋ

profile
BACKEND
post-custom-banner

0개의 댓글