배경
AWS에 신규 계정을 생성한지 1달 정도 밖에 안됐는데, 지난 달에 4만원 가량의 요금이 나왔다. 그래서 지난 달에 백업 설정이 되어있어서 해제를 했었다. 그런데 이번달에 절반도 지나가지 않았는데, 예상 청구 금액이 12600원인 것을 보면, 백업 설정 문제가 아니였다. AWS Billing에서 청구 상세 내역을 확인해보니 다음과 같았다.
Amazon Relational Database Service Provisioned Storage
$0.131 per GB-month of provisioned gp2 storage running PostgreSQL ($ 8.15)
원인
의심가는 부분을 찾다가 보니, 스토리지 - 할당된 스토리지 문제였다.
AWS RDS의 해당 인스턴스 (PostgreSQL)를 클릭한 후에 [수정] 버튼을 눌러 정보를 확인해보니, 스토리지 - 할당된 스토리지에 200Gib의 용량이 할당되어 있었다. 처음 생성할 때, 기본 값인 200Gib를 두고 생성을 했었다.
(요금이 나오는 게 부담스러우면 AWS RDS 처음 생성할 때, 200Gib로 되어있으면 20Gib로 수정하자)
프리티어로 요금이 청구가 되지 않으려면 20Gib로 수정했어야 했는데, 처음에 200Gib로 생성했기 때문에 최솟값이 200Gib로 설정되어서 용량을 줄일 수 없었다.
해결
1. AWS RDS 새로 인스턴스를 생성한다. (20Gib)
기본값이 200Gib로 되어있으므로, 요금 청구되지 않게 하기 위해 수동으로 20Gib로 줄여서 생성한다.
2. Node.js 서버의 데이터베이스 정보를 저장하는 .env에 Host, password, Database URL을 새로 생성한 데이터베이스 정보로 수정하고, Prisma ORM 패키지 기능인 데이터베이스 Migration 기능을 사용한다.
npx prisma migrate dev --name init
3. 데이터베이스 커넥션 툴인 DBeaver에서 이전 데이터베이스의 모든 테이블 데이터를 새 데이터베이스로 이동시킨다. (Data Transfer 기능)
4. 사용하지 않게 된 AWS RDS 인스턴스를(200Gib) 삭제한다.
5. 새로운 데이터베이스에서 학교 정보를 가져오는 서버 API 호출 시 성공적으로 응답한 것을 확인할 수 있다. (Migration 성공)
느낀점
1. Prisma ORM의 migration 기능은 명령어 한 줄로 새 테이터베이스에 테이블을 생성해줘서 참 편한 것 같다.
이것을 사용하지 않았으면, 7개 정도 되는 테이블들을 CREATE TABLE 쿼리를 작성해서 생성해야 해서 불편했을 것이다.
2. AWS 서비스를 사용하기 전에 Pricing 정책에 대해 숙지하고 사용해야 겠다.
'개발 > AWS' 카테고리의 다른 글
AWS EC2 인스턴스 지역 변경하기 (AMI 이미지 사용하기), Amazon Machine Image (0) | 2023.10.04 |
---|---|
EC2와 Docker 환경에서 SWAP Memory를 활용한 NestJS 어플리케이션의 'JavaScript heap out of memory' 문제 해결 (0) | 2023.10.03 |
AWS EC2, Route 53과 가비아를 활용한 NestJS 서비스 SSL 인증서 적용 방법 (0) | 2023.10.03 |
NestJs에서 AWS S3 연동 시 발생하는 'CredentialsProviderError' 오류 해결하기 (2) | 2023.10.01 |
AWS S3에서 'AccessControlListNotSupported' 오류 해결하기 (0) | 2023.10.01 |