* EBS, EFS, S3 사용
실습내용
#3 객체 스토리지 이해
- S3 버킷 생성
- 웹사이트 호스팅을 위한 버킷 정책 설정
- index.html 파일 작성 및 버킷에 업로드
- 정적 웹사이트 호스팅 설정 및 테스트
* 스토리지 유형
- EC2 생성 절차에 기본 옵션으로 잠시 언급되었던 스트로지 유형에 대해 자세하게 살펴본다.
- 크기 : 블록 < 파일 < 객체
1. 블록 스토리지 - Amazon EBS
- 데이터를 블록 단위의 조각으로 나누어 저장
- 각 블록은 저장된 위치에 고유한 식별자(주소)를 가지고 있어 서버에 파일을 요청하면 블록들을 재구성하여 하나의 데이터로 전달한다.
- 균일하게 Block 단위로 분산하여 저장하기 때문에 데이터 입출력에 대한 성능이 좋다. (신속한 검색)
- 네트워크상에 있는 블록 스토리지를 서버에 연결하여 활용한다.
- 대용량 트랜잭션, 대규모 데이터 저장이 요구되는 애플리케이션 환경에 적합하다.
* Amazon EBS
- Amazon Elastice Block Store
- EC2 인스턴스에 사용할 수 있는 블록 스토리지 볼륨을 제공한다.
- 볼륨을 같은 가용영역 내 인스턴스에 연결하여 사용한다. (네트워크를 통해 인스턴스 간 연결 및 해제 용이)
- 데이터에 빠르게 엑세스하고 장기적으로 지속해야 하는 경우 EBS를 사용하는 것이 바람직하다.
- 사용중인 EBS 볼륨을 AMI로 백업해 놓으면 이를 기반으로 동일한 EC2 인스턴스를 생성하는 데 활용할 수 있다.
=> 각 EBS 볼륨은 동일한 가용 영역(AZ)에 있는 하나의 인스턴스에 연결하여 사용한다.
1) EBS 볼륨 유형
| SSD 기반 EBS 볼륨 |
- SSD(Solid-State Drive)는 주요 성능 특성이 IOPS이며 작은 I/O 크기의 읽기/쓰기 작업을 자주 처리하는 트랜잭션 워크로드에 최적화되어 있다.
범용 SSD | 프로비저닝된 IOPS SSD | |
설명 | - 가격과 성능 간의 균형을 제공하여 대부분의 워크로드에 적합 - 최대 IOPS 16,000 |
- 지연 시간이 짧거나 처리량이 많은 미션 크리티컬 워크로드에 적합 - 최대 IOPS 16,000 ~ 256,000 |
사용사례 | - 트랜잭션 워크로드 - 중간규모의 단일 인스턴스 DB - 개발 및 테스트 환경 |
- 지속성인 높은 IOPS 성능이 필요할 경우 - I/O 집약적인 DB 워크로드 |
| HDD 기반 EBS 볼륨 |
- HDD(Hard Disk Drive)는 주요 성능 특성이 처리량(Troughput)이며 대규모 스트리밍 워크로드에 최적화 되어 있음
처리량 최적화 HDD | 콜드 HDD | |
설명 | - 자주 액세스하는 처리량 집약적 워크로드에 적합한 저비용 HDD - 최대 IOPS 500 |
- 자주 액세스하지 않는 워크로드에 적합한 가장 저렴한 HDD - 최대 IOPS 250 |
사용사례 | - 빅데이터 - 데이터 웨어하우스, 로그 처리 |
- 자주 액세스하지 않는 데이터를 위한 처리량 중심의 스토리지 - 스토리지 비용이 최대한 낮아야 하는 경우 |
2) EBS 스냅샷
- 지정 시간에 스냅샷을 생성하여 Amazon S3에 EBS 볼륨의 데이터를 백업할 수 있다.
- EBS 스냅샷은 증분식(Incremental) 백업 방식이며, 최초 스냅샷 생성 이후 변경 혹은 추가된 디바이스의 블록만이 저장되므로 시간 최소화, 스토리지 비용 절약이 된다.
- EBS 스냅샷은 S3에 저장되고 동일 리전 내 다른 가용 영역 간 혹은 다른 리전으로 복제가 가능하다.
- EBS 볼륨은 암호화할 수 있는데, 볼륨 내 저장된 데이터를 암호화하면 스냅샷으로 생성된 볼륨도 모두 암호화된다.
가용영역 간 복제 | 리전 간 복제 |
![]() |
![]() |
3) 인스턴스 스토어
- 임시 블록 스토리지로 호스트 컴퓨터에 물리적으로 연결된 디스크에 위치
- 지연시간을 짧고, 입출력과 처리량은 많다.
- 휘발성 스토리지로, 인스턴스가 중단되거나 종료되면 데이터가 손실되므로 버퍼, 캐시 등 자주 변경되는 임시정보를 저장하는 스토리지로 활용하는 것이 바람직하다.
- 게임 서버에서 세션 정보, 게임 진행 상태, 결과 등 임시로 저장하고, 게임 종료 후 영속적인 저장소(ex.EBS)로 이전한다.
2. 파일 스토리지
- 데이터가 계층적 파일 및 폴더 구조로 저장되는 데이터 저장소 유형
- 데이터를 블록으로 나누지 않고 전체적으로 저장한다.
- 여러 사용자나 애플리케이션이 접근하여 파일을 공유하기 위한 공유파일 시스템으로 활용한다.
- NAS(Network Attached Storage)에 사용되며, 블록 스토리지에 비해 확장성은 뛰어나지만, 데이터가 많아지면 검색 성능이 저하될 수 있다.
* Amazon EFS
- Amazon Elastic File Storage
- 여러 인스턴스에서 실행되는 애플리케이션이 동일한 공유 파일 시스템을 사용해야 하는 경우에 활용하는 파일 스토리지 서비스
- 리전 내 여러 가용 영역에서 실행되는 EC2 인스턴스가 파일 시스템에 엑세스하여 공통 데이터 소스를 공유할 수 있다.
- 사용하는 용량에 따라 페타바이트 규모로 자동으로 확장 및 축소가 가능하여 대규모 분석 작업 및 대량의 데이터 처리에 적합하다.
- Linux 전용이며 수천대의 EC2 인스턴스의 동시 액세스가 가능하다.
- VPS 내부에서 EFS에 연결하여 인스턴스가 파일 시스템에 접근 시 탑재 대상(Mount Target)을 통해 엑세스
- 탑재 대상은 각 가용영역 단위로 1개가 제공된다. (가용영역 내 서브넷이 2개인 경우 하나에만 생성)
- 탑재 대상에 보안그룹을 설정하여 트래픽을 제어할 수 있어서 온프레미스 서버에서의 액세스도 지원 가능하다.
3. 객체 스토리지
- 구조화 혹은 구조화되지 않은 대량의 데이터 저장을 위한 스토리지 유형
- 데이터와 메타 데이터를 하나의 객체 단위로 개별 저장소에 보관하여 고유 식별자(키)를 매핑하여 데이터 액세스와 검색이 용이하다.
- 객체 저장 시 고유의 URL이 부여되어 Rest API를 통한 액세스가 가능하다.
- 객체 스토리지는 사용한 만큼만 비용을 지불하면 되기 때문에 비용 효율적이며 뛰어난 확장성을 보유한다.
* Amazon S3
- Simple Storage Service
- 업계 최고 수준의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체 스토리지(Object Storage) 서비스
- 클라우드 상에서 원하는 만큼의 다양한 유형의 데이터를 저장, 보호 및 관리할 수 있다.
- 거의 모든 종류의 데이터를 원하는 형식으로 저장할 수 있고, 99.999999999% 데이터 내구성을 제공하도록 설계하였다.
- 저장할 수 있는 데이터 전체 볼륨과 객체 수 제한이 없어 무한대의 확장성을 가지고 있다.
- 액세스 제어 정책 및 데이터 암호화를 통해 보안성을 강화할 수 있다.
- 다양한 스토리지 클래스와 수명주기 정책을 지원하여 비용을 관리하여 비용 절감 효과가 있다.
- EBS 스냅샷이 여기로 저장되는데, 이는 EBS 볼륨의 백업일 뿐이다.
① Bucket & Object
![]() |
![]() |
https://nerdyelectronics.com/how-to-store-and-extract-data-from-aws-s3-bucket/ | https://aws.plainenglish.io/storing-retrieving-implementing-objects-using-aws-s3-e2b206e98623 |
- 객체(Object)는 하나 이상의 버킷에 저장되며 업로드 할 수 있는 객체의 크기, 즉 파일당 최대 5TB까지 가능하며, 버킷은 따로 용량 제한이 없다.
- 객체는 수정할 수 없고, 덮어쓰기 및 삭제만 가능하다.
- https://[버킷이름].s3.amazonaws.com/baby.jpg
- 버킷은 Amazon S3 내 객체 저장을 위한 저장소이다.
- 버킷 이름은 모든 AWS 리전의 모든 AWS 계정에서 반드시 고유해야 한다.
- https://[버킷이름].s3.amazonaws.com
② 사용 사례
1) 데이터 분석용 스토어 | 2) 데이터 백업 및 아카이브 | 3) 미디어 저장 및 배포 | 4) 정적 웹사이트 호스팅 |
- 금융 거래 분석, 클릭스트림 분석 등 대규모 데이터 분석을 위한 데이터 레이크로 사용 | - 뛰어난 내구성 및 확장성을 갖춤 - 수명주기 정책을 통한 데이터 이전 및 비용 관리 - 장기보관이 가능 |
- 정적 웹 콘텐츠 또는 미디어 저장 및 배포 - 앞에 설명한 것처럼 각 객체가 고유한 HTTP URL에 연결되므로 S3에서 직접 전송할 수 있음 |
- 정적 웹 사이트 호스팅 - 정적 HTML, CSS 파일, JavaScript 형식 |
④ 데이터 백업 및 아카이브
- S3는 뛰어난 내구성 및 확장성을 갖춰 클라우드 혹은 온프레미스 데이터를 백업하고 아카이브하기 위한 도구로도 매우 유용하다. (EC2 인스턴스 복구하려면 AMI와 Snapshot 필요)
- 다양한 스토리지 클래스와 수명주기 정책을 제공하여 장기 보존이 필요한 데이터를 비용 효과적인 방법으로 저장 및 관리할 수 있다.
⑤ 스토리지 클래스
# 왼쪽으로 갈수록 저장비용이 높고 신속한 조회가 가능, 오른쪽으로 갈수록 저장비용이 낮고 조회사간이 길다.
유형 | 용도 |
S3 Standard | - 높은 처리 성능과 밀리초 단위의 액세스가 필요한 자주 엑세스하는 데이터에 적합 - 데이터 레이크, 클라우드 네이티브 애플리케이션, 정적 웹 사이트, 콘텐츠 배포, 데이터 분석 등의 다양한 사용 사례에 맞게 최적화 |
S3 Standard - IA | - IA(Infrequent access) 유형은 Standard에 비해 자주 액세스하지 않지만 필요할 때 빠르게 액세스해야 하는 데이터에 적합 |
S3 One Zone - IA | - 단일 AZ에 데이터를 저장하며 비용은 IA 보다 20% 저렴 (복제 X) |
S3 Glacier IR | - 거의 액세스하지 않으면서 밀리초 단위의 검색이 필요한 장기 데이터 저장 |
S3 Glacier FR | - 연간 1~2회 액세스하고 Glacier Instant Retrieval 보다 최대 10% 저렴한 비용으로 스토리지를 제공하며, 5~12시간 내에 무료 대량 검색을 지원 |
S3 Glacier FR Deep Archive |
- S3 Glacier Flexible Retrieval 보다 최대 75% 저렴하며 표준 검색 속도 사용 시 12시간 내 검색 결과 제공 |
* 여기서 Glacier은 얼려놓은 것을 녹이려면 시간이 걸림을 비유, 또한 장기보관이 가능하다는 뜻
⑥ 수명 주기 정책
* S3 Lifecycle Policy
- 사용자가 수명 주기 정책 규칙을 지정하여 어느정도 시간 뒤에 삭제를 시켜서 비용을 절감하는 것이다.
- S3에 저장된 데이터의 수명 주기 이동 및 삭제(전환 및 만료작업)을 자동화하기 위해 사용 (버킷 별, 객체별로 설정가능)
- 시간이 지나면서 데이터 중요도가 감소하면 수명주기 정책을 통해 비용을 더 적게 지불하여 전체 비용을 줄일 수 있다.
* S3 intelligent-tiering
- 비용만 내면 앞서 말한 수명주기정책 설정 필요없이 알아서 자동으로 바꿔준다.
- 액세스 패턴이 변경되었을 때 가장 비용 효율적인 엑세스 계층으로 데이터를 자동으로 이동하여 스토리지 비용을 최적화하도록 설계한다.
- 검색 요금이 없으며 월별 개체 모니터링 및 자동화 요금을 지불한다.
⑦ 액세스 제어
- S3에서 버킷 생성 시 기본 설정은 당연히 비공개로, 버킷을 생성한 특정 AWS 계정의 리소스 소유자만 해당 버킷에 액세스를 할 수 있다.
- 리소스 소유자는 Make Public 설정 및 액세스 정책(Access Policy)을 작성하여 다른 사용자에게 데이터 액세스 권한을 부여할 수 있다.
Make Public | Access Policy |
- 불특정 다수에게 액세스 권한을 부여하기 위해 사용 - S3에 정적 웹 사이트 호스팅, 미디어 스트리밍 서비스 등의 특정 사례에서만 제한적으로 사용 |
- 사용자별로 권한을 설정하고자 할 경우 액세스 정책을 설정 - 리소스(버킷 및 객체) 기반 정책인 버킷 정책을 통해 구현 |
* 버킷 정책에는 JSON 기반 액세스 정책 언어를 사용하며 특정 주소에 대한 액세스를 제한한다.
- IAM ROLE과 개념은 유사하나, IAM은 사용자가 주체이고 버킷 정책은 리소스가 주체이다.
SID : Statement ID | Effect : 정책 엑세스에 대한 허용 혹은 거부 | Principle : 액세스를 허용 혹은 거부할 주체(계정, 사용자 등) |
Action : 정책이 허용 혹은 거부하는 작업목록(s3:PutObject) | Resource : 작업이 허용되는 리소스 목록을 arn(amazon resource name)으로 지정 | Condition : 정책에서 권한을 부여하는 조건(상황)을 지정 |
- 또한 코드 구현 없이 AWS에서 제공하는 AWS Policy Generator를 활용하면 토글만 선택하면 알아서 코드를 만들어준다.
* S3 Presigned URLs
- 버킷 정책을 업데이트하지 않고도 Amazon S3의 객체에 시간 제한 엑세스 권한을 부여할 수 있다.
- URL이 생성될 때 지정된 만료기간 동안 유효하며 콘솔을 통해서는 1분~12시간, AWS CLI 또는 SDK를 사용하는 경우 최대 7일까지 설정이 가능하다.
⑧ 정적 웹 사이트 호스팅
- 도메인은 특정 사이트 접속 시 IP 주소를 대신하여 한눈에 알아볼 수 있도록 한다.
- DNS는 해당 도메인 이름을 다시 IP 주소로 변환하도록 구축된 글로벌 데이터베이스 시스템이다.
- DNS를 통해 도메인을 IP주소로 변환한 후 해당 IP 주소에 해당하는 웹서버로 요청을 전달해 클라이언트와 서버가 통신을 수행하는 구조이다.
- Amazon S3을 사용하여 이러한 정적 웹 사이트를 호스팅할 수 있다. (정적 HTML 파일, 이미지, 동영상, JavaScript 형식)
- HTTP만 지원하고 퍼블릭 읽기 액세스와 버킷 정책 적용이 필요하다.
- 버킷 URL을 통해서도 접근이 가능하지만 DNS를 통해 특정 도메인을 사용하여 호스팅을 할 수도 있다.
(Route53은 AWS에서 제공하는 DNS 서비스)
⑨ 미디어 저장 및 배포
- CDN(Content Delivery Network) 서비스는 지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 콘텐츠를 전송할 수 있는 콘텐츠 전송 기술이다.
- 콘텐츠를 담고 있는 서버(Origin)들은 모든 사용자 요청에 일일이 응답해야 하고, 트래픽이 과도하게 증가하는 경우 성능 저하와 장애 발생 확률이 커진다.
- 따라서 각 지역 엣지 로케이션에 캐시 서버를 분산 배치하여 굳이 원본 서버에서 요청에 응답하지 않고 캐시 서버에서 콘텐츠를 전달한다.
1) Cashing 서비스 | 2) Download 서비스 | 3) Streaming 서비스 |
- 웹 서버 이미지 등 캐싱하여 웹 서버에 부하를 줄이고 컨텐츠를 클라이언트에 빠르게 전송 - ex. 쇼핑몰, 커뮤니티 |
- 대용량의 컨텐츠나 패치 등으로 많은 클라이언트에 한번에 컨텐츠를 전송해야 할 경우 - ex. 게임 다운로드, 업데이트, 백신 패치 |
- 영상 컨텐츠를 클라이언트에게 스트리밍할 경우 - ex. 동영상, 인터넷 강의 등 |
- ① 사용자가 요청하면 지연 시간이 가장 짧은 엣지 로케이션으로 요청을 라우팅하며 응답
- ② 캐시된 콘텐츠가 없는 경우에만 오리진(S3버킷) 또는 웹 서버에서 콘텐츠를 검색
- ③ 오리진 콘텐츠가 캐싱을 위해 CloundFront 엣지 로케이션으로 전송됨
- ④ 데이터가 최종 사용자에게 전송됨
=> 따라서 캐시된 복사본이 있으면 ①에 대한 응답을 바로 ②, ③을 거치지 않고 처리할 수 있다.
⑩ 버전 관리
- 버킷에 여러 버전의 객체를 보관하고 실수로 삭제되거나 덮어쓰기 된 객체 복원을 지원
- 버전 관리 사용 설정을 하면 저장되는 객체에 대해 고유한 버전 ID를 자동으로 생성한다.
- 객체를 영구적으로 제거하지 않고 삭제를 진행한다면 S3에서는 아래와 같이 삭제 마커를 삽입한다.
⑪ 객체 잠금
- S3 Object Lock
- 고정된 시간동안 또는 무기한으로 객체의 삭제 혹은 덮어쓰기를 방지하기 위한 기능이다.
- 데이터 작성 후 변경하거나 삭제하지 않아야 하는 시나리오에 활용을 한다.
- 예를 들어 비즈니스에 금융 또는 의료 부문의 규정 준수 요구사항이 있는 규제 요구 사항이나 향후 감사 목적으로 활용하고자 할 경우에 적합하다.
⑫ 데이터 암호화
- S3 Data Encryption
- 전송 중 암호화(클라이언트측 암호화) : 데이터가 암호화 된 상태에서 클라우드로 전송하는 방식
- 유휴 시 암호화(서버측 암호화) : 데이터를 저장할 때 암호화하는 방식으로, S3 관리형 키, AWS KMS 키, 고객 제공 키 등
⑬ 데이터 이동 (네트워크/물리적 이동)
⑭ 데이터 복제
- 객체 복제(Object Replication) 기능을 사용하여 동일 리전 내 가용영역 간 혹은 교차 리전간 라이브 복제를 수행할 수 있음
- 객체 복제는 규정 준수 요구사항 충족, 사용자 대기시간 최소화, 백업 및 재해 복구 (DR) 등의 다양한 목적으로 활용된다.
'클라우드 서비스' 카테고리의 다른 글
[클라우드 서비스] Microservices_20241205 (1) | 2024.12.08 |
---|---|
[클라우드 서비스] Database Service _ 20241204 (2) | 2024.12.06 |
[클라우드 서비스] Computing Service _ 20241203 (4) | 2024.12.05 |
[클라우드 서비스] Networking Service _ 20241203 (0) | 2024.12.04 |
[클라우드 서비스] Access Control _ 20241202 (0) | 2024.12.04 |