[AWS] S3, EC2, RDS

아임 레조·2020년 12월 15일
0

S3(Simple Storage Service)

데이터 스토리지 솔루션 혹은 서비스. 보통 바이너리 파일 혹은 중요한 데이터를 저장하기 위해서 사용한다. 거대한 하드디스크와 비교할 수 있다. 매우 간단한 서비스이기는 하지만 데이터 손실 가능성이 적고, 사용이 간략하며, 다른 서비스와 연계성이 높다는 장점이 있다.

S3의 구성

데이터의 바구니 '버킷'

'버킷'은 데이터가 저장되는 공간이다.
모든 '버킷'이 이름이 똑같다면, 구분이 힘들기 때문에 파란바구니, 빨간바구니 처럼 '고유의 이름'을 정할수있는 기능이 있다. 또한 이 안의 정보를 아무나 볼 수 없도록 '권한'을 설정할수가 있다. '버킷'은 맘대로 삭제하고 생성할수도 있는데, 주의할 점은 삭제 후 같은 버킷을 재생성하기 위해서는 매우 까다로운 과정을 거쳐야한다.
예를 들어, 기존에 사용하고 있던 빨간바구니를 버렸는데, 다시 사용하기 위해서는 마트에 가서 같은 제품을 사와야하는 번거로운 과정이 있다고 보면 된다.
따라서, '버킷'을 삭제할 때는 '버킷' 자체를 삭제하기 보다는, 내부의 데이터를 다 지우고 기존의 '버킷'을 새 '버킷'을 사용하는 것 처럼 사용하는 것이 권장된다.
AWS는 매우 큰 용량의 바구니들을 제공한다. 하나의 바구니 안에는 무한에 가까운 정보들을 넣을 수 있다.

버킷에 담기는 데이터 '객체'

바구니에 담기는 데이터는 객체안에 담긴다. "즉 키 : value 페어의 형태로 담긴다!"
매우 큰 AWS의 버킷 용량 답게, "하나의 객체안에 최대 5TB의 용량의 데이터가 저장이 가능하다.(돈을 더 내면 한 객체 안에 더더더더 많은 데이터를 저장할 수 있다!!)"

그럼 왜 객체를 사용했을까? 라고 의문을 가질 수 있다. 자바스크립트에서 객체는 주소값을 '참조'하여 사용한다. 즉, 다른 곳에서 원본을 사용하지 않고 원본의 '복사본'을 사용한다는 뜻이다. S3에서 "객체를 사용하는 것도 비슷한 이유로, 원본의 손상을 막기 위해서이다."
아무리 관리 잘한 문서들도, 사람들의 손이 닿기 시작하면 변질되는 것처럼 데이터들도 많은 접근이 있거나, 변동이 있다면 언젠가는 닳기 마련일 것이다. 하지만 복사본을 준다면, "원본의 내용을 그대로 볼 수도 있으면서 원본의 손상은 최대한으로 줄일 수 있을 것이다."
원본데이터의 생성 및 삭제만 지원하고 수정하는 기능은 지원하지 않는데, 수정하는 것과 비슷한 기능으로는 '덮어쓰기'가 있다.
"이 덮어쓰기는 원본을 다른 원본으로 바꾸는 작업이기 때문에, 빠르지는 않다고 한다. 이점 주의 할 것!"
또한 HTTP요청이나 데이터의 접근, 생성 등의 정보를 지닌 객체 또한 존재 한다고 한다. 이를 이용해 버전관리가 용이하다.

사용방법

만약 '미니언'이라는 이름의 s3 '버킷'에 '몸무게'라는 데이터를 가지고 오고싶다면 미니언.s3.amazonaws.com/몸무게 이런 식으로 버킷과 데이터 사이의 구분을 / 를 이용해 구분지어준다.
이걸 보내야하는데, s3는 https방식을 이용해 요청을 보내며, REST API를 이용한다.
따라서, '미니언'이라는 이름의 s3 '버킷'에 '몸무게'라는 데이터를 가지고 오고싶다면
https://미니언.s3.amazonaws.com/몸무게를 GET요청을 보내면 아마존에서 데이터를 보내준다.

공개하고 싶지 않은 중요한 데이터가 있는 경우

s3에서 정해놓은 다양한 '저장 클래스'를 이용하면 되는데 우리가 일반적으로 파일에도 접근 권한을 설정해 놓는 것 처럼, 저장클래스를 다르게 설정하면 일정 비용을 내고 높은 권한으로 데이터를 저장하는 것이 가능하다. 이것은 버킷단위로 설정할 수도 있고, 객체 혹은 데이터로도 설정이 가능하다.

RDS(Relational Database Service)

클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스. MySQL, Oracle, SQL Server, PostgreSQL, MariaDB, Aurora(MySQL과 호환)을 비롯한 총 6가지 데이터베이스 엔진을 지원한다.

RDS의 장점

  1. 관계형 데이터베이스
  2. 쉽고 빠른 구성
  3. 반복적인 관리작업을 대신 수행
  4. 다양한 관계형 데이터베이스 옵션 제공
  5. 쉽고 빠른 확장
  6. 손쉬운 고 가용성 구성
  7. 패치 적용 및 백업이 자동으로 이루어짐

RDS의 단점

비용

RDS와 EC2의 비슷한 스토리지를 비교할 경우 RDS가 EC2보다 약 40~68% 정도 비싸다고 한다. IDC를 운영하기 위해서는 다른 요소들이 많기 때문에 절대적으로 비싸다고 단정하기는 어렵다(서버의 감가상각, DBA, SE, NE 등 운영자 비용, 전기비용, 상면비용, 모니터링 인력 비용 등). 다만 "인프라 신경 안쓰고 개발에만 집중하고 싶다" 라고 생각할 때 "비용대비 이점이 있다" 정도로 이해하시면 된다.

서버 접속 불가 / 관리가 어렵고 불편 / RDS 인스턴스의 OS에 로그인 할 수 없다

서버(aws측의 DB가 저장되는 곳(?))에 접속이 안된다. 따라서 문제가 발생했을 시에 자세한 것을 알기 위해서는 AWS 측에 SR을 올리는 방법만 있다.

EC2처럼 정지할 수 없다. 한번 가동하면 계속 실행되어 비용을 줄이려면 인스턴스를 삭제해야 한다.

RDS가 하는 역할?

  1. 로컬 호스트 환경에서 깔아서 하던 그 DB를 클라우드 상에서 제공하는 것이 핵심이다
    S3는 파일 서비스를 클라우드화 한 것이라면, RDS는 DB를 클라우드화 한 것

  2. 영상 참고: AWS가 제공한 RDS에 대한 설명

  3. 또 중요한 기능인 <백업 & 복원>

  4. 핵심은 저장을 하든 뭘 하든 준비된 또다른 DB에 똑같은 CUD를 하고 만일 하나가 죽었을 시에(어떤 이유에서든) 스탠바이 하고 있던 쌍둥이 DB를 바로 활용할 수 있다는 것이다!

출처:
https://program-developer.tistory.com/47
https://analogcoding.tistory.com/83
https://yngmanie.space/posts/ec2ands3

profile
어쩌다보니 백엔드 개발자/ 번아웃 없이 재밌게 개발하고 싶어요

0개의 댓글