서론
AWS 웹 서비스를 구축하다 보면, EBS항목으로 요금이 청구될 때가 있습니다.
보통 EBS는 EC2 인스턴스를 생성할 때 자동으로 생성이 되는 저장소라고만 알고 있었는데요,
오늘은 EBS가 무엇인지 알아보고 요금은 어떻게 정산되는지 한번 정리를 해보도록 하겠습니다.
EBS란?
EBS란 Elastic Block Store의 약자로 일종의 하드디스크라고 생각하시면 됩니다.
보통 EC2와 비교해서 생각하면 EC2는 메모리, 그래픽카드 등 하드 디스크를 제외한 컴퓨터의 모든 부분이라고 생각하면 되며, EBS는 컴퓨터의 하드디스크라고 생각하면 됩니다.
EBS의 약자에서 Block Store라는 의미를 이해하시려면, Object Storage와 비교하시면 이해가 쉽습니다.
S3와 같은 Object Storage는 뭔가를 설치할수 없이 파일만 저장되는 저장소를 말하고, Block Store는 뭔가를 설치가 가능한 저장소를 의미합니다.
EBS의 특징
- Elastic Block Store의 약자입니다. (EC2와 함께 사용하도록 설계되어 사용하기 쉬운 고성능 블록 스토리지 서비스)
- EBS는 인스턴스가 실행 중인 동안 연결 가능한 네트워크 드라이브입니다. 즉 인스턴스와 저장소간 실제 물리적 연결은 없으며 네트워크를 통해 연결됩니다.
- EBS 볼륨을 생성할때는 특정 가용영역만 생성이 가능합니다. 한번 생성된 EBS 볼륨은 다른 region으로 옮길 수 없습니다.
- 필요한 용량에 맞게 구매가 가능합니다. 이를테면 EC2 인스턴스를 웹서버의 용도로만 쓰고 파일 저장은 S3를 사용한다면 넉넉 잡고 1GB만 구입하시면 됩니다.
- 볼륨이기 때문에 용량을 미리 결정해야 하며 따라서 원하는 양의 GB 및 상황에 따라서는 IOPS, 즉 단위 초당 Disk I/O 수를 미리 지정해야 합니다. IOPS는 다시 말하면 디스크를 접근해서 데이터를 탐색할 때 1초에 몇 번 INPUT/OUTPUT이 발생하는지를 의미합니다.
(IOPS : Input/Output Operation Per Second의 약자로 초당 입출력 횟수를 의미) - 필요에 따라서 즉시 생성 및 제거할수 있습니다.
(단 루트 디바이스일경우 분리가 불가능합니다.) - 사용한 만큼만 과금되는 종량제입니다.
- AWS 프리티어에서는 30G까지 무료입니다.
- EC2 인스턴스를 제거해도 EBS는 독립적이기 때문에 데이터가 유지됩니다.
- 인스턴스에서 데이터베이스를 실행할 때 Amazon EBS를 사용하는 것을 권장합니다.
(비휘발성 드라이브) - 다른 가용영역으로 볼륨을 옮기기 위해서는 스냅샷을 사용합니다.
- 독립형 Storage가 아니기 때문에 항상 EC2와 함께 사용됩니다.
EBS의 스냅샷
- EBS 스냅샷이란 EBS를 저장하는 효율적인 방법으로, 특정 시간에 EBS 볼륨 상태의 저장본을 뜻합니다.
- 쉽게 설명하면 EBS의 데이터 저장 상태에 대한 사진(백업본)을 찍어둔 개념이라고 생각하시면 됩니다.
- EBS의 스냅샷을 이용하면 특정시간의 저장 데이터에 대한 EBS의 복구가 가능합니다.
- 스냅샷은 OS와 별개로 데이터만 백업시키고 싶거나, 생성된 스냅샷을 기반으로 여러 종류의 AMI를 생성할 때 사용됩니다.
- 참고로 AMI는 EC2 인스턴스를 실행하기 위한 정보를 모운 단위로, EC2에 대한 세팅정보 및 인스턴스에 현재 연결된 EBS정보 등등을 가지고 있습니다. AMI는 인스턴스 설정이 복잡하거나, 설정이 완료된 인스턴스 이미지를 만들고 싶은 경우, Auto Scaling Group에서 새 인스턴스를 만드는 경우에 종종 사용된 AMI를 이용하여 현재 상태의 EC2를 복제하여 다른 계정이나 다른 리전에게 전달도 가능합니다. 제가 예전에 정리해 둔 글인 `EC2 백업 방법`을 참조하시면 조금 이해가 빠르실 수도 있습니다.
- 스냅샷의 큰 특징은 변화된 부분만 저장하기 때문에 용량을 효율적으로 사용할 수 있습니다. 예를 들어 하드디스크가 10GB라고 하면 스냅샷을 찍을 때마다 10GB가 생성되는 것이 아니라 변화된 부분이 100MB라고 하면 해당 변화된 부분만 찍어서 저장하기 때문에 효율적으로 스냅샷을 저장할 수 있습니다. (스냅샷은 기본적으로 S3에 저장된다고 합니다.)
=> 쉽게 말하면 AMI 이미지 방식은 컴퓨터 하나를 통째로 백업한다고 생각하면 되고, 스냅샷은 EBS 1개의 하드디스크 내용물만 백업하는 것으로 이해하면 됩니다.
=> AMI에는 인스턴스가 어떤 EBS 스냅샷과 연결되어 있는지에 대한 정보가 포함되고, OS나 EC2 인스턴스에 대한 정보 등이 추가적으로 포함되어 있습니다.
EBS 스토리지 종류 (gp2 vs gp3 vs io1 vs io2 vs st1 vs sc1)
EBS는 여러 종류의 Storage를 가지고 있는데요, 한번 각각의 특징에 대해서 알아보도록 하겠습니다.
먼저 아래 설명에서 부터 자주 나올 프로비저닝에 대해서 한번 정의해 보겠습니다. 프로비저닝이란 AWS에서 개발/준비 되어 있는 시스템 서비스를 제공받아 사용하는 것을 의미합니다. 즉 미리 준비되어 있는 시스템 자원을 적절하게 빌려서 사용하는 것을 의미합니다. 자세히
이제 각각의 볼륨의 특징들에 대해서 간단하게 정의해 보겠습니다.
GP2
- 범용 솔리드 스테이트 드라이브(SSD) gp2 볼륨입니다.
- 개발/테스트 환경, 짧은 지연 시간의 대화형 애플리케이션 및 부트 볼륨을 비롯한 광범위한 트랜잭션 워크로드에 적합합니다.(부트 볼륨, 짧은 지연 시간의 대화형 앱, 개발 및 테스트)
- 스토리지의 용량에 맞춰서 성능이 확장됩니다. (IOPS 또는 처리량을 지정할 수 없음, 용량에 따라 결정됨)
- 더 큰 스토리지 볼륨 크기를 프로비저닝함으로써 애플리케이션의 초당 입출력 작업수 (IOPS) 및 처리량을 향상 시킬수 있습니다.
- gp2에서의 처리량은 IOPS의 크기에 따라 결정됩니다.
(ex) 16,000 IOPS일 때 최대 처리량은 250 MiB) - 기본적으로 100 IOPS를 제공하고, 1GB당 3 IOPS를 제공합니다.
- 최대 IOPS는 16,000 IOPS이며 그 이상 IOPS가 증가하지 않습니다.
- 시스템이 요구하는 적정량의 IOPS를 위해 스토리지의 용량을 필요 이상으로 증가시킬 수밖에 없는 단점이 있습니다.
- 고성능의 IO가 필요한 시스템에서는 불필요하게 더 많은 스토리지 볼륨이 요구됩니다.
GP3
- 범용 솔리드 스테이트 드라이브(SSD) gp2 볼륨입니다.
- 낮은 비용에 높은 성능을 필요로 하는 광범위한 애플리케이션에 이상적입니다. 높은 성능이 필요하지만 굳이 많은 용량이 필요하지 않은 경우도 많은데 gp3는 용량과 무관하게 성능을 프로비저닝 할 수 있게 합니다. (가상 데스크탑, 중간 크기 단일 인스턴스 데이터베이스, 개발 및 테스트)
- 스토리지 용량과 관계없이 성능을 프로비저닝할 수 있게 해 주며 기존 gp2 볼륨 유형보다 가격이 20% 정도 더 저렴합니다.
- 추가적으로 스토리지 용량을 늘릴 필요 없이 필요한 IOPS와 처리량을 독립적으로 늘릴 수 있습니다.
- 볼륨 크기와 관계없이 3,000 IOPS의 기준 성능과 125Mib/s의 처리량을 제공합니다.
- 최대 16,000 IOPS, 최대 처리량은 1,000MiB/s 까지 확장할 수 있습니다.
- gp3의 최고 성능은 gp2의 최대 처리량보다 4배 빠릅니다.
io1
- 프로비저닝된 IOPS SSD 볼륨입니다.
- I/O가 많이 발생하는 NoSql 및 관계형 데이터베이스에 적합한 모델입니다.(HBase, Vertica, Cassandra 등)
- 볼륨 크기별로 최대로 설정할 수 있는 IOPS 비율이 1:50 으로 정해져 있습니다. 예를 들어 io1 타입으로 100GiB으로 설정했다면 IOPS는 5,000IOPS 까지 설정할 수 있습니다.
- 최대 IOPS는 64,000 IOPS이기 때문에 그 이상은 볼륨을 늘리더라도 IOPS가 증가하지 않습니다.
io2
- 프로비저닝된 IOPS SSD 볼륨입니다.
- io1과 비교하여 내구성이 100배 높습니다.
- io2는 높은 내구성을 요구하면서 I/O가 많이 발생하는 데이터 베이스에 적합한 모델입니다. (Oracle, Microsoft SQL 서버, IBM DB2)
- 볼륨 크기별로 최대로 설정할 수 있는 IOPS 비율이 1:500 으로 정해져 있습니다. 예를 들어 io1 타입으로 100GiB으로 설정했다면 IOPS는 50,000 IOPS까지 설정할 수 있습니다.
- 최대 IOPS는 64,000 IOPS이기 때문에 그 이상은 볼륨을 늘리더라도 IOPS가 증가하지 않습니다.
st1
- 처리량 최적화 HDD 기반 볼륨입니다.
- 부트볼륨으로 사용할 수 없습니다. 즉 EC2가 생성될 때 루트 볼륨과 연결할 수 없습니다.
- 대규모 스트리밍 워크로드에 이상적입니다.(처리량 최적화 HDD)
- 대규모 데이터 세트와 큰 I/O가 있으면서 액세스 횟수가 많고 처리량 집약적인 워크로드에 적합한 모델입니다. (빅 데이터, 데이터 웨어하우스, 로그 처리)
- IOPS가 아닌 처리량으로 성능을 정의하는 저비용 마그네틱 스토리지를 제공합니다.
sc1
- 액세스 빈도가 낮은 워크로드를 위해 설계된 최저 비용 HDD 볼륨입니다.
- 부트볼륨으로 사용할 수 없습니다. 즉 EC2가 생성될 때 루트 볼륨과 연결할 수 없습니다.
- 모든 EBS 볼륨 유형 중 GB당 비용이 가장 저렴합니다
- 콜드 데이터 세트가 있고 액세스 빈도가 낮은 워크로드에 적합합니다. 즉 덜 액세스 되고 빠르게 액세스 할 필요가 없는 데이터를 보관하기 위한 용도로 사용되는 것을 의미합니다.
IOPS과 Throughput(처리량)
IOPS란
- IOPS(Input/Output Operations Per Second, IOPS)는 초당 처리되는 IO의 개수(IO/s)를 의미합니다.
- 보통 저장장치의 속도를 나타내는 측정단위로 사용됩니다.
- IOPS의 측정값은 디스크에 대한 임의접근(Random Access)와 순차접근(Sequential Access)에 따라 다르며 읽기 동작, 쓰기 동작에 따라 다릅니다. 이외에 성능측정 프로그램과 CPU, 또는 메모리에 따라 차이가 나기도 합니다.
- 최적 I/O 크기와 맞지 않는 순차/랜덤 작업이 진행될 경우 EBS는 IOPS가 달성되기 전에 처리량 한도에 도달할 수 있습니다.
Throughput(처리량)이란
- 처리량은 초당 처리되는 바이트의 량을 의미합니다. 예를 들어 단위는 B/s, KB/s, MB/s 가 됩니다.
- 가장 많이 표현되는 단위로는 MBPS (MB/s) 입니다.
- 보통 IOPS와 같이 저장장치 및 성능을 표현하는 단위로 많이 표시됩니다.
사실 IOPS도 일종의 처리량(Throughtput)이라고 표현할 수 있지만 혼용해서 사용하기 때문에 MB/s의 의미로 쓰인 쓰루풋은 BandWidth라고 표현하는 것이 좋고 아니면 Throughput (MB/s)와 같이 단위를 써주는 것이 좋다고 합니다.
IOPS도 Throughput (IO/s) 라고 표현할 수 있는데, 그렇게 표현하지 않고 보통 IOPS로 표현하는 이유는 IOPS가 스토리지의 가장 대표적인 성능 지표이기 때문입니다. 가장 중요한 성능 팩터이다 보니 단위 자체가 대표성을 띄며 고유 명사처럼 사용된 것으로 이해하면 됩니다.
일례로, 기업의 정보시스템의 처리량도 Throughput 대신 TPS(Transaction per sec)로 표기하는 것과 같이, 정보시스템에서는 쓰루풋 개념으로 MB/s를 사용하지 않습니다. 왜냐하면 MB/s가 시스템 처리량을 대표할 수 없기 때문입니다.
즉 처리량은 어떤 시스템의 성능을 측정하느냐에 따라 의미가 달라질 수 있는 모호한 단위이기 때문에 정확한 단위를 보고 의미를 유추해야 할 것 같습니다.
EBS 요금분석
이번에는 AWS의 공식문서를 바탕으로 EBS의 요금을 한번 분석해 보도록 하겠습니다.
GP3
- 아시아 태평양 서울 기준으로 gp3 스토리지 용량 1GB당 월 0.0912$(약 한화 120원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 IOPS가 3,000 IOPS 이상일 때는 추가한 IOPS에 대해서 월 0.0057$(약 한화 8원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 처리량이 125MB/s 이상일 때는 추가한 처리량(Throughput)에 대해서 MB/s당 월 0.045$ (약 한화 59원 : 2023년 2월 기준) 정도가 부과됩니다.
GP2
- 아시아 태평양 서울 기준으로 gp2 스토리지 용량 1GB당 월 0.114$(약 한화 149원 : 2023년 2월 기준) 정도가 부과됩니다.
IO2
- 아시아 태평양 서울 기준으로 io2 스토리지 용량 1GB당 월 0.1278$(약 한화 168원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 32,000 IOPS 까지는 IOPS당 월 0.067$(약 한화 88원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 32,001 ~ 64,000 IOPS 까지는 IOPS당 월 0.047$(약 한화 62원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 64,000 IOPS 초과 시는 IOPS당 월 0.033$(약 한화 43원 : 2023년 2월 기준) 정도과 부과됩니다.
IO1
- 아시아 태평양 서울 기준으로 io1 스토리지 용량 1GB당 월 0.1278$(약 한화 168원 : 2023년 2월 기준) 정도가 부과됩니다.
- 아시아 태평양 서울 기준으로 추가한 IOPS에 따라 0.0666$(약 한화 88원 : 2023년 2월 기준) 정도가 부과됩니다.
ST1
- 아시아 태평양 서울 기준으로 st1 스토리지 용량 1GB당 월 0.051$(약 한화 67원 : 2023년 2월 기준) 정도가 부과됩니다.
SC1
- 아시아 태평양 서울 기준으로 sc1 스토리지 용량 1GB당 월 0.0174$(약 한화 29원 : 2023년 2월 기준) 정도가 부과됩니다.
마무리
EBS를 조금씩 공부하고 알아가면서, 조금 정리하긴 힘들긴 했지만 AWS의 스토리지에 대해서 좀 더 깊게 알수 있는 시간이 된것 같습니다.
IOPS나 처리량에 대한 개념도 이번에 요금정책을 공부하면서 알게되었는데요, 확실히 글로 정리할 때 개념이 애매한 부분들이 확실하게 정리가 되는 것 같습니다.
앞으로도 AWS에 대한 내용들을 차근차근 정리해갈 생각입니다.
감사합니다. :))
참고
신규 발표된 EBS gp3로의 전환
IOPS 계산 방법
'서버 인프라, 백엔드 > 아마존 (AWS)' 카테고리의 다른 글
AWS : Cloudfront + S3로 mpeg-dash 영상 업로드 후 테스트해보기 (with FFmpeg) (0) | 2023.10.18 |
---|---|
AWS : 정적 사이트 배포 하는 4가지 방법 (feat: cloudfront / nginx /amplify / netlify) (1) | 2023.04.25 |
AWS : 계정들간의 Route53 도메인 공유하기 (0) | 2022.08.10 |
AWS : EC2 / S3 / CloudFront 트래픽 요금 분석 (2) | 2021.12.13 |
AWS : A 레코드와 Cname의 차이 (0) | 2021.12.08 |