본문 바로가기
Random

[AWS] s3와 RDS의 차이점

by SeanK 2022. 1. 6.

 

마지막 배포 과정을 배우면서 드는 한 가지 의문.

 

RDS는 왜 필요하지?

 

s3가 가상 컴퓨터면 가상 컴퓨터 안에 mysql을 그냥 설치하면 되는 거 아닌가?

 

오늘은 이 둘의 차이점에 대해 알아보자. 

 

 

원본은 아래에 있으니 참고하시길 바란다.

https://hevodata.com/learn/s3-vs-rds/

 

Amazon S3 vs RDS: 5 Critical Differences - Learn | Hevo

In this article, you will learn about Amazon S3 and Amazon RDS and comparing Amazon S3 vs RDS based on 5 critical parameters.

hevodata.com

 

AWS RDS와 S3 이해하기

 

RDS

 

최근의 프로그램들은 하나의 저장 메커니즘으로는 해결하기엔 너무나도 많은 저장 요건이 있다. 그중 하나로는 접근과 데이터의 가공이 쉽도록 정보의 저장이 특정한 스키마에 의해 저장되도록 하는 것이다. 보통은 이러한 경우는 관계형 데이터베이스로 처리한다. 

 

AWS 관계형 데이터베이스 서비스는 관계형 데이터베이스 요구조건에 부합하도록 아마존에서 pay-as-you-go 모델로 만든 완전 관리 - 관계형 데이터베이스이다. RDS는 MySQL, MariaDB, PostgreSQL, SQLServer 등과 같은 인기 있는 데이터베이스 엔진을 제공한다. 사용자들은 예산과 필요한 퍼포먼스에 따라 인스턴스 타입을 결정할 수 있다. 아마존은 보안 계층 설정과 데이터 중복 설정 등 사용 케이스에 따라 옵션을 설정할 수 있도록 했다. 

 

S3

 

프로그램 제공자 입장에서 필요한 또 다른 저장 요건으로는 가상 공간에 필요한 어떤 객체 포맷을 저장할 수 있는 스키마를 사용하지 않는 확장성 있는 저장소이다. 온-프레미스 세상에선, 이러한 문제는 Hadoop과 같이 수평적으로 확장할 수 있는 분배 파일 시스템으로 해결했다. AWS의 심플 스토리지 서비스는 그러한 확장성 있는 파일 시스템 스토리지를 대체할 수 있는 완전 관리-객체 저장 서비스이다. 

 

S3는 사용자들이 이용한 만큼만 비용을 지불하고 데이터 크기가 증가함에 따라 스토리지를 늘리는데 필요한 모든 복잡한 과정을 없앴다. S3는 극도로 고도화된 접근 컨트롤 설정이 가능하고 필요 데이터에 대한 원할한 공개 접근도 가능하다. 

 

S3 vs RDS

 

Relational vs Object Storage

 

관계형 데이터베이스 정보는 평생 변형되지 않을 것으로 예상되는 견고한 스키마를 통해 저장되는데, 이러한 특성은 관계형 데이터베이스 데이터 저장의 한계점으로 작용하기도 한다. 이 특성의 장점은 SQL문을 활용하여 정보를 반환하고 합칠 수 있는 가능성을 열어준다. 또한 어떤 데이터가 자주 접근될 지에 따라 정보에 인덱스를 설정할 수도 있다.

 

반면에, 객체 저장소는 가상으로 텍스트 문서부터 이미지, 오디오 파일, 비디오 파일, 혹은 반-구조 데이터(JSON 혹은 XML) 파일과 같이 모든 범위의 데이터를 저장 할 수 있다. 가상으로 모든 데이터를 저장할 수 있는 이유는 스토리지 계층에서 정보를 처리하는 절충 기능이 있기 때문이다. 만약 데이터 처리가 필요하다면, 저장된 정보를 이해할 수 있는 별도의 실행 엔진이 필요하다. 

 

Support for Transactions

 

이 두 저장 시스템의 가장 큰 차이점은 연속된 일을 처리하는데 보장된 일관성에 있다. S3는 매우 일관적인 작동을 보여주지만 이는 단일 스토리지 작업에만 국한된다.

 

반면에, RDS는 연속된 작업을 지원하면서도 일관성을 유지한다. 거기에 무언가가 잘못 되었을 경우 롤백 기능까지 지원한다. 만약 S3에서 동일한 작업을 하려면 AWS 람다 함수를 이용해 별도로 트렌젝션을 관장하는 레이어를 만들어야 할 것이다. 

 

Data Processing

 

RDS는 데이터 처리기능이 빌트인으로 장착되어 있다. 다른 말로, RDS의 경우 실행 엔진이 스토리지 레이어와 단단히 묶여있다. 이는 실행 엔진이 복잡한 windowing 및 집계 기능의 효율을 높일 수 있음을 의미한다. 

 

S3는 반면에 실행 엔진이 없는 스토리지 레이어이다. AWS는 S3에서 동작할 수 있는 다양한 완전관리 실행 엔진을 제공하지만, 데이터 자체가 특정한 포맷이나 타입에 규정되어 있지 않다 보니 데이터 처리를 위해서는 우선 특정한 포맷으로 데이터를 파싱 하는 추가적으로 복잡한 과정이 필요하다. AWS Athena는 메타데이터를 우선적으로 해석하고 나서 S3의 저장된 데이터에서 SQL을 작동시킬 수 있다. 다른 옵션으로, RedShift spectrum은 S3 상에서 테이블을 정의하고 쿼리를 할 수 있다. 

 

Pricing

 

RDS에 비해 S3는 값이 더 저렴하다. 하지만 주의해야 할 것은 S3는 단지 스토리지 계층이다. 만약 데이터 처리 등을 해야 한다면 다른 서비스를 구매해야 한다. 

 

S3는 저장량과 네트워크량으로 나뉘어 있다. 1기가 당 0.025 달러로 시작해서 월 50테라바이트까지 사용하면 사용할수록 저렴해진다. 데이터 추출과 삽입은 1000 요청당 0.005 달러다. S3의 데이터 전송은 처음 1달간은 무료다. 이후로는 1기가 당 0.09 달러다.

 

RDS의 가격은 필요한 데이터베이스 엔진에 따라 다른다. 아마존의 기본적인 데이터베이스 엔진 AWS Aurora는 데이터 저장에 1기가당 0.1달러를 부과하고 100만 리퀘스트당 0.2달러를 부과한다. 다른 스토리지 엔진은 배포하는 데 사용되는 인스턴스 타입에 따라 다른다. MySql 인스턴스 중 가장 저렴한 타입은 1시간당 0.017 달러이고 1개월에 1기가당 0.115 달러의 추가 비용이 발생한다. 

 

Use Cases

 

자 위와 같이 주요 장단점을 살펴 봤으니 보통 어떤 용도로 사용하는지 비교해 보겠다. RDS는 데이터가 내재된 구조가 있거나 상시 데이터 삽입, 수정 혹은 처리가 필요할 때 유용하다. 이는 사용자와 상호작용하는 애플리케이션에서 사용자의 데이터를 저장하는데 적합하다. 연속된 데이터 처리를 할 때에도 좋다. 경우에 따라서는, 데이터가 기본적으로 관계적일 때 데이터 웨어하우스로도 사용된다.

 

S3는 데이터의 다양성이 높고 들어오는 데이터의 유형을 예측하기 어려울 때 유용하다. 데이터를 처리하기전에 가상으로 쌓아두는 스테이징 공간으로 활용할 수도 있다. 보통은 이미지, 오디오, 비디오를 저장하는 데에 사용하고 S3 객체에 퍼플릭 주소를 설정할 수 있으니 콘텐츠를 제공하는 데 사용한다.

 

또 다른 사용법으로는 semi-structured 데이터(JSON, XML) 저장이다. 실행 엔진이 나중에 이 데이터를 정의하고 처리할 수 있다. 이외에 RDS 인스턴트를 임포트하는데 저장하는 용도로도 사용하는데 이는 데이터베이스 이전에 많이 사용된다. 

 

 

 

 

'Random' 카테고리의 다른 글

[Docker] 우분투/Linux Mint Docker 설치 에러  (0) 2022.01.31
드디어 모든 섹션이 끝났다! Section3 회고 (SEB 35)  (0) 2022.01.17
Cookie와 그 특성들  (0) 2021.12.29
Google Dinosaur 게임 해킹하기  (0) 2021.12.26
Pure Function  (0) 2021.12.07