RDS를 써야 하나요? EC2에 설치하면 안되나요?



Q. RDS를 써야 하나요? EC2에 설치하면 안되나요?

A. 네! 됩니다. 하지만, 상업적 서비스를 유지한다면 고민해볼 것이 많습니다.


저는 쿠버네티스로 가는 길목에 RDS를 사용해 야 할지, 워커노드에 DB를 설치해서 써야할지 궁금했습니다. 당연히 RDS를 써야 한다고 생각했지만, 막상.. 왜..? 라는 질문을 스스로에게 던지니 고민이 많아졌습니다. 아래 같은 질문들이 생겼습니다.

  • 우선 RDS를 계속 써야할까 EC2에 워커노드를 설치해서 써야 할까?
  • 그렇다면 DB를 하나만 쓰면 될까? 아니면 서비스 별로 DB를 나눠야 할까?
  • 하나의 DB만 만들어서 쓴다면 여러 어플리케이션들이 DB를 사용할텐데, 세션이 모자르게 되면 안되니 RDS Proxy를 써줘야 하나..?



  AWS RDS

우선 AWS 뿐 아니라 GCP, Azure 등 클라우드에서 지원하는 RDB 서비스는 DB를 쉽게 제공받을수 있고, 쉽게 스케일링 할 수 있도록 도와줍니다. 인생을 편안하게 바꾸어 주었습니다. 자동으로 설치해주는 것은 물론, 디스크 프로비저닝, 버전 업데이트, 자동 보안패치, 그리고 우리의 DB를 자동으로 백업해주는 것까지 잘 지원해 줍니다. 예전에 비하면 신세계 인 것이 확실합니다!



  DB on EC2

RDS는 풀 매니지드 서비스입니다. AWS가 DB를 전부 관리해 줍니다. 그와 다르게 EC2에 있는 DB는 사용자가 모두 관리해야 합니다. 도커로 사용할테니 EBS(Elastic Block Storage)를 붙여서 퍼머넌트 스토리지로 서비스 해주어야 합니다. 그렇지 않는다면, 도커 컨테이너가 지워지면서 데이터를 모두 날릴 것입니다. 디스크 프로비저닝, 버전 업데이트, 보안패치, 자동 백업도 모두 직접해줘야 하지만, root 권한을 가질 수 있고, db 파라메터등을 입맛대로 변경해서 튜닝할 수 있다는 장점이 있습니다. 



  RDS vs DB on EC2

RDS
  • AWS가 모든 권한과 책임을 가지고 있습니다.
  • AWS에서는 Oracle, MSSQL, MySQL, PostgreSQL, MariaDB 를 지원합니다.
  • 뿐만 아니라, 자체 DB인 Aurora 도 제공합니다.
  • Read Replica를 쉽게 만들고 각 AZ에 두고 사용할 수 있습니다.
  • 마그네틱 스토리지는 3,000IOPS 까지 지원합니다.
  • 프로비전된 SSD는 최대 10,000 IOPS 까지 지원합니다.
DB on EC2
  • 완전한 권한이 AWS 사용자로 넘어옵니다. 모든 책임과 권한을 사용자가 가집니다.
  • DB를 잘 알고 있다면 RDS를 뛰어넘을 튜닝의 여지가 있습니다.
  • EC2 인스턴스의 프로비전된 SSD는 최대 8,000 IOPS를 지원합니다.
  • 여기서도 데이터 암호화를 지원합니다. EC2 -> EBS 통신간에도요!
  • 모든 설정이 자유로우니, 포트도 원하는데로, 그리고 원하면 하나의 EC2에 여러개의 DB를 설치할 수 도 있습니다.
  • 딱딱한 RDS 비용체계에 비해 유연하기 때문에 잘 설계하면 비용면에서 더 유리 할 수 있습니다.



  그래서 뭘 선택해야 할까?

이런경우 RDS

  • 난 DB 잘모른다. 디스크 프로비저닝, 버전 업데이트, 보안 패치, 자동 백업도 AWS 맡기고 싶다. 비용이 조금 더 나가는 것은 괜찮다.
  • failover 등을 위한 클러스터, 리플리카 등을 편하게 만들고 관리하고 싶다.
  • 운영/관리 인력이 없기에 코스트가 높아도 편하게 운영하고 싶다.



이런 경우 EC2

  • 난 DB에 관해 잘 알고, DB, OS 등을 내 마음대로 정하고 튜닝하고 싶다.
  • 난 DB에 관해 잘 모르지만, DB 전문가가 있으므로, 백업, 리플리카 등을 구성하는데 어려움이 없다.
  • AWS RDS에서 지원하지 않는 DB를 사용하고 싶다.
  • EC2 컴퓨테이션 파워가 허락하는 한 최대한의 퍼포먼스를 머신에서 끌어 쓸 수 있다.



 퍼포먼스..?


출처: serverguy.com

 




  비용차이

DB on EC2

  • r5.4xlarge
  • 2 TB Provisioned SSD - 3000 IOPS
  • EBS 요금 : $461.53
  • EC2 요금 : $887.54
  • 총 비용 : $1,349.21


RDS

  • db.r5.2xlarge * 2대
  • 1 TB Provisioned SSD - 3000 IOPS
  • 1 TB Backup Storage
  • EBS 요금 : $924.48
  • RDS 요금 : $1,664.40
  • 백업 스토리지 비용 : $97.27
  • 총 비용 : $2686.16


아주 단순 비교이고, 트래픽도 고려가 안되어 있지만, 이렇게 제가 단순히 비교해봤습니다. 



  쿠버네티스로 구성하려고 하는데 하나의 DB로 가야 하나?

쿠버네티스를 구성하는데 하나의 어플리케이션 마다 DB를 구성할 수도 있지만, 하나의 큰 데이터베이스에서 DB를 나누어 사용할 수도 있습니다. 근데, 하나의 DB를 보고 있다면, 지금은 어플리케이션이 5개지만, 나중에 50개가 되면, IO가 적더라도 유지해야 하는 세션이 늘어나기 때문에 DB RDS 사양을 올려줘야 합니다. 이런 경우 비용 낭비가 심각 할 수 있기때문에 RDS PROXY를 사용을 고려해볼수도 있습니다 MySQL 8 도 2021년 10월 기준으로 지원을 시작했습니다. 

RDS Proxy 비용은 1 코어당 월 $13 정도 입니다. vCPU 8개에, 1 인스턴스, 2 리드 리플리카가 있다면 총 코어는 24개 이므로 비용은 $312 정도 나오게 됩니다.





  • [[a.original_name]] ([[a.file_size | fileSizer]])
좋아요[[ postLike | likePlus ]]
공유
라이언

“Lead Python Engineer”

댓글 [[totalCommentCount]]
[[ comment.author__nick_name ]] [[ comment.datetime_updated | formatDate]] (수정됨)

[블라인드 처리된 글 입니다.]

답장
[[ sub.author__nick_name ]] [[ sub.datetime_created | formatDate ]] (수정됨)

취소
댓글을 남겨주세요.
'데브옵스' 관련 최신 포스트
[[ post.title ]]
[[ post.datetime_published_from | DateOnly ]]