EBS Volume
- 네트워크 드라이브 (물리 드라이브 X, 네트워크를 통해 연결된 드라이브)
- 네트워크로 연결되어 있으므로 일시적인 지연이 있을 수 있음
- 네트워크 드라이브이므로 분리 및 다른 인스턴스에 연결 가능
- CCP 레벨에서는 하나의 EBS는 하나의 EC2 인스턴스에만 마운트 가능
- 하나의 EC2에 여러 EBS는 가능
- Associate 레벨에서는 일부 EBS 다중 연결 가능
- 특정 AZ에 고정됨. 다른 AZ로 연결 불가능
- 스냅샷을 이용하면 가능
- Volume이므로 용량을 미리 결정해야함(GBs, IOPS[단위 초당 전송 수]). 이후 용량 변경 가능
- EC2 인스턴스 생성 시 콘솔에서 EBS 볼륨을 생성하면 종료 시 삭제 옵션 설정 가능 (Delete on Termination attribute)
- EC2 인스턴스 종료 시 EBS 볼륨이 자동으로 삭제됨 (Root EBS 볼륨은 디폴트)
EBS Snapshot
- EBS Volume의 특정 시점에서의 백업
- 이를 위해 EBS를 EC2 인스턴스에서 분리할 필요는 없지만, 분리를 권장
- 다른 가용영역 or 다른 리전에 복제 / 복원 가능
- EBS 스냅샷 아카이브
- 스냅샷을 최대 75% 저렴한 아카이브 티어로 옮기는 기능
- 아카이브 복원 시 24 - 72시간 소요 (즉시 X)
- EBS 스냅샷을 위한 휴지통
- EBS 스냅샷 영구삭제가 아닌 임시로 휴지통에 삭제 가능 (실수로 삭제 방지)
- 보관기간 1일 ~ 1년까지 설정 가능
- 빠른 스냅샷 복원
- 스냅샷이 매우 클 때 EBS 볼륨을 초기화 하거나, 매우 빠르게 인스턴스화 해야 하는 경우 유용
- 비용 높음
EBS Volume 유형
- 크기, 처리량, IOPS (단위 초당 IO작업 수)으로 결정됨
- gp2 / gp3 (SSD)
- General Purpose
- 다양한 워크로드에 대해 가격 / 성능의 절충안
- gp2
- 짧은 지연시간, 효율적인 비용
- 시스템 부팅 볼륨, 가상 데스크톱, 개발 / 테스트 환경에서 사용하기 적합
- 1GiB - 16 TiB
- 3000 IOPS
- 최대 IOPS 16000
- 볼륨 크기와 IOPS가 연결되어 있음
- GB 당 3 IOPS
- 5334 GB일 때 MAX IOPS 초과됨
- gp3
- 최신 세대 볼륨
- 3000 IOPS 및 125 MiB/s 처리량
- 볼륨 크기와 IOPS가 연결되어 있지 않음.
- 16000 IOPS 및 1000 MiB/s 까지 증가 가능 (IOPS, 처리량 독립적으로 설정 가능)
- io1 / io2 (SSD)
- 최고 성능
- 미션 크리티컬, 지연시간 낮은 대용량 워크로드에 필요
- st1 (HDD)
- 저비용 HDD 볼륨
- 잦은 접근, 처리량이 많은 워크로드에 필요
- 빅데이터, 데이터 웨어하우징 로그 처리 적합
- sc1
- 최저비용 HDD 볼륨
- 접근 빈도가 낮은 워크로드
- 콜드 HDD
- EC2 인스턴스에는 gp2/gp3, io1/io2만이 부팅 볼륨으로 사용 가능 (루트 OS가 실행될 위치)
EBS Volume Provisioned IOPS (PIOPS) SSD
- IOPS 성능이 중요한 비즈니스 애플리케이션 or 16000 IOPS 이상이 필요한 애플리케이션에 적합
- 일반적으로 DB 워크로드에 적합
- gp2 / gp3 볼륨을 io1 / io2 볼륨으로 바꾸는 것
- 4 GiB - 16 TiB
- Nitro EC2 인스턴스에 대해 최대 64000 IOPS / Nitro 아닌 경우 32000 IOPS
- gp3 볼륨과 같이 IOPS를 볼륨 크기와 독립적으로 설정 가능
- io2는 io1과 동일한 비용으로 내구성, 기가 당 IOPS 수가 더 높음
EBS Multi-Attach (다중연결)
- 하나의 EBS 볼륨을 동일한 AZ의 여러 EC2 인스턴스에 연결 가능 (최대 16개의 EC2 인스턴스 연결 가능)
- io1 / io2 타입만 가능
- 클러스터를 인식할 수 있는 파일시스템을 사용해야 함 (XFS, EX4가 아닌)
- 각 인스턴스는 고성능 볼륨에 대한 전체 읽기/쓰기 권한을 가짐 (동시에 읽기/쓰기 가능)
- 사용사례
- 클러스터된 리눅스 애플리케이션의 가용성 증가 (ex. Teradata)
- 애플리케이션에서 동시 쓰기 작업을 관리하는 경우
EFS (Elastic File System)
- 관리형 NFS (네트워크 파일 시스템)
- NFS이므로 많은 EC2 인스턴스 (수백개)에 마운트 가능
- 서로 다른 AZ의 EC2 인스턴스에도 가능
- 고가용성, 고확장성, 고비용 (gp2 EBS 볼륨의 3배)
- 사용량에 따라 비용 지불 (용량 프로비저닝 필요없음)
- 사용 사례
- 콘텐츠 관리, 웹서비스, 데이터공유, 워드프레스
- 내부적으로 NFSv4.1 프로토콜 사용
- EFS에 대한 액세스 제어를 위한 보안그룹 설정 필요
- Window가 아닌 리눅스 기반 AMI와만 호환
- KMS를 사용해 EFS 드라이브에서 미사용 데이터 암호화 활성화 가능
- 리눅스 표준 파일 시스템인 POSIX 시스템 사용. 표준 파일 API 존재
EFS 옵션 설정
- EFS Scale
- 수천개의 동시 NFS 클라이언트, 10GB/s 이상의 처리량
- 페타바이트 규모의 NFS 자동 확장 가능
- Performance Mode
- General Purpose (기본값) : 웹서버, CMS와 같이 지연시간에 민감한 경우 사용
- MAX I/O : 처리량 최대화. 지연시간이 더 길지만 처리량 크고 병렬성 높음 (빅데이터 애플리케이션, 미디어처리)
- Throughput Mode
- Bursting : 높은 처리량 (스토리지 늘어날수록 높은 처리량)
- Provisioned : 스토리지 크기에 관계없이 처리량 설정 가능
- Elastic : 워크로드에 따라 처리량 자동 확장 가능 (워크로드 예측 불가능 시 유용)
- Storage Class
- Storage Tiers : 며칠 후 파일을 EFS-IA 계층으로 옮길 수 있는 기능(비용 절감)
- Standard : 자주 액세스하는 파일을 위한 계층
- EFS-IA : 자주 액세스하지 않는 파일을 위한 계층. 파일 검색 시 비용 발생. 저장 시 비용 낮아짐
- Availability and durability
- Standard : 다중 AZ, 프로덕션 환경 유용
- One Zone : 단일 AZ, 개발 환경 유용, 백업 사용 기본값, EFS-IA와 호환 안됨 (EFS One Zone-IA)
- 90% 비용 절감
- Storage Tiers : 며칠 후 파일을 EFS-IA 계층으로 옮길 수 있는 기능(비용 절감)
AMI (Amazon Machine Image)
- 사용자 지정(customization) EC2 인스턴스
- AWS에서 지정한 AMI, 사용자 지정 AMI 사용 가능
- 각 소프트웨어 구성에 대해 OS 정의 및 설정, 모니터링 도구 설정 등을 자체적으로 AMI 생성 시 부팅, 구성 시간 단축
- EC2 인스턴스에 설치하고자 하는 소프트웨어가 AMI를 통해 사전에 패키징됨
- 특정 리전에 맞춰 구축해놓고 원하는 리전에 복사해 사용 가능
- AWS Marketplace에서 다른 사용자가 만든 AMI 구매 가능
- 이를 활용해 다른 리전에 EC2 인스턴스 사본을 빠르게 생성 가능
- Region1에서 EC2 인스턴스 생성 -> 해당 EC2 인스턴스 AMI 생성 -> Region2에서 해당 AMI를 복사해 EC2 인스턴스 생성
EC2 Instance Store
- EBS의 성능보다 더 높은 성능을 요구할 때, EC2 Instance Store 활용 가능 (인스턴스의 물리 디스크에 위치하는 SSD 저장 장치)
- EC2 인스턴스 중지 또는 종료 시 데이터 유실 (= 임시 스토리지, 단기 데이터 보관에 유용)
- 버퍼, 캐시, 스크래치 데이터, 임시 데이터 등 자주 변경되는 정보의 임시저장에 사용
- 장기 스토리지는 EBS가 적합
- 사용 시 필요에 따라 백업 or 복제 필요
- EC2 인스턴스 장애 시 인스턴스 스토어도 장애 발생
Reference
'Programming' 카테고리의 다른 글
[AWS, Certified Developer Associate] ASG (0) | 2024.04.29 |
---|---|
[AWS, Certified Developer Associate] Load Balancer (0) | 2024.04.29 |
[AWS, Certified Developer Associate] EC2 - 정의, 인스턴스 유형, 보안그룹 (0) | 2024.04.28 |
[AWS, Certified Developer Associate] IAM (0) | 2024.04.28 |
[시스템 설계: 한번에 인터뷰 합격하기] 샤딩(Sharding) & RDB vs NoSQL (1) | 2024.03.23 |