티스토리 뷰
* 스토리지(Storage)
- 데이터를 보관하는 장소로, 사용하는 모든 저장 장치
- e.g. USB(Universal Serial Bus), 외장 하드(SSD, HDD)
* 스토리지 서비스 및 주요 기능
1) 블록 스토리지(Block Storage)
- 단일 스토리지 볼륨(Volume)을 '블록'이라는 개별 단위로 분할해서 저장함
- 각 블록은 저장된 위치에 고유한 주소가 있음
- 서버에서 파일을 요청하면 블록들을 재구성하여 하나의 데이터로 서버에 전달함
- 클라우드 환경에서 블록 스토리지의 각 블록은 가상 머신 인스턴스에 위치함
- 마치 일반 컴퓨터에 하드디스크를 추가하여 C 드라이브, D 드라이브처럼 논리적으로 구분해서 사용
- 일반적으로 블록 스토리지는 SAN(Storage Area Network) 또는 가상 머신의 디스크로 사용됨
[참고] SAN : 서로 다른 종류의 데이터 저장 장치를 한 데이터 서버에 연결하여 총괄적으로 관리해 주는 네트워크
2) 파일 스토리지(File Storage)
- 파일 수준 또는 파일 기반 스토리지라고 하며, 디렉터리 구조로 파일을 저장함
- 각 파일은 폴더에 종속되고 폴더 역시 다른 폴더에 종속되어 계층 구조를 이룸
- 개인용 컴퓨터와 서버에서 일상적인 작업을 공유하여 사용할 수 있지만,
파일이 늘어나면 분류하거나 정리하는데 시간이 점점 더 소요된다는 단점이 있음
- 파일 스토리지는 일반적으로 NAS(Network Attached Storage)에 사용됨
[참고] NAS : 컴퓨터 네트워크에 연결된 파일 수준의 컴퓨터 기억 장치
서로 다른 네트워크 클라이언트에 데이터 접근 권한 제공
3) 객체 스토리지(Object Storage)
- 각 데이터 조각을 가져와서 객체로 저장하고, 개별 단위로 저장함
- 파일 스토리지와 다르게 모든 객체는 중첩된 계층 구조 없이 단일한 평면적인 주소 공간에 저장됨
- 이 평면 주소 공간에는 데이터 및 관련 메타데이터(metadata)로 구성된 객체에 고유 식별자가 있음
- OS나 파일 시스템에 의존하지 않으면서 데이터를 저장하고 객체에 쉽게 접근 가능
- 객체의 키(이름)만 알고 있으면 쉽고 빠르게 대상을 검색할 수 있음
- 접근 시 HTTP 프로토콜 기반의 REST API를 사용함
- 저장할 수 있는 데이터의 수와 파일 크기에 제한 없음
- 많은 사용자가 사용하는 이미지, 영상 등 복잡하고 대용량인 비정형 데이터를 효율적으로 처리 가능
구분 | 블록 스토리지 | 파일 스토리지 | 객체 스토리지 |
AWS 스토리지 서비스 | Amazon EBS | Amazon EFS | Amazon S3 |
주요 특징 | - 데이터를 블록 단위로 저장 - 호스트에서 파일 시스템 생성 - FC, iSCSI를 이용해 접근 - SAN |
- 디렉터리 구조로 파일 저장 - 스토리지에서 파일 시스템 생성 - NFS, CIFS를 이용하여 접근 - NAS |
- 데이터를 객체 단위로 저장 - 데이터 검색을 위한 메타데이터와 식별자 사용 - REST API 호출을 통해 접근 - HTTP/HTTPS |
사용 사례 | 호스트에서 직접 파일을 액세스하고 기록하며 빠른 성능을 요하는 경우 | 다수의 장치가 데이터를 공유하여 동일한 서비스를 사용해야 하는 경우 | 대량의 데이터를 저장하거나 다수의 서버에서 해당 데이터에 접근해야 하는 경우 |
* 스토리지 선택 기준
- 클라우드 스토리지는 어디에서나 접근할 수 있는 편의성, 대량의 데이터를 수용할 수 있는 확장성 갖춤
- 스토리지 도입 시 클라우드 스토리지의 종류별 특징을 이해하고 목적과 상황에 맞게 선택해야 함
* 스토리지를 선택할 때 고려 사항
내구성 | 가용성 | 보안 | 비용 | 확장성 | 성능 | 통합 | |
주요 내용 | 데이터 손실 가능성 |
서비스 지속 시간 |
저장 및 전송 중 데이터 보안 |
스토리지 단위 가격 |
스토리지 크기 및 사용자 수 변경 |
스토리지 크기 및 사용자 수 변경 |
다른 서비스와 호환성 |
* Amazon EBS(Elastic Block Store)
- EC2 인스턴스에 사용할 수 있는 블록 스토리지 볼륨을 제공하는 서비스
- 블록 스토리지 특성을 이용한 저장 방식이므로 데이터를 일정한 크기의 블록으로 나누어 분산 저장함
- 볼륨 위에 파일 시스템을 생성하거나 하드디스크 드라이브 같은 블록 디바이스를
사용하는 것처럼 볼륨을 사용할 수 있음
- 인스턴스에 연결된 EBS 볼륨의 구성을 동적으로 변경할 수 있음
- 데이터베이스처럼 데이터 출입이 많은 서비스에 적합함
- EBS 스토리지는 AWS 관리 콘솔에서 필요한 용량과 성능에 맞추어서 볼륨을 생성한 후 EC2 인스턴스에
연결하고 파일 시스템을 포맷한 후 사용하며, 파일 시스템 포맷은 운영 체제에 따라 다르게 사용됨
- 리눅스는 xfs 또는 ext4 유형이 주로 사용되며, 윈도우는 NTFS 포맷이 주로 사용됨
- 포맷이 완료되면 해당 볼륨을 서버에서 마운트한 후 데이터를 해당 디렉터리에 저장해서 사용함
- 인스턴스와 EBS 볼륨은 서로 종속 관계가 아니며, 인스턴스는 다수의 볼륨을 연결해서 사용할 수 있음
- 하나의 EBS 볼륨은 한 번에 하나의 인스턴스에만 연결할 수 있고,
해당 인스턴스에서 지원하는 형태의 시스템으로 포맷해야 사용 가능
* EBS 특징
1) 데이터 가용성
- 단일 하드웨어 구성 요소의 장애 때문에 데이터가 손실되지 않도록 해당 가용 영역 내에서 자동으로 데이터 복제
2) 데이터 지속성
- EBS 볼륨은 인스턴스 수명과 관계없이 유지되는 비관계형 인스턴스 스토리지
3) 데이터 안정성
- Amazon EBS 암호화 기능으로 암호화된 EBS 볼륨을 생성할 수 있음
- 암호화 표준 알고리즘(AES-256) 사용
4) 데이터 백업
- 모든 EBS 볼륨의 스냅샷(Snapshot)을 생성함
- 다중 가용 영역에 중복 저장이 가능한 Amazon S3에 볼륨 내 데이터 사본을 백업 가능
5) 데이터 확장성
- 서비스를 중단하지 않고 볼륨 유형, 볼륨 크기, IOPS(Input/Output Operations Per Second) 용량을 수정 가능
* EBS 볼륨 유형
1) SSD
- 메모리형 디스크를 사용함
- 데이터를 빠르게 읽고 처리하는 능력이 좋음
- 주로 서버의 운영체제가 설치되는 OS 영역이나 일반 데이터베이스 보관용 스토리지 유형으로 사용됨
2) HHD
- 플래터(Platter) 디스크를 사용함
- 속도와 상관없이 데이터 저장 용량이 많이 필요할 때 사용하므로 데이터 분석에 주로 활용됨
구분 | SSD | HDD | ||
볼륨 유형 | 범용 SSD 볼륨 (gp2, gp3) |
프로비저닝된 IOPS SSD 볼륨 (io1 및 io2) |
처리량 최적화 HDD 볼륨 (st1) |
콜드 HDD 볼륨 (sc1) |
특징 | 다양한 작업에 적합하며 요금과 성능 간 균형 유지 |
지연 시간에 민감한 작업을 위해 설계된 고성능 SSD 볼륨 |
자주 접근하고 처리량이 집약적인 작업에 적합한 저렴한 HDD | 자주 접근하지 않는 작업에 적합한 최저 비용의 HDD 볼륨 |
볼륨 크기 | 1GiB ~ 16TiB | 4GiB ~ 16TiB | 125GiB ~ 16TiB | 125GiB ~ 16TiB |
기준 성능 속성 | IOPS | IOPS | MiB/s | MiB/s |
사용 사례 | 일반적인 작업 | I/O 집약적 NoSQL 및 관계형 데이터베이스 |
Big Data 분석 | 간헐적 사용 데이터 |
* EBS 스냅샷
- EBS 스냅샷 기능은 특정 시점에 포인트를 찍어서 그 시점으로 되돌아갈 수 있는 지점을 만드는 기능
- 중분식 백업 방식을 이용함
- 마지막 스냅샷 이후 변경되는 데이터 블록만 기록/복제하므로 저장 비용과 시간도 효과적으로 절감할 수 있음
- 매번 원본과 크기가 같지 않아도 변경된 부분만 중분되어 백업되기 때문에
특정 데이터를 삭제해도 어느 한 부분의 스냅샷만 가지고 있다면 복구할 수 있음
- 스냅샷 삭제 시 다른 스냅샷에서 참조되지 않는 영역만 데이터에서 제거되기 때문
- 스냅샷은 기본적으로 Amazon S3라는 스토리지 공간에 저장되어 여러 가용 영역에 자동으로 복제됨
- 다른 계정으로 공유할 수 있고, 스냅샷을 이요하여 손쉽게 다른 리전으로 복제할 수 있음
* Amazon EFS (Elastic File System)
- 클라우드 환경과 온프레미스 환경에서 사용할 수 있는 완전 관리형 네트워크 파일 시스템
[참고] 완전 관리형 : 클라우드에서 하드웨어 프로비저닝 유지 관리, 소프트웨어 구성, 모니터링, 복잡한 성능 조절 등
모든 것을 관리하기 때문에 사용자 입장에서는 별다른 관리가 필요 없다는 의미
- 처음 파일 시스템을 생성한 후 서버에 연결하면 사용한 만큼 자동으로 스토리지 크기가 확장되고, 사용한 만큼만 비용을 지불하면 되기 때문에 사실상 용량 제한 없이 사용할 수 있음
* EFS 특징
- 고성능 네트워크 파일 시스템으로, 여러 대의 컴퓨터가 네트워크상의 동일한 데이터에 접근해야 할 때 사용함
- NFS 표준 프로토콜 기반의 연결을 지원하고 있어 기존 다양한 어플리케이션과 유연하게 통합할 수 있음
[참고] NFS(Network File System) : 네트워크 기반의 파일 시스템으로,
공유된 원격의 호스트 파일을 다른 시스템이 로컬에서 가용할 수 있도록 구현한 방식
- 여러 컴퓨팅 인스턴스에서 동시에 사용할 수 있음
- 기존 NAS처럼 사용자 홈 디렉터리를 공유하여 애플리케이션 개발
- 테스트 환경의 다양한 웹 서비스와 콘텐츠 관리, 분석이나 미디어 업무에도 활용할 수 있음
- EFS 볼륨은 IOPS가 높고 용량이 매우 크기 때문에 처리량이 많고 대기 시간이 짧음
- 파일 시스템의 사용 증가에 따라 자동으로 용량 및 성능이 조정되는
탄력성을 제공하여 네트워크 스토리지의 용량 및 성능 부족을 걱정할 필요 없음
- EBS처럼 가용 영역 단위의 서비스가 아니라 가용 영역 전반에 걸쳐 사용할 수 있는 스토리지
- 가용 영역 장애를 고려한 디자인이 가능해서 전통적인 NAS보다 뛰어난 가용성을 가짐
* Amazon S3(Simple Storage Service)
- AWS 서비스 중에서 EC2 서비스와 더불어 가장 오래되고, 기본이 되는 객체 스토리지 서비스
- S3에 저장되는 데이터를 객체(Object)라고 하며, 이 객체 저장소를 버킷(Bucket)이라고 함
- 객체에 대한 입출력은 HTTP 프로토콜로 하며, REST API를 이용하여 명령이 전달됨
- 높은 내구성을 가지고 있음
99.99999999%의 내구성으로 디자인이 되어 있기 때문에 데이터 손실을 최소화하도록 규정함
- 데이터 저장 공간이 거의 무제한에 가까워 특별한 용량 제한 없이 데이터를 저장할 수 있으며,
필요한 경우 다양한 스토리지 계층으로 데이터를 분류하여 데이터 저장 비용을 절감할 수도 있음
- 보안 규정 준수 및 감시 기능을 제공하고 있어 데이터가 안전하게 저장되고, 인증된 사용자만 접근할 수 있도록 구성함
- 필요한 경우 접근 권한 정책을 이용해 해당 객체의 접근을 제어할 수 있음
- S3 객체는 기본적으로 웹 접속이 가능하기 때문에 간단한 정적 웹 콘텐츠를 S3에 올려
웹 서버의 도움 없이 바로 웹 서비스가 가능함
* S3 구성 요소
1) 버킷
- 데이터 스토리지를 위한 S3의 기본 컨테이너
- 객체는 반드시 버킷에 저장되어야 하며, 하나의 리전에서 생성된 후에는 버킷 이름과 리전을 변경할 수 없음
2) 객체
- S3에 저장되는 기본 매체로, 객체 데이터와 객체 메타데이터로 구성되어 있음
- 메타데이터는 객체를 설명하는 이름-값에 대한 하나의 쌍으로 존재함
- 객체를 저장할 때 사용자 정의 메타데이터를 지정할 수 있음
- 객체는 키(이름) 및 버전ID를 이용해 버킷 내에서 고유하게 식별됨
3) 키
- 버킷 내에서 객체의 고유한 식별자
- 버킷 내 모든 객체는 고유한 하나의 키를 갖게 됨
- S3는 '버킷 + 키 + 버전'과 객체 사이의 기본 데이터 맵으로 생각할 수 있음
4) S3 데이터 일관성
- S3 버킷에 있는 객체에 대해 여러 서버로 데이터를 복제하여 고가용성 및 내구성을 구현하고 데이터 일관성 모델 제공
► http://cloudneta.s3.amazonaws.com/20240125/example.png
- cloudneta : 버킷
- 20240125/example.png : 객체 키
* S3 특징
- 빠르고 내구성과 가용성이 높은 키 기반의 접근성을 제공
- 데이터의 저장 및 검색에 특화된 객체 스토리지
- 하나의 리전 내 최소 세 개 이상의 물리적으로 분리된 가용 영역에 데이터를 복제해서 저장하므로 높은 내구성과 고가용성을 제공하며, 서버의 OS 도움 없이 객체별 접근이 가능하므로 데이터 저장 및 활용에 용이함
- Amazon S3는 동일 버킷 내 여러 개의 객체 변형을 보유하여 데이터 복구에 특화된 객체 스토리지
- S3에 버전 관리 기능을 이용하면 버킷에 저장된 모든 버전의 객체를 보존하거나 검색 및 복원할 수 있음
- 의도하지 않은 사용자 작업 및 애플리케이션 장애에서 쉽게 복구될 수 있음
- AWS와 다른 서비스를 유기적으로 연동시켜 다양한 형태로 사용할 수도 있음
- 뛰어난 내구성 덕분에 빅데이터, 머신 러닝을 위한 데이터를 저장하거나 기업의 데이터를 영구적으로 보관하는 등 데이터를 보관하거나 분석할 때 자주 사용됨
- 웹 서버의 장치 도움 없이 S3 서비스 객체에 직접 접근할 수 있어 대규모의 이미지를 사용하는 e커머스 업무에 사용되는 이미지나 동영상을 제공할 수 있음
- 웹 서버 부하를 줄일 수 있어 서비스 안정성과 성능 향상에 크게 기여함
[문장에 대한 참고 내용] AWS와 다른 서비스를 유기적으로 연동시켜 다양한 형태로 사용할 수도 있음
e.g. 모바일과 PC에서 웹 접근 시 화면 크기가 달라서 표시 화면이 다른 것을 확인할 수 있는데, 같은 화면 크기를 표시한다면 가독성 차이로 불편함을 느낄 수 있으므로 웹에 접근할 때 사용하는 이미지를 인터페이스별로 크기를 분리하는 기능이 필요함
이 때, S3를 이용하여 사용자 인터페이스 정보를 변경하면 해당 정보를 이벤트로 발생시켜 'AWS의 람다' 서비스와 연동하여 접근 장치별 인터페이스 화면에 전달하여 동일한 내용을 확인 가능함
* S3 스토리지 클래스
- 여러 사용 사례에 맞게 설계된 다양한 스토리지 클래스를 제공함
- 여기에는 자주 접근하는 데이터를 저장하는 S3 standard와 알 수 없거나 변화하는 접근 패턴이 있는 데이터를 저장하는 S3 intelligent-tiering, 데이터 수명은 길지만 자주 접근하지 않는 데이터를 저장하는 S3 standard-IA 및 S3 one zone-IA, 데이터 수명이 제한되어 추후 삭제 예정인 데이터 및 백업을 위한 S3 glacier 등이 있음
------- 데이터에 대한 S3 수명 주기 정책을 이용한 스토리지 변화 -------► | |||
스토리지 유형 | S3 standard | S3 - IA | glacier |
AWS 데이터베이스 서비스 | S3 standard storage | S3 infrequent access standard storage |
anazon S3 glacier |
주요 특징 | 자주 액세스하는 데이터 | 액세스 빈도가 낮은 데이터 | 거의 액세스하지 않는 데이터 |
사용 사례 | 주요 사용 데이터 - 빅데이터 분석용 데이터 - 작업용 임시 백업 데이터 |
- 파일 동기화 - 데이터 백업 - 재해 복구용 데이터 |
- 장기 보존용 데이터 - 시스템 백업 |
* S3 스토리지 클래스의 종류 및 특징
1) standard
- 가장 일반적인 스토리지 클래스
- 데이터를 검색할 때 요금 및 최소 사용량에 제한 없이 사용한 만큼 비용 지불함
2) intelligent-tiering
- 객체 접근 정보가 고정되어 있지 않을 때 자동으로 빈번한 접근 그룹과 간헐적 접근 그룹에 나누어서 저장함
3) infrequent access
- 객체가 자주 사용되지는 않지만 조회가 필요할 때 사용되는 데이터를 저장하는 클래스
- 두 개의 하위 클래스로 나뉨
(1) standard-infrequent access : 최소 세 개 이상의 가용 영역에 데이터가 저장되기 때문에 내구성이 높음
(2) one zone-infrequent access : 이름처럼 하나의 가용영역에만 데이터가 저장되기 때문에 내구성이 낮음
데이터가 삭제되어도 다시 생산할 수 있는 데이터를 위한 클래스
4) S3 glacier
- 데이터 아카이브와 장기간 백업을 고려하여 만든 스토리지 클래스
- 아카이빙 데이터는 오랫동안 데이터가 저장되어 있는 것을 의미함
- 이런 아카이빙 데이터에 접근하려면 많은 시간이 소요될 수 있음
- 데이터를 다른 클래스로 옮기려면 기가바이트 당 비용이 발생하므로 주로 보관이 목적일 때 사용
5) S3 glacier deep archive
- 재사용이 거의 없는 데이터를 보관할 때 사용하는 클래스
- 일정 기간이 지나면 삭제할 데이터를 주로 보관하며, 조회하는 데 수 시간에서 수일이 소요될 수 있음
- 그 대신 데이터 보관 비용이 가장 저렴하므로 데이터 목적에 따라 매우 유용한 저장소가 될 수 있음
스토리지 클래스 | 내구성 | 가용성 | 가용 영역 수 | 최소 기간 | 사용 사례 | 고려 사항 |
S3 standard | 99.9999999% | 99.99% | 세 개 이상 | 없음 | 자주 액세스 하는 데이터 |
|
S3 intelligent- tiering |
99.9999999% | 99.99% | 세 개 이상 | 없음 | 알 수 없거나 변경되거나 예측할 수 없는 액세스 패턴이 있는 데이터 |
객체당 약간의 월별 모니터링 및 자동화 요금 |
S3 standard-IA | 99.9999999% | 99.99% | 세 개 이상 | 30일 | 수명이 길고 자주 액세스 하지 않는 데이터 |
객체와 관련된 검색 비용 |
S3 one zone-IA | 99.9999999% | 99.95% | 한 개 | 30일 | 수명이 긴 데이터에 자주 액세스하지 않는 중요하지 않은 데이터 |
- 단일 가용 영역에 데이터 저장 - S3 standard- IA보다 가격이 저렴함 |
S3 glacier | 99.9999999% | 99.99% (객체 복원 후) |
세 개 이상 | 90일 | 분에서 시간 단위로 검색 시간을 지원하는 장기간 데이터 보관 |
- 실시간 액세스 지원 불가 - 객체에 액세스 할 때 먼저 복원 필요 - 객체 복원은 수 분에서 수 시간까지 소요 |
S3 glacier deep archive |
99.9999999% | 99.99% (객체 복원 후) |
세 개 이상 | 없음 | 분에서 시간 단위로 검색 시간을 지원하는 장기간 데이터 보관 |
- 가장 저렴한 객체 스토리지 클래스 - 객체 복원은 최대 12시간 이상 필요 |
* S3 보안
- S3 버킷 접근은 일반적으로 버킷을 생성할 때 사용한 버킷 이름을 포함하여 생성된 유일한 식별자를 기반으로 언제, 어디서든 접근 가능함으로 인해 보안은 가장 중요한 부분
- AWS 자격 증명 서비스인 IAM과 밀접하게 연관되어 있음
- 밀접하게 연관되어 있기 때문에 IAM으로 접속 사용자나 데이터 접근을 관리할 수 있음
- 특정 S3 버킷 접근에 대해 허용과 거부가 발생한다면 IAM에서 접근 권한을 통제하여 일어나는 상황으로 이해
- IAM으로 사용자 및 정책별 접근 권한을 제어할 수 있지만, 접근 권한이 있는 사용자가 개별 객체에 접근할 수 있게 하는 S3만의 버킷 내 모든 객체에 대한 권한을 조정할 수도 있음
- 쿼리를 요청할 때 쿼리 문자열을 인증하여 사용자 인증 정보도 함께 보낼 수 있는데, 해당 객체에 접근할 때 이 인증 정보로 일시적 허용 여부 권한을 이용할 수 있음 (e.g. 임시 권한을 부여해서 접근하는 persign 기능)
- S3 객체는 기본적으로 외부 사용자가 접근할 수 없도록 설정되어 있고 객체 소유자와 루트 사용자만 해당 객체에 접근할 수 있으며, 외부에서 접근하려면 별도의 정책을 이용해 직접 설정해야 함
'개인공부 > AWS' 카테고리의 다른 글
[AWS] CloudFormation 기초 내용 정리 (0) | 2024.01.25 |
---|---|
[AWS] 데이터베이스 서비스 (0) | 2024.01.25 |
[AWS] 부하분산 서비스 - ELB 기능 (0) | 2024.01.21 |
[AWS] AWS 네트워킹 (0) | 2024.01.21 |
[AWS] 네트워킹 기초 정리 (0) | 2024.01.21 |