AWS - RDS(VPC)

Chooooo·2024년 5월 14일
0

TIL

목록 보기
23/28

EC2

EC2는 AWS의 대표적인 클라우드 컴퓨팅 서비스 중 하나.
EC2를 사용하면 AWS의 클라우드 컴퓨터 환경에서 원하는 사양의 컴퓨터를 대여한 후 작성한 서버 코드를 올려 서버를 구동할 수 있다.

실제 컴퓨터와 동일한 환경이기 때문에 EC2 환경 내에서 DB를 구동하여 평소 개발 환경과 비슷하게 서버와 DB를 연결해서 서버를 구현할 수 있다.

그러나 하나의 EC2환경에서 서버와 DB를 같이 구동하게 되면 고사양의 EC2가 필요할 수 있으며, 서버나 DB 둘 중 하나의 서비스에서 문제가 생긴다면 동일한 EC2 환경 내에서 구동되는 모든 서비스가 동시에 다운되는 문제가 생길 수 있다.

그래서 AWS에서는 서버와 DB를 분리시키기 위해 DB전용 가상 환경 서비스를 제공하는데 그 중 대표적으로 이용하는 것이 바로 RDS이다.

RDS

RDS는 EC2처럼 클라우드 리눅스 환경에서 직접 DB를 설치하고 세팅하고 구동할 필요없이, AWS 웹에서 DB종류와 DB설정, 네트워크 설정 등을 선택만 하면 DB전용 클라우드 서버를 생성할 수 있다.

  • 또한 간편 유지 관리 기능, 자동 백업 등의 유용한 기능도 함께 제공한다.

이처럼 RDS를 이용하여 EC2와 독립적인 DB를 구축하면 동일한 환경에서 여러 서비스를 구동할 때 생기는 문제를 해결할 수 있으며, 각 서비스의 유지 관리 문제를 안정적이고 편리하게 해결할 수 있다.

VPC(Virtual Private Cloud)

VPC란 논리적으로 격리된 가상 네트워크.
기본적으로 VPC는 외부와의 통신이 허용되지 않는다.
VPC 환경 내에서 동일한 VPC에 속한 서비스들끼리만 통신이 가능하다. 즉, 위부에서 VPC 내부로의 접근이 차단되어 있으며, VPC 내부에서만 자유롭게 통신이 가능하다.

-> 독립적으로 구성한 EC2와 RDS 역시 각각의 VPC를 가지고 있는다.

그렇기 때문에 EC2와 RDS를 연결해주는 작업이 필요하다.

그 중 대표적으로 사용되는 방식은 EC2와 RDS를 같은 VPC안에 두고 EC2만 Public으로 설정하여 RDS를 위부로부터 보호하는 것.

이 방법의 장점은 RDS가 Private Subnet에 있기 때문에 외부에서 접근할 수 없어 보안이 강화된다는 것. 또한 EC2와 RDS가 같은 VPC안에 있기 때문에 네트워크 지연이 줄어들고 성능이 향상된다는 것이다.

  1. EC2와 RDS를 같은 VPC안에 생성, 이때 EC2는 Public Subnet에, RDS는 Private Subnet에 위치시킨다.
  2. EC2와 RDS의 보안 그룹을 설정한다. 이때 EC2의 보안 그룹은 인바운드 규칙으로 자신의IP 주소와 RDS의 보안 그룹을 허용하고, 아웃바운드 규칙으로 모든 트래픽을 허용한다. RDS의 보안 그룹은 인바운드 규칙으로 EC2의 보안 그룹을 허용하고, 아웃바운드 규칙으로 모든 트래픽을 허용한다.

=> EC2에서 RDS접속, 이때 RDS의 엔드포인트 주소와 포트 번호 사용

인바운드/아웃바운드 규칙 설정

인바운드 규칙 : 클라이언트 -> 서버로 접근할 수 있는 규칙
아웃바운드 규칙 : 서버 -> 외부로 나갈 수 있는 규칙

EC2가 아닌 외부 IP의 DBMS에서 접근하기

문제상황

AWS RDS의 보안그룹 수정, 퍼블릭 액세스 허용.

현재 RDS 데이터베이스 생성까지 진행 (퍼블릭 액세스 여부 : 예)

RDS 인스턴스 만들 때 가장 중요했던 것은
같은 VPC 내부의 EC2가 아닌 외부 컴퓨터(IP), 내 로컬 컴퓨터에서도 RDS 데이터베이스를 사용하고 싶다면, 반드시 퍼블릭 액세스 여부를 예로 체크해야한다. 이미 RDS 데이터베이스를 만들었더라도 퍼블릭 액세스 여부는 추후에 다시 수정할 수 있다.

데이터베이스에 부여된 보안 그룹 규칙 수정
서비스 > EC2 > 네트워크 및 보안 > 보안 그룹으로 들어가 RDS 데이터베이스에 부여된 보안 그룹 수정 후 위 내용처럼 진행하면

외부 IP에서도 RDS 참조 가능 (물론 모든 IP에 열어놔서 분명 이렇게 쓰면 안되긴 함)

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글