내가 헷갈려서 쓰는 EC2와 RDS의 관계
위 사진은 서울 어느 곳의 서버실의 풍경을 그림으로 그렸고 그 서버실에 잭슨님 네이마르님 상훈님이 접속해서
데이터를 조회하거나 저장하는 행위를 모습을 보여주고 있다.
근데 만약 직원이 상주할 돈도 부족하고 서버실을 구성할 돈도 없고 심지어 서버 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를 사용한다.