web/JAVA & SpringBoot

내가 헷갈려서 쓰는 EC2와 RDS의 관계

3hoon 2023. 1. 6. 01:24

위 사진은 서울 어느 곳의 서버실의 풍경을 그림으로 그렸고 그 서버실에 잭슨님 네이마르님 상훈님이 접속해서

데이터를 조회하거나 저장하는 행위를 모습을 보여주고 있다.

근데 만약 직원이 상주할 돈도 부족하고 서버실을 구성할 돈도 없고 심지어 서버 PC를 살 수도 없는 상황이라면

데이터베이스를 구축을 전혀 할 수 없을까?

 

결론부터 말하자면 아니다 할 수 있다.

 

AWS에서 제공하는 EC2와 RDS를 활용한다면 가능하다.

 

일단 RDS는 AWS에서 제공하는 관계형 DB의 한종류인데 쉽게 예를 들면 mysql과 같은 RDBMS 즉 관계형 데이터베이스와

같은 종류인데 하나 다른 점이 AWS에서 제공하는 DB라는 것이다.

RDS와 mysql은 같은 기능을 하는 데이터베이스다.

 

이 RDS를 실행시키기 위해서는 우리가 PC에 Mysql을 깔듯이 RDS도 깔아줄 PC가 필요한데 

EC2가 그 역할을 한다.

 

 

왼쪽은 우리가 우리 PC에 Mysql을 깔면서 구현했었던 기존의 방식이라면은

오른쪽은 AWS에서 판매하고 있는 가상의 PC EC2를 구입하고 

mysql을 깔듯이 AWS에서 제공하는 RDS를 사용할 수 있도록 설정했다.

 

즉 우리가 용산에 가서 데스크탑을 사듯이 AWS에 가서 가상의 PC EC2를 구입했고

데스크탑에 mysql을 깔아서 실행할수 있도록 하듯이 EC2에도 RDS를 연결해줬다.

 

근데 왜 EC2에 mysql이 아니라 RDS인가

일단 EC2에 mysql을 깔 수도 있다. 하지만 그러진 않는다.

이유는 EC2의 용량에 있다.

AWS에서 무료로 제공하는 EC2를 구입했다면은 용량이 2GB정도인데

여기에 mysql을 깐다면은 최대 용량이 2GB인 DB가 완성되는데 누가 쓸 수 있겠는가 끔찍하다.

그래서 이 문제를 RDS가 해결해준다.

그리고 이 RDS를 실행시킬 가상의 컴퓨터가 필요한데 그것이 EC2이다.

 

하나의 RDS에 여러개의 EC2를 연결할 수도 있다.

1000명의 RDS 이용자가 몰렸다고 할때 EC2가 하나뿐이라면 부하가 걸릴 수 있다.

그럴 경우 EC2를 두개를 구성해서 이용자가 몰리는 현상을 대비할 수 있다.

1000명의 RDS 이용자는 과연 1번 2번에 골고루 나눠서 접속할까?

이것도 결론부터 말하면 아니다.

그래서 이러한 현상을 방지하기 위해서 Application Load Balancer를 사용한다.