AWS S3 란?

박영준·2023년 8월 21일
0

CS

목록 보기
7/16

AWS S3 사용 이유와 사용 경험에 대한 것은 개발자 면접에서 자주 나오는 질문 중의 하나!


아래에 AWS S3 를 이용한 이미지 업로드 과정을 정리해두었다.


1. 정의

  • "Simple Storage Service"

  • AWS(Amazon Web Service)에서 제공하는 인터넷(온라인) 스토리지 서비스

    • "온라인" : 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문

2. 구조

S3 에는 'Object'와 'Bucket' 라는 단위가 있다.
S3 는 Bucket 이라는 컨테이너를 놓을 지역(region)을 선택하고, 해당 컨테이너 내부에 Object 라는 형태로 데이터를 저장한다.

객체(Object)

  • 데이터와 메타데이터를 구성하고 있는 저장 단위

    • 객체의 최대 크기는 5TB
    • 저장할 수 있는 수에 제한 X
    • default 로 private
  • 객체를 그룹화하는 디렉터리를 생성 가능

    • 디렉터리를 계층화해서 객체를 저장 가능
  • 객체마다 각각의 접근 권한 설정 가능

  • AWS는 S3에 저장된 데이터 하나 하나를 객체라고 명명

    • 하나 하나의 파일이라고 생각하면 된다.

버킷(Bucket)

  • 이러한 객체(Object)를 저장하고 관리하는 역할

  • Bucket을 생성하면 Owner 권한을 부여받게 되어서 Bucket 단위로 여러 가지 기능들을 제어할 수 있다.

    • 버킷은 여러 개 만들수 있음 (한 계정 당 최대 100개의 버킷 사용 가능)
    • 버킷 단위로 접근 제한을 설정 가능
    • 생성하면 default 로 private
  • 버킷 안에 다른 버킷을 둘 수 없다.

  • 버킷 소유권은 이전할 수 없다.

  • 버킷 주소는 https://s3-리전이름.amazonaws.com/버킷이름

  • 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다.

  • 버킷에 포함된 모든 객체에 대해서 일괄적으로 인증과 접속 제한을 걸 수 있다.

  • 버킷 단위로 지역(region)을 지정 할 수 있다.

3. 장점

1) 장비 증설의 대행

  • 일반적인 파일 서버는 트래픽이 증가함에 따라서 장비를 증설하는 작업을 해야 한다.

    • 그런데, S3는 장비를 증설하지 않고도 이런 일을 대행해준다.
      (즉, 많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다)
  • S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있다. 용량을 추가하거나 성능을 높이는 작업이 필요없다.

2) 콘텐츠 저장 및 배포

  • 사용자가 전송한 파일을 S3 에 저장하고, 이렇게 저장된 파일을 다시 사용자에게 보여주거나 가공할 수 있다.

3) 빅데이터 분석

  • 빅데이터를 분석하기 위해서는 거대한 데이터를 안전하게 저장해야하는데, 이때 데이터 저장소로써 사용될 수 있다.

4) 높은 내구도 (낮은 유실 가능성)

  • 예측 할 수 없는 재해가 일어났을 때 여러 저장소에 분산 저장되므로, 저장소가 한꺼번에 파괴되지 않는 이상 복구가 빨라서 내구도가 높다.

    • 데이터를 여러 시설에서 중복으로 저장해둔다.
    • 데이터의 손실이 발생할 경우 자동 복원한다.
  • 버전관리

    • S3에 저장된 객체들의 변화를 저장
    • 예시 : 객체 A 를 사용자가 삭제/변경해도, 각각의 변화를 모두 기록하기 때문에 실수를 만회할 수 있다.

5) 뛰어난 보안성

  • SSL(Secure Sockets Layer)을 통하여 데이터 전송과 암호화를 하기 때문에, 해킹 위험 小

    • S3에 데이터를 저장할 때는 데이터를 자동으로 암호화
    • S3에서 객체를 생성하거나 속성을 변경할 때 암호화 옵션을 지정하면, 자동 적용된다.
  • 파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.

6) 저렴한 사용 비용

  • EC2 와 EBS 로 구축하는 것보다 훨씬 저렴하다. (이미지, 영상 등... 저장 시)

    • 일반적으로 : 서버를 운영할 경우, 인스턴스를 구매해야하고, 이에 따른 비용이 들어간다.
    • S3 의 경우 : 사용하는 만큼만 내거나 파일을 액세스 빈도에 따라 저장 방식을 다르게 설정함으로 비용이 다르게 적용될 수도 있다.
  • RSS (Reduced Redundancy Storage)

    • 일반 S3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식 (그래도 물리적인 하드 디스크 대비 400배 가량 안전하다는 아마존의 주장)
    • 그러나 가력이 저렴하기 때문에, 복원이 가능한 데이터(섬네일 이미지 등...)을 저장하는데 적합
    • 이는 정보의 중요도에 따라서 보호 수준을 차등하는 용도로 사용된다.

7) 빠른 속도

  • 각 지역에 맞게 선택

    • 지역을 선택해서 빠르게 업/다운로드가 가능
  • 업/다운로드 시, 지역시간 최소화를 위한 멀티 파트 업로드를 지원

  • 동적 웹페이지와 정적 웹페이지가 섞여있을 때

    • 동적 웹페이지만 EC2에서 서비스하고, 정적 웹페이지는 S3를 이용하면 성능도 높이고 비용도 절감.

8. 이벤트 알림 전송

  • S3로 파일이 업로드 되었을 때, 그 사실을 다른 서비스에게 알려서 서비스를 트리거할 수 있다.
    • 즉, S3와 연계된 서비스들을 사용하는데 상당히 유용하다.

9. 높은 객체 가용성

  • 파일이 서비스 되는 기간이 년중 99.999%
    • 따라서, 서비스가 중단될 걱정없이 S3를 사용할 수 있다.

10. HTTP 프로토콜

  • 별도의 클라이언트 설치나 ActiveX를 통하지 않고, HTTP 프로토콜로 파일 업로드/다운로드 처리 가능

참고: 초보자도 이해할 수 있는 S3(Simple Storage Service)
참고: Amazon S3이란
참고: [AWS] S3 소개
참고: AWS S3란 무엇이고 왜 사용하는 것일까?(Azure, GCP 비교 포함)

profile
개발자로 거듭나기!

0개의 댓글