3 분 소요

AWS S3

AWS S3란?

Amazon Simple Storage Service(Amazon S3)는 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지 서비스

⇒ 데이터가 어디에 있든 S3에 옮겨 데이터를 저장하고 보호하는 역할을 해주는 서비스.

S3 특징

  • 파일 서버 역할
    • 이미지, 영상 등등 파일들을 저장해야 할 때 사용하는 서비스
  • 버킷(bucket)에 여러 객체(Object)를 저장.
  • 데이터 대량 이동 및 저장 가능 서버를 직접 운영한다고 하면 저장해야 하는 파일이 늘어나고 트래픽이 증가하면 장비를 늘려야 함.
  • 데이터 엑세스 커스텀, 구조화 및 구성하도록 관리 기능 제공 추가적으로 접근 권한까지 관리할 수 있게 기능을 제공해주므로 매우 편리

장점

  • 최소 1바이트에서 최대 5TB의 데이터 저장 가능
    • 버킷 100개 많게는 1000개도 생성가능. 많거나 적어도 성능 상에 차이는 없음.
  • 저장한 만큼 비용을 내기 때문에 좋음!
  • 버저닝 기능 등으로 안전하게 파일을 보관할 수 있다.
  • 보호 수준 또한 여러 단계가 있고, 이를 설정하여 비용 또한 절감할 수 있다.

단점

  • sdk가 사용성이 좋지는 않다. (상대적임. 못 쓸 정도 아님.)
    • 그래서 이를 wrapping한 open source 들도 사용하곤 한다.
  • AWS의 여러 규제들 (링크)
    • 버킷 리전 변경 불가
    • 버킷 이름 재사용 (삭제 후 재사용 시 시간 걸리거나 사용 못할 수도..)
  • S3를 사용하는 여러 서비스 혹은 개발자가 객체를 생성 및 삭제 → 병목현상 발생 시 느려짐.
    • 요청 분산하려면 prefix를 최대한 다양하게 하여 depth를 나누는 방법.
    • user / profileImage / userId-23423423423 / file1.png
  • 용량 자체 비용 + 데이터 CRUD에도 비용
    • iCloud에 비해 비싼 금액

기능 및 활용

클라우드 스토리지 서비스

  • 이미지 및 정적 데이터 저장

데이터 저장 방식

  • 모든 객체는 특정 버킷에 포함.
  • 예를 들어 myApp-dev/user/jasper-profile.jpg 객체
    • 미국 서부(오레곤) 리전의 DOC-EXAMPLE-BUCKET 버킷에 저장되며 URL https://DOC-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/myApp-dev/user/jasper-profile.jpg를 사용
  • 이런 식으로 저장되고 링크를 사용할 수 있음

데이터 베이스 서비스

  • 대용량 데이터를 저장할 수 있음
  • 이를 기반으로 한 데이터 베이스 서비스도 존재. (Athena, Glue…)

데이터 export, import

  • 아마존 내 다른 서비스 (DMS, Cloud Watch) 에서 데이터를 export 할 경우 S3 사용
  • 다른 클라우드 서비스 같은 곳에 저장되어 있는 데이터들을 import할 때도 마찬가지 s3 이용 가능

웹 서비스 호스팅

  • Cloudfront와 같이 사용하여 서비스 호스팅도 가능
    • Cloudfront는 CDN 서비스

      aws는 275개 이상 전 세계에 분포된 상호 접속 위치(POP)를 통해 데이터를 전송

  • S3에 올라간 정적 콘텐츠들을 Cloudfront가 사용해서 delivery함.
    • 사용자가 CloudFront에서 전송하는 콘텐츠를 요청할 경우 캐시 사본이 있으면 CloudFront가 빠르게(낮은 지연 시간) 응답하여 해당 사본을 사용자에게 전송합니다.
    • 요청한 파일이 아직 캐싱되어 있지 않으면 CloudFront가 예를 들어 콘텐츠가 저장된 S3 버킷 같은 오리진 서버에서 파일을 가져옵니다.
      이후부터는 동일한 콘텐츠를 로컬에서 요청하더라도 가까운 곳에 캐싱되어 있기 때문에 서비스를 즉시 제공할 수 있습니다.
  • 버킷 생성 시 (example.com)과 같은 호스팅하고 싶은 주소 입력

비용 절감

  • 사용 빈도 및 사례에 맞춰 다른 스토리지 클래스(Storage Class) 제공
    • S3 Standard - 모든 데이터 유형에 적합한 범용 스토리지로, 대개 자주 액세스하는 데이터에 사용됨
    • S3 Standard - Infrequent Access** - 라이브인 상태가 오래되었지만 밀리초 단위 액세스 성능이 요구되는 자주 액세스하지 않는 데이터용
    • S3 Glacier Flexible Retrieval(이전의 S3 Glacier)*** - 검색 옵션이 1분부터 12시간까지인 장기 백업 및 아카이브용
    • S3 Glacier Deep Archive*** - 일년에 한두 번 액세스하고 12시간 이내에 복원할 수 있는 장기 데이터 아카이브용
    • 등등 사용 빈도에 따라 가격도 달라 선택 가능

Versioning을 통한 안정성

이미지

이미지

  • S3 버킷은 동일한 이름의 객체를 put할 때 덮어쓰지 않음.
  • 기존 객체는 남아 있고 그 위에 새 버전을 생성하여 최신 버전 객체를 버킷에 추가
  • 삭제도 객체가 완전히 없어지는 것이 아닌 그 객체에 delete marker가 최신 버전 객체가 됨.
    (삭제된 리소스 접근 시 404 Not Found)
  • 이렇게 해서 사용자 실수라도 제거하거나 덮어써도 버저닝이 다 되어 있어서 복구하기 쉬움.

참고 링크

https://gnidoc.tistory.com/m/entry/AWS-S3-장단점-분석

s3-userguide

s3-faqs


댓글남기기