본문 바로가기
코딩 부트캠프

위클리페이퍼 - AWS RDS 서비스 사용하기 vs EC2에 직접 DB 설치하기

by 큣큣 2025. 7. 5.

 

🇶 AWS RDS를 활용하는 주요 이점과 EC2에 직접 데이터베이스를 설치하여 운영하는 것과 비교했을 때의 차별점에 대해 설명해주세요. 그리고 RDS를 사용하는 것이 적합하지 않을 수 있는 상황도 함께 언급해주세요.

 

AWS RDS 서비스

AWS에서 제공하는 RDS 를 이용하면, 서버를 설치하거나 인프라를 조작할 필요없이 딱 내가 원하는 데이터베이스 타입을 선택해서 바로 DB를 셋업할수있다. 특히 백업, 모니터링, 장애 복구, 자동화 등이 자동으로 처리되기 때문에 개발자가 인프라 운영보다 서비스 로직에 집중할수있다. 

RDS를 사용하는 것이 적합하지 않을 수 있는 상황

- RDS는 상대적으로 비용이 높아서 비용이 신경쓰인다면 EC2에서 직접 설치하는것이 유리하다. 

- RDS는 DB 레벨부터 정의하기 때문에 커널 레벨(OS 레벨)의 설정이 필요하다면 RDS는 설정이 불가능하다. 

- RDS는 aws에서 정해놓은 몇몇 확장기능만 쓸수있기때문에, 그 이외의 모듈을 사용할수없다. 

ex)확장의 설정 파일(postgresql.conf)변경 불가 

 

AWS EC2에 직접 DB 설치

AWS에서 서버를 빌려, 그곳에 직접 DB를 설치하면, 자유도가 높은대신 개발자가 직접 설정해야할것들이 몇가지 존재한다.

DB 설치 및 초기 설정(원하는 버전 DB 설치, 설정파일(postgresql.conf) 변경 가능), EC2의 보안 그룹에서 DB포트 직접 설정 , DB 계정 및 권한 설정, 백업/복구 기능, 모니터링 등등을 개발자가 다 수동을 설정하면 된다. 

 

AWS RDS vs EC2 DB 직접 설치

운영 관리 자동화 (백업, 패치 등) 수동 설정 필요
고가용성 기본 제공 (멀티 AZ 등) 직접 구성해야 함
보안 IAM + 보안 그룹 + 암호화 보안 설정 직접 구성
비용 상대적으로 더 비쌀 수 있음 스펙 조절로 더 저렴할 수 있음
커스터마이징 제한적 (루트 접근 불가 등) 완전한 제어 가능
학습 난이도 쉬움 어렵고 유지 보수 부담 큼

 

+RDS에서 DB 접근하는 방법

AWS RDS 에서 DB를 생성할때, 외부에서 누구나 접근하게 하면 안되므로, public access 접근을 제한해야한다.  

그렇게 되면 개발자가 DB에 접근할 수있는 방법은 총 2가지가 있다. 

 

 - 보안그룹에서 개발자의 IP만 허용하는 방법

 - SSH 터널링을 사용해, 우회하여 DB에 접근하는 방법

 

첫번째 방법인 '보안그룹에서 개발자의 IP만 허용하는 방법'은 수동으로 조작해야하고, 몇십명의 개발자가 있는 팀이라면 현실적으로 불가능하다. 

그래서 보통 두번째 방법인 'SSH 터널링을 사용해, 우회하여 DB에 접근하는 방법'을 사용한다. 이 방법은 DB 인스턴스에 접근할 수 있는 DB 접속용 서버를 하나 만들고, 그 서버를 SSH(22번포트+개인 pem키)를 통해 한번 우회해서 DB에 접근하는것이다.

SSH 터널링을 설정할때, 나의 로컬 포트와 SSH의 포트를 매핑할수있다.  그래서 포트를 설정해놓으면 내가 만약 localhost:5432 포트로 접속한다고 해도,  AWS에 떠있는 RDS 에 postgres@xxxxxxxxxxx.ap-northeast-2.rds.amazonaws.com:5432로 떠있는 DB로 접속이 가능하다. 

 

ssh -i key.pem -L 5432:<RDS-ENDPOINT>:5432 ec2-user@<EC2_PUBLIC_IP>

 

위와 같은 명령어로 SSH 터널을 열수있는데, 

`ec2-user@<EC2_PUBLIC_IP>` : DB 접속용 서버(이 서버만 DB에 접근가능)

`key.pem` : DB 접속용 서버에 접근하기 위해 필요한 키

`-L 5432:<RDS-ENDPOINT>:5432` : 로컬 5432 포트로 들어오는 요청을 SSH로 접속한 DB 접속용 서버 내부에서 `<RDS-ENDPOINT>:5432` 로 forward 하도록 설정