팀 프로젝트를 진행하다보면 로컬 DB나 프레임워크 내장 DB만으로 협업을 하기 어려운 경우가 있다.
개발 초기 단계에서는 json파일을 만들어 fake_db를 만들어서 사용해도 좋지만, json 파일로 회원 정보부터 여러 데이터들을 관리하기에는 버겁다.

따라서 많은 사람들이 외부 DB 툴을 사용하며, 그 종류에는 MySQL부터 PostgreSQL, MariaDB 등 정말 다양하다. 본인의 프로젝트에 맞고 선호하는 DB를 사용하면 된다. 필자는 32bit 가상환경에서 작업하고 있기 때문에, 32bit를 지원하지 않는 PostgreSQL로 시도하다가 MySQL로 옮겨보았다.
🚀 0. 왜 MySQL만 사용하지 않고 AWS RDS를 설정할까?
1. 서버 직접 관리 vs. AWS RDS 자동 관리
일반적으로 MySQL을 로컬(Local)이나 자체 서버(VPS)에 설치해서 사용할 수도 있지만, AWS RDS(Amazon Relational Database Service)를 사용하면 보다 안정적이고 효율적으로 DB를 운영할 수 있다.
<로컬> <MySQL-AWS RDS>
| 설치 & 관리 | 직접 설치 및 설정 필요 | AWS에서 자동 관리 |
| 백업 & 복구 | 수동 설정 필요 | 자동 백업 & 복구 |
| 보안 | 직접 방화벽 및 접근 관리 | IAM, VPC, Security Group 등 제공 |
| 확장성 | 서버 스펙 변경이 어려움 | 클릭 한 번으로 성능 확장 가능 |
| 고가용성 | 직접 서버 유지 필요 | Multi-AZ(다중 가용 영역) 지원 |
2. RDS를 사용하면 관리가 편해진다! (운영 부담 감소)
- 자동 백업 & 스냅샷: 데이터베이스를 정기적으로 백업하여 데이터 손실 방지
- 자동 장애 복구: RDS Multi-AZ 설정으로 장애 발생 시 자동으로 복구
- 성능 모니터링: AWS CloudWatch를 통해 DB 상태를 실시간으로 확인 가능
- 보안 강화: AWS IAM, 보안 그룹(Security Groups), VPC를 통해 접근 통제 가능
3. 트래픽 증가 시 확장이 편리하다 (스케일링)
만약 웹 서비스가 커져서 사용자가 증가하면, 기존 MySQL 서버는 CPU, 메모리 부족으로 인해 성능이 저하될 수 있다.
✅ AWS RDS는 클릭 몇 번으로 쉽게 확장 가능
- **Read Replica(읽기 복제본)**를 추가하여 읽기 부하 분산
- 더 높은 스펙의 DB 인스턴스로 업그레이드
- Auto Scaling을 사용하여 트래픽 증가에 대응
4. 안전한 원격 접속 & 협업
- 로컬 MySQL을 사용하면 로컬 컴퓨터에서만 접속 가능하지만,
- AWS RDS를 사용하면 어디서든 접근 가능하여 개발자 및 팀원들과 협업이 용이!
🚀 1. AWS RDS 설정
-AWS IAM 계정 로그인->RDS 접속->데이터베이스 생성

-MySQL 선택

-프리티어 사용 중이라면, 템플릿에서 프리티어 선택

-DB 인스턴스 식별자, 로그인 ID, 마스터 암호 설정 ( 잊지 않도록 꼭 본인이 아는 곳에 저장해둘 것 !! )

-프리티어 사용 중이라면, 추가 스토리지 구성 -> 스토리지 자동 조정 활성화를 끄기

-퍼블릭 엑세스 허용

-추가 구성-> 데이터베이스 포트번호가 3306인 것을 확인 (기본 값)

-초기 데이터 베이스 이름 생성

-백업 설정은 7일 정도로 설정

-데이터베이스 생성

파라미터 그룹 생성
https://velog.io/@cyseok123/AWS-RDS-MySQL-%EC%97%B0%EA%B2%B0-2
[AWS] RDS MySQL 연결-(2)
RDS 파라미터 그룹 설정
velog.io
위 링크에서 생성한 DB에 대한 파라미터 그룹 생성을 진행하면 여러가지 DB관리를 수월하게 할 수 있다.
🚀 2. Django 프로젝트와 연결
pip install pymysql
settings.py
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # engine: mysql
'NAME' : '자신의 DB Name', # DB Name
'USER' : '자신의 DB user명', # DB User
'PASSWORD' : '자신의 DB Password', # Password
'HOST': '자신의 DB 엔드포인트', # 생성한 데이터베이스 엔드포인트
'PORT': '3306', # 데이터베이스 포트
'OPTIONS':{
'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
}
}
}
NAME : 초기 데이터 베이스 이름
USER : 처음 입력되어 있던 User명
Passowrd : 처음에 입력했던 비밀번호
HOST : DB 엔드포인트 (RDS->대시보드->연결 및 보안->엔드포인트 확인)
python manage.py migrate
python manage.py runserver
⚠️에러가 발생한다면?
-생성한 DB의 Port를 열어주지 않아 발생하는 문제일 경우
RDS->대시보드->연결 및 보안 -> 보안 그룹

보안 그룹 ID 클릭

인바운드 규칙 편집 클릭

규칙 추가하여 IPv6와 IPv4 선택, 포트 범위 3306 입력
설정 ok 해주면 오류 해결!
🚀 3. MySQL Workbench에서 연결 후 작업
MySQL Workbench 접속 ( 없으면 설치 )

Home에서 Connection 추가 (+버튼)

Connection Name : 본인이 원하는 DB connection 명 설정
Hostname : 위에서 확인했던 DB 엔드포인트 입력
username : 위에서 확인했던 DB User name 입력
Password : Store in Valut... ->DB 비밀번호 입력

Test Connection 이후 Succesfully가 뜨면 성공 -> OK
이제 Workbench에서 편하게 작업하면 됨!!!