1. 스토리지 분류
블록 스토리지
- 데이터를 일정 크기의 블록으로 나누어 저장
- 호스트에서 파일 시스템 생성
- Storage Area Network (SAN)
- 호스트에서 직접 파일을 액세스하고 기록하며 빠른 성능을 요하는 경우
파일 스토리지
- 디렉터리 구조로 파일을 저장
- 스토리지 단에서 파일 시스템을 생성
- Network Attached Storage (NAS)
- 여러 대의 서비스들이 데이터를 공유하고 공유해서 사용해야 하는 경우
오브젝트 스토리지
- REST 기반의 API 호출을 통해 데이터에 접근
- HTTP 프로토콜
- 대량의 데이터를 저장하고 또는 앱 컨텐츠로 사용되어야 하거나 다수의 서버에서 해당 데이터에 접근해야 하는 경우
2. EBS
EBS 란
- Amazon Elastic Block Store (EBS)
- EC2 인스턴스에 사용할 수 있는 블록 수준 스토리지 볼륨 제공
- 이러한 볼륨 위에 파일 시스템 생성하거나 하드 드라이브와 같은 블록 디바이스를 사용하는 것처럼 볼륨 사용 가능
- 인스턴스에 연결된 볼륨 구성을 동적으로 변경 가능
EBS 사용 권장
- 데이터에 빠르게 액세스하고 장기적으로 지속해야 하는 경우
- EBS 볼륨은 빈번한 업데이트가 필요하고 자주 액세스해야 하는 파일시스템, DB 또는 애플리케이션의 스토리지로 사용하기에 특히 적합
- 단일 AZ 내 여러 서버에 복제
- 특정 시점에 대한 볼륨 Snapshot 가능 -> S3 저장 되어 AZ에 자동 복제
EBS 기능
- 특정 AZ에서 EBS 볼륨을 생성한 다음 동일한 AZ에 있는 인스턴스에 연결
- AZ 외부에 볼륨을 제공하기 위해 스냅샷을 생성 후 해당 지역 어디에서나 새 볼륨으로 복원 가능
- 스냅샷을 다른 지역에 복사한 뒤 새 볼륨에 복원하면 지리적 확장, 데이터 센터 마이그레이션 및 재해 복구를 위해 여러 AWS 리전 쉽게 활용 가능
- 볼륨 유형
SSD(Solid State Drive) | HDD(Hard Disk Drive) | |||
볼륨 유형 | EBS 프로비저닝된 IOPS SSD(io1) | EBS 범용 SSD(gp2)* | 처리량 최적화 HDD(st1) | 콜드 HDD(sc1) |
간략한 설명 | 지연 시간에 민감한 트랜잭션 워크로드 | 다양한 트랜잭션 워크로드 위한 가격과 성능 균형 | 자주 액세스하고 처리량 집약적 워크로드 | 액세스 빈도가 낮은 워크로드 |
사용 사례 | I/O 집약적 NoSQL 및 관계형 DB | 부트 볼륨, 짧은 지연 시간의 대화형 앱, 개발 및 테스트 | 빅 데이터, 데이터 웨어하우스, 로그 처리 | 일별 스캔 횟수가 적은 콜드 데이터 |
볼륨 크기 | 4GB ~ 16TB | 1GB ~ 16TB | 500GB ~ 16TB | 500GB ~ 16TB |
주요 성능 특성 | IOPS | IOPS | MB/s | MB/s |
- 암호화된 볼륨으로 EBS 볼륨을 생성하여 규제/감사 데이터 및 애플리케이션에 대한 다양한 저장시 데이터 암호화 요구사항 충족 가능
- 대역폭, 처리량, 지연 시간, 평균 대기열 길이 등의 성능 지표가 AWS 콘솔을 통해 제공
EBS 볼륨
- 내구성이 있는 블록 수준 스토리지 디바이스, 인스턴스 연결 가능
- 볼륨의 크기를 동적으로 늘리고 프로비저닝된 IOPS 용량을 수정하며 볼륨 유형 변경 가능
- 데이터 가용성 : EBS 볼륨을 생성하면 단일 하드웨어 구성 요소의 장애로 인한 데이터 손실을 방지하기 위해 해당 AZ내에 자동으로 복제
EBS 스냅샷(Snapshot)
- 스냅샷을 만들어 S3에 EBS 볼륨의 데이터를 백업
- 스냅샷은 증분식 백업이어서 마지막 스냅샷 이후 변경된 디바이스의 블록만이 저장
- 증분 스냅샷의 작동 방법 : 이 세 스냅샷에 필요한 총 스토리지는 16GiB 임
- 스냅샷 복사, 공유 및 리전간 복제 : AWS 계정 간에 스냅샷 공유 가능 및 공유 된 스냅샷의 복사본 만들기 가능
그 외
- EBS 암호화 , 탄력적 볼륨 , EBS 성능 , CloudWatch Metric
3. EFS
EFS 란
- AWS 와 온프레미스에서 사용할 수 있는 확장 가능하고 탄력적 NFS 파일시스템
- 애플리케이션을 중단하지 않고 온디맨드 방식으로 페타바이트 규모까지 자동 확장 축소됨
- NFS(v4.1 v4.0) 프로토콜 지원 - 동시에 액세스 가능으로 공통 데이터 원본을 서버들에 제공
- EFS 파일 시스템은 다중 가용 영역에 걸쳐 데이터와 메타 데이터를 저장
- 데이터 일관성 및 파일 잠금 등 파일 시스템 액세스 기능 제공
- 파일 시스템 암호화 제공 - 전송 중 암호화, 유휴 시 암호화 (모든 데이터와 메타데이터 암호화)
- 두 가지 성능 모드 제공 : 기본 범용 성능, 기본 버스팅 처리량 모드
EFS 작동 방식
- 동일 리전에 여러 가용영역(고가용성)에서 액세스 가능 - 가용 영역 별 각각 EFS IP와 공통 DNS 주소 제공
EFS 마운트
# EFS DNS 이름
availability-zone.file-system-ID.efs.aws-region.amazonaws.com file-system-ID.efs.aws-region.amazonaws.com
# 인스턴스에 마운트
sudo mount -t efs fs-12345678:/ efs
# 전송 중 데이터 암호화 사용 시
sudo mount -t efs -o tls fs-12345678:/ efs
그 외
- 보안 그룹 , efs-utils , EFS Mount , EFS Auto Mount , EFS 성능
4. S3
S3 란
- Amazon Simple Storage Service(=S3)
- 인터넷용 객체(Object) 기반 무제한 스토리지 서비스
- 데이터는 버킷 내에 객체로 저장
- 99.999999999% (9가 11개)
- 연간 99.99% 가용성
- 버킷 및 객체에 대한 세분화된 액세스
- 사용한 만큼 과금(pay-as-you-go)
S3 장점
- 버킷 만들기 : 버킷은 데이터 스토리지를 위한 S3의 기본 컨테이너
- 버킷 저장 : 버킷에 데이터 무한정 저장. S3 버킷에 객체를 원하는 만큼 업로드 가능, 각 객체는 최대 5TB 가능
- 데이터 다운로드
- 권한 : 데이터를 S3버킷으로 업로드 또는 다운로드 하려는 사용자에게 액세스 권한을 부여하거나 해당 권한 거부
- 표준 인터페이스 : 표준 기반 REST API 또는 AWS SDK 사용
S3 개념
- 버킷 : 데이터 스토리지를 위한 S3의 기본 컨테이너. 객체는 어떤 버킷에 포함됨. 리전에서 생성됨
- 객체 : S3에 저장되는 기본 매체.
- 객체는 객체 데이터와 객체 메타데이터로 구성. 메타데이터는 객체를 설명하는 이름-값 페어의 집합.
- 객체를 저장할 때 사용자 정의 메타데이터를 지정할 수도 있음. 객체는 키(이름) 및 버젼 ID를 통해 버킷 내에서 고유하게 식별
- 키 : 버킷 내 객체의 고유한 식별자. 버킷 내 모든 객체는 정확히 하나의 키를 가짐. "버킷+키+버전"과 객체 자체 사이의 기본 데이터 맵으로 생각할 수 있음
- https://doc.s3.amazonaws.com/2006-03-01/AmazonS3.wsdl 에서 doc 는 버킷의 이름이고 2006-03-01/AmazonS3.wsdl 는 키
- Region : 버킷을 저장할 지리적 AWS 리전을 선택
- S3 데이터 일관성 모델 : S3 버킷에 있는 객체에 대해서 여러 서버로 데이터를 복제함으로 고가용성을 구현하고 데이터 일관성 모델 제공
S3 버킷
- S3 버킷 이름은 전역 수준에서 고유하며, 네임스페이스는 모든 AWS 계정이 공유
- 버킷을 만든 후에는 이름 또는 리전을 변경할 수 없음
- 버킷 이름 지정 규칙
- 버킷 이름은 3자에서 63자 사이
- 버킷 이름은 소문자, 숫자, 점(.) 및 하이픈(-)으로만 구성
- 버킷 이름은 문자 또는 숫자로 시작하고 끝남
- 버킷 이름은 IP 주소 형식(예: 192.168.5.4)을 사용하지 않음
- 최상의 호환성을 위해 정적 웹 사이트 호스팅에만 사용되는 버킷을 제외하고 버킷 이름에 점(.)을 사용하지 않는 것이 좋음
- S3 는 사용자가 지정한 리전에 버킷을 생성. 버킷에 객체는 명시적으로 다른 리전으로 보내지 않는 한 해당 리전을 벗어나지 않음 → 법적 규제 만족
- AWS 계정 각각에 대해 최대 100개 버킷을 만들 수 있음. 증가 요청 시 최대 1000개 생성 가능
- 버킷 액세스
- 가상 호스팅 방식 액세스 : 정적 웹사이트 접속 시
- 형식 : https://bucket-name.s3.Region.amazonaws.com/key-name
- 예시 : https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png
- S3:// 를 사용하여 버킷 액세스 : 일부 AWS 서비스는 S3://bucket 를 사용하여 S3 버킷을 지정해야 함
- 형식 : S3://bucket-name/key-name
- 예시 : S3://mybucket/puppy.jpg
- S3 액세스 포인트를 통해 버킷 액세스 : 가상 호스트 스타일의 주소로 접속
- 형식 : https://AccessPointName-AccountId.s3-accesspoint.region.amazonaws.com
- 가상 호스팅 방식 액세스 : 정적 웹사이트 접속 시
Storage Class - 링크
S3 접근 통제
- 액세스 제어 목록 : 액세스 제어 목록(ACL)을 사용하여 버킷 및 객체 각각에 대한 액세스를 제어
- 버킷 정책 : 버킷 정책은 S3 작업, 요청자, 리소스 및 요청의 여러 측면(예: IP 주소)을 비롯한 다양한 조건을 기반으로 버킷 및 객체에 대한 중앙 집중식 액세스 제어를 제공
- 정책은 액세스 정책 언어로 표현되며 중앙 집중식 권한 관리 가능. 버킷에 연결되는 권한은 해당 버킷의 모든 객체에 적용
- 개별 객체에 대해서만 권한을 추가(부여) 할 수 있는 액세스 제어 목록과 달리, 정책은 버킷 내 모든 객체 또는 객체의 하위 세트에 대해 권한을 추가 또는 거부
- 버킷에 포함된 임의 개수의 객체에 대한 권한을 설정
- 버킷 소유자만 정책을 버킷에 연결 가능. 액세스 정책 언어로 작성되는 정책은 다음을 기반으로 요청을 허용 또는 거부
- S3 버킷 작업(예. PUT ?acl) 및 객체 작업(예: PUT Object 또는 GET Object)
- 요청차
- 정책에 지정된 조건
- 계정은 GetObject, GetObjectVersion, DeleteObject 또는 DeleteBucket과 같은 특정 Amazon S3 작업을 기반으로 액세스를 제어
- 조건은 IP 주소, IP 주소 범위(CIDR 표기법 사용), 날짜, 사용자 에이전트, HTTP 참조자 및 전송(HTTP 및 HTTPS) 등
- IAM : IAM을 사용하여 S3 리소스에 대한 액세스를 관리
5. CloudFormation
CloudFormation이란
- AWS Infrastructure를 개략적으로 설명하여 선언하는 방법(Infrastructure as Code - IaC)
- Cloudformation은 정의한 대상에 대해 자동으로 순서대로 자원을 생성
- 아키텍처의 전체 정의가 하나의 파일에 있고 AWS에 제출하여 AWS가 모든 리소스를 관리
CloudFormation 이점
1. Infrastructure as code
- 수동으로 리소스를 만들지 않아도 된다.
- Github을 활용하여 제어
- 코드를 통하여 인프라 변경사항을 검토 가능
2. Cost
- 리소스 비용을 쉽게 추정할 수 있다.
- 필요한 경우만 CloudFormation을 배포하고 필요하지 않을 경우 삭제하여 비용 절감 예) 오후 5시에 자원을 삭제하고, 다음날 오전 8시에 자원을 생성
3. Productivity
- 클라우드 상 인프라를 즉시 삭제하거나 재 생성이 가능
- Diagram 기능으로 Template 구성 가능 (Automated Generation)
- Declarative Programming (선언적 프로그래밍)
4. Don’t re-invent the wheel (불필요하게 처음부터 다시 하지 마라!!!)
- 웹 상에 기존 Template을 활용하라.
- 다양한 정보와 문서가 많이 있다.
'Infra > cloud' 카테고리의 다른 글
[AFOS] 4주차 스토리지 서비스 - 실습 : EFS (0) | 2021.07.13 |
---|---|
[AFOS] 4주차 스토리지 서비스 - 실습 : EBS (2) | 2021.07.13 |
[AFOS] 3주차 네트워킹 서비스 - 실습 : VPC 구성(프라이빗 서브넷) (0) | 2021.07.09 |
[AFOS] 3주차 네트워킹 서비스 - 실습 : VPC 구성(퍼블릭 서브넷) (0) | 2021.07.09 |
[AFOS] 3주차 네트워킹 서비스 (0) | 2021.07.09 |