새소식

독서/AWS 구조와 서비스

5. 스토리지 서비스

  • -

Amazon S3는 데이터 저장 장소

Amazon Simple Storage Service(S3)는 AWS에서 제공하는 객체 스토리지 서비스다. 스토리지란 데이터를 저장하는 장소를 말하며 객체란 텍스트 파일이나 음성 파일 같은 데이터를 말한다. 객체 스토리지는 기존의 파일 스토리지처럼 폴더 구조는 갖지 않고 객체 키로 데이터를 고유하게 식별해 데이터의 입출력과 관리를 수행한다. 키만으로 데이터를 관리하기 때문에 간편하게 대용량의 데이터를 저장하고 관리할 수 있다.

 

S3의 특징

1. 용량 무제한 -> 객체당 5TB라는 제약이 있지만 객체 수나 데이터 용량에는 제한이 없다.

2. 높은 내구성 -> 일반적으로 데이터가 3개 이상의 AZ로 복사된다. 복사를 통해 데이터의 내구성을 높여주며 AWS에서는 높은 내구성 수치를 보여준다.

3. 저렴한 비용 -> 서울 리전의 표준 스토리지는 요금이 1개월 당 0.025USD/GB다. 나중에 소개할 스토리지 클래스 변경을 통해 더욱 저렴한 요금으로 데이터를 저장할 수 있다.

 

 

S3의 기본 용어 및 기본 조작

ex) s3://test-bucket/folder/object.txt           -> 실제로 폴더 구조가 아니지만, "/" 문자열을 구분자로 판단해 관리한다.

                (버킷 이름) [키이름[객체 이름]]

 

버킷 : 객체(데이터)를 저장하는 장소다. 사용자는 버킷에 객체를 저장한다. 버킷의 이름은 전 세계에서 고유해야한다. 예로 'test-bucket' 이라는 이름으로 버킷을 생성한 후에는 다른 사용자를 포함해 모든 리전 및 모든 AWS 계정에서 같은 이름으로 버킷을 만들 수 없다.

객체 : 버킷에 저장된 데이터 본체다. 버킷에는 객체를 무제한으로 저장할 수 있지만 한 객체의 최대 크기는 5TB 넘을 수 없다.

: 객체의 저장 URL 경로다. 버킷 이름과 키 이름, 객체 이름을 조합해 공유하게 설정된다.

 

 S3는 데이터를 등록하거나 삭제하는 API를 제공하므로 이를 호출해 S3의 객체를 조작할 수 있다. API는 조작을 받아들이는 창구와 같은 역할로 공통의 창구를 이용해 브라우저나 프로그램 등 다양한 곳에서 데이터를 조작할 수 있게한다.

 

1)GET -> S3에서 데이터(객체)를 다운로드

2)PUT -> S3에 객체를 업로그, 신규 업로그, 갱신. 하나의 PUT은 최대 5TB 까지라서 이를 초과하려면 멀티 파트 업로드라는 기능을 이용해 여러 파트로 나눠 최대 5TB 데이터를 업로드 할 수 있다.

3)LIST -> S3 버킷의 객체 목록을 표시, 데이터 추출도 가능하다.

4)COPY -> S3 내에서 객체를 복사, 다른 버킷과 리전 간에 복사 가능하다.

5)DELETE -> S3 내에 있는 임의의 객체를 삭제

 

 

S3 데이터를 적절하게 저장

 S3는 비용과 가용성이 다른 여러 스토리지 클래스를 제공한다. 비용 효율성을 중시한 아카이브용 스토리지인 Amazon S3 Glacier라는 스토리지 클래스도 있다. 데이터의 사용 빈도, 비용 등에 따라 스토리지 클래스를 선택할 수 있다. 거의 사용하지 않지만, 만약을 위해 보존하고 싶은 데이터가 존재하다면 S3 Glacier Deep Archive와 같은 저렴한 스토리지 클래스를 선택하는 것이 좋다.

 

반대로 웹 페이지에서 표시되는 콘텐츠와 같이 언제든지 사용할 수 있어야 하는 데이터를 저장하려면 표준(STANDARD)을 선택한다. 또한 S3에는 수명 주기 설정이라는 기능이 있어 자동으로 스토리지 클래스 변경도 가능하다. 예로 생성한지 1년이 경과한 객체는 S3 Glacier Flexible 객체로 마이그레이션하는 설정을 할 수 있고, 삭제도 가능하다.

 

스토리지 클래스의 종류가 많아 애매하다면 S3용 액세스 분석기라는 기능을 이용해, 얼마나 접근이 있고, 데이터의 접근 상황을 확인해 참고할 수 있다. S3용 액세스 분석기에서 데이터 용량과 접근 상태를 확인한 다음, 스토리지 클래스를 결정하는 것도 좋은 방법이다.

 

S3 데이터는 3곳 이상으로 복사되어, 데이터가 손실되는 경우는 거의 없다. 하지만 사용자의 실수로 데이터를 삭제하거나 의도하지 않은 변경 가능성은 있다. S3의 버전 관리 기능을 활성화하면 모든 세대의 객체에 대한 이력 정보가 보존된다. 객체 갱신시 PUT은 기존 객체와 다른 새로운 버전 ID가 보여된다. 버전 관리 설정은 S3 버킷 단위로 할 수 있고, 객체 단위의 설정은 불가하다. 삭제 DELETE을 했을 경우 객체가 실제로 삭제되는 것이 아니라 삭제 마커가 부여된다. 해당 객체의 과거 버전은 유지된다. 삭제 마커가 부여된 객체에 GET 요청을 보내면 404 Not Found 오류가 반환된다. 버전 ID를 지정해 삭제하면 지정한 버전을 삭제할 수 있다.

 

 

S3 버킷에 대한 접근 제어

S3 버킷에는 개인 정보와 같은 중요한 정보도 저장될 수 있어서 올바르게 접근할 수 있도록 접근 제어를 하는 것이 중요하다. S3 버킷의 접근 제어는 다음 3가지로 구현할 수 있다.

 

1. 사용자 정책 (IAM 정책) -> 데이터를 조작하는 쪽을 제어하는 설정이다. 'A는 S3 버킷의 데이터 검색만 가능하고 업로드는 불가' 라는 식으로 사용자에 대한 권한을 설정할 수 있다.

 

2. 접근 제어 목록 (ACL) -> 객체(데이터) 또는 버킷 단위로 설정할 수 있는 접근 제어다. '데이터 A는 AWS 계정 X에 접근 허용', '데이터 B는 모든 사용자에게 접근 허용' 과 같이 데이터별로 상세한 설정을 할 수 있다.

 

3. 버킷 설정

버킷 단위로 설정하는 접근 제어다. 버킷 단위라고 해도 '파일 이름이 logs로 시작하는 데이터에 접근 허용', 'IP 주소 ~로 부터 접근 허가' 와 같이 복잡한 설정을 할 수 있다. 설정은 JSON 형식으로 기재한다.

 

버킷 정책이나 ACL 설정 내용에 따라 객체를 전 세계에 공개하는 퍼블릭 상대가 되므로 주의가 필요하다. S3에는 퍼블릭 액세스 차단이라는 기능이 있어 의도치 않게 S3 버킷이나 객체가 공개 상태가 되는 것을 방지할 수 있다. S3는 HTTPS를 지원하지 않아, 이가 필요하다면 CloudFront를 사용하는 방법으로 대체할 수 있다.

 

 

데이터 암호화

 데이터 암호화를 실시하면 데이터와 키 데이터를 조합해 데이터 내용을 타인이 볼 수 없게 한다. S3에서는 버킷의 기본 암호와 기능을 활성화하면 객체를 저장할 때 AWS에서 자동으로 암호화를 수행한다. 키는 AWS에서 제공하는 키 관리 기능인 AWS Key Management Service(KMS)에서 생성한 키와 사용자가 관리하는 키가 있다. KMS 키를 사용하면 AWS 시스템 내에서 자동으로 암호화 처리를 수행하므로 사용자는 객체를 저장하기만 하면 된다.

 

S3에서 제공되는 기능은 객체 저장시 암호화이므로 S3로 전송할 때 암호화하고 싶다면 데이터를 응용 프로그럄애서 암호화해 전송해야 한다. 이를 클라이언트 측 암호화 라고한다. 클라이언트 측 암호화에는 사용자 고유의 키나 KMS 키를 사용할 수 있다.

 

 

가상 서버 데이터 저장을 위한 EBS

Amazon Elastic Block Store(EBS)는 EC2와 함께 사용하는 스토리지 서비스다. EC2의 HDD/SSD와 같은 역할을 하며 EC2에서 실행 되는 응용 프로그램이 데이터, 로그, 설정 정보등을 저장하는 데 주로 사용한다. EC2 인스턴스를 생성할 때 기본적으로 하나의 EBS가 연결되며 추가 연결도 가능하다. 응용 프로그램에 따라 필요한 데이터의 읽기/쓰기 속도가 다른데, EBS에서는 필요한 속도에 따라 볼륨 유형을 선택할 수 있다. EBS의 쓰기/읽기 성능은 IOPS 라는 초당 쓰기/읽기 횟수를 표현하는 단위로 사용된다.

 

특별히 요구되는 성능 사항이 없다면 범용 SSD, 고성능 응용 프로그램을 실행하는 경우 프로비저닝된 OPDS SSD, 가능한 저렴하게 사용하고자 한다면 처리량 최적화 HDD나 Cold HDD를 선택한다.

 

 EBS도 스토리지이므로 장애가 발생해 데이터가 파손되거나 실수로 데이터를 삭제하는 등의 사고가 발생할 수 있다. 이를 방지하기 위해 스냅숏이라는 백업 기능을 지원한다. 스냅숏에는 스냅숏을 만들 당시 EBS에 보존하고 있던 모든 정보가 백업된다. 스넵숏은 EBS 볼륨으로 복구해 EC2에 다시 연결해 사용할 수 있고 스냅숏과 몇 가지 설정 정보를 조합해 사용자 전용 AMI를 생성할 수 있다. 

 

 

S3와 EBS 외 유용한 서비스

1) Amazon Elastic File System -> EBS는 매우 빠르지만 EC2 인스턴스에만 연결할 수 있다. 그리고 S3는 많은 클라이언트가 동시에 사용할 수 있는 스토리지지만 HTTPS를 통한 API 통신을 이용하므로 전송 속도가 그다지 빠르지 않다. 이를 해결하기 위한 서비스로 Amazon Elastic File System이 있다. EFS는 비교적 고속으로 데이터를 전송할 수 있는 Network File System(NFS)라는 프로토콜을 이용해 여러 EC2 인스턴스가 함께 이용할 수 있는 스토리지다. 물론 일반적인 NFS 프로토콜을 사용하기 떄문에 ACL 설정만 잘 돼 있다면 온프레미스 서버나 로컬 PC에서도 마운트해서 사용할 수 있다.

 

2) Amazon FSx -> Amazon FSx는 파일 서버를 구축하기 위한 서비스다. 주로 윈도우에서 사용되는 파일 공유 프로토콜인 SMB(Server Message Block)을 이용하는 Amazon FSx for Windows File Server와 대규모 클러스터 컴퓨팅, 슈퍼 컴퓨터 등에서 사용되는 Lustre라는 고성능 파일 시스템을 이용하는 Amazon FSx for Lustre 2종류가 제공된다. SMB는 윈도우뿐만 아니라 리눅스 및 맥OS도 지원하므로 다른 OS에서도 공유 파일 서버를 이용하고 싶다면 Amazon FSx for Windows File Server를 선택지로 할 수 있다.

 

3) AWS Storage Gateway온프레미스 서버 기기 혹은 가상 서버에 설치해서 온프레미스 기기와 AWS의 S3, FSx, EBS를 직접 연결하는 서비스다. 온프레미스 기기에서 Storage Gateway는 NFS나 SMB로 연결하는 스토리지처럼 처리되므로 직접 AWS 서비스와 데이터를 교환하는 것보다 빠르다.

 

이외에도 AWS Transfer Family, AWS Back up, AWS DataSync, AWS Snow Family 등 다양한 서비스가 있다.

'독서 > AWS 구조와 서비스' 카테고리의 다른 글

6. 네트워크 용어 & VPC  (0) 2023.12.09
4. 컨테이너의 구조와 특징 이해  (0) 2023.12.08
3. 컴퓨팅 서비스(하)  (0) 2023.12.06
2. 컴퓨팅 서비스(상)  (1) 2023.12.05
1. AWS 기초지식  (1) 2023.12.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.