코딩공작소

생활코딩 - 아마존 웹 서비스(2) S3 본문

어플리케이션개발/AWS

생활코딩 - 아마존 웹 서비스(2) S3

안잡아모찌 2024. 5. 7. 22:57

S3 : Simple Storage Service

중요한 파일의 경우 내구성이 좋도록(리전을 N개)의 위치에 저장할 수 있다. 즉, 안전하게 파일을 보관하는 저장소이다.

 

 

버킷

버킷의 이름과 리전을 정하여 생성할 수 있다.
퍼블릭 액세스 여부도 설정할 수 있으며, 버전 관리도 할 수 있다.

버킷을 생성하고, 수정을 할 수 있으며 관리, 권한, 속성, 객체등을 수정할 수 있다.

 

 

폴더

버킷안에 폴더를 생성할 수 있다. 폴더도 수정, 삭제를 할 수 있다.

 

객체

실제 데이터를 담는 그릇인 객체를 생성할 수 있다.
폴더안에 생성될 수 있으며, 객체들에 대한 권한과 속성을 수정할 수 있다.

특히, 속성의 스토리지 클래스에서는 가격, 속도, 안정성에 따라 비용이 달라질 수 있으며 이를 설정 할 수 있다.

 

이 객체들에 대해서 객체 URL이 생성되어 링크로 다른 사람에게 객체를 공유할 수 있다. 또한, 권한에서 ACL(액세스 제어 목록) 리스트에 위쪽에 위치한 객체 소유자를 통해 권한을 설정할 수 있다.

 

 

 


스토리지 클래스

파일의 속성에 있는 스토리지 클래스에 대해 알아보자

  • 지능적 계층화 : 파일에 대한 접근을 예측할 수 없거나 접근이 변화하는 경우에 사용하는 클래스
  • Standard-IA : 자주 접속하지 않는다는 뜻으로 가격을 조절할 수 있다.
  • One Zone-IA : 잃어버려도 되는 정도의 파일
  • Glacier : 얼려 놓기만 해도 되는 정도의 파일들

 

 

요금 체계

  • 스토리지 : 저장 공간에 대한 요금
  • 요청 및 데이터 검색 : 얼마나 사용했느냐에 대한 내용. 얼마나 다운로드하고 업로드 했느냐?
  • 데이터 전송 요금 : S3에 있는 파일을 다운로드할 때는 돈이 든다.

 

이렇듯 각자의 장/단점에 따라 요금이 다르기 때문에 상활 별로 잘 선택해서 사용해야 한다.

 

 

웹 서버

S3에는 웹 서버 기능이 내장되어 있다. 속성에서 정적 웹 사이트 호스팅을 활성화 하면 S3에 보관한 파일로 전 세계 누구나 방문할 수 있는 웹사이트를 설정 할 수 있다.

 

CDN

AWS에서는 cloudFront라는 서비스를 제공하는데, 이를 CDN(Content Delivery Network)라고 부른다. 전 세계에 CDN서버를 분산시켜 놨다가 요청이 들어오면 가장 가까운 곳에 미리 저장하고 있었던 콘텐츠를 보내 주는 것이다.

 

버전 관리

S3에서는 또한 자체적으로 버전관 관리 기능을 가지고 있다. 버킷의 속성에 버킷 버전 관리 기능을 활성화 하면 시스템이력을 남기고 관리할 수 있다.

 

라이프 사이클

S3에서는 라이프 사이클이라는 기능을 통해 Standard에 있던 파일이 시간이 지나면 Standard-IA -> Glacier로 가게 하는 등의 작업을 자동화할 수 있다.

 

 


S3를 서버로 활용하기

 

정적 웹 호스팅

S3 버킷에 index.html 파일을 올려놓고, 속성 탭에서 정적 웹 사이트 호스팅 편집을 할 수 있다.
인덱스 문서에 html을 입력해주고, 버킷 웹 사이트 엔드포인트 UR로 접근하게 되면 인덱스 페이지에 접근 할 수 있다.

 

 

캐시

사용자에게 한번 컨텐츠를 노출하고 난 뒤에 다시 호출되었을 때는, 저장된 결과 응답을 바로 하는 것을 저장의 의미로 캐시라 한다. 이러한 역할을 전담하는 서버를 캐시 서버라 한다.
CloudFront가 이 캐시서버의 역할을 한다.

 

 

CDN

어떤 지역에 있든 위치의 한계를 극복하게 해주는 것을 CDN(Content Delivery Network)라 한다.

 

 

aws에서 cloudFront를 생성할 수 있다.

  1. 사용자가 cloudFront 접속
  2. cloudFront가 클라이언트 돼서 웹서버에게 요청
  3. 웹 서버가 자신의 정보를 cloudFront에 전송
  4. cloudFront는 웹 서버의 정보를 저장하고 사용자에게 응답
  5. 사용자가 cloudFront로 접속
  6. 웹 서버의 정보를 cloudFront가 저장하게 되면 그 다음의 요청은 cloudFront가 응답

 

 

배포 생성 내 원본 도메인에 주목해야 한다.

 

AWS의 서비스를 사용해도 되고, 자신이 직접 운영하고 있는 서버의 주소를 붙여넣기 해도 된다.

 

이렇게 CloudFront를 생성한 후, 해당 주소를 통해 인덱스 페이지에 반복접근하게 되면 페이지 로딩속도가 빨라진 것을 확인할 수 있다.
하지만 이를 이용하게 되면 동적페이지로 변경되는 데이터가 느린 시간동안 캐시를 먹어 변하지 않는 현상이 발생하게 된다.

 

이를 개선하기 위해서는 캐시 설정에 대한 부분을 변경해야 한다.

 


CloudFront를 이용해서 전 세계에 배포하기

CloudFront 동작 > 캐시 키 및 원본 요청 속성 값 변경란에서는 캐시를 얼마동안 살려둘 것인지를 설정하는 속성 값이 있다.

즉, max-age 만큼 웹서버가 클라이언트에게 제공한 정보를 유지하겠다는 의미이다.

 

캐시 설정에서는 무효화 설정, 캐시 미사용 설정, 쿼리 문자열 설정 등의 값들을 설정할 수 있다.

 

 

 

CDN

CloudFront 설정의 편집값에서 모든 엣지 로케이션 사용(최고의 성능)을 설정하게 되면, CDN이 설정된다.
요금이 과금될 수 있으니 요금표를 잘 보고 설정해야 한다.