AWS EBS와 IOPS에 대한 설명.
AWS 에서는 EBS라는 볼륨 장치를 제공하고 있습니다.
이 볼륨 장치 종류는 다음과 같습니다.
- Solid State Drive(SSD) 볼륨
- 하드 디스크 드라이브(HDD) 볼륨
- 이전 세대 볼륨
이렇게 구성되어 있고 선택할 수 있습니다.
여기서 알아볼 건 가장 많이 사용되는 SSD볼륨 입니다.
SSD볼륨은 크게 2가지 형태로 나뉩니다.
- 범용 SSD 볼륨
- Provisioned IOPS SSD 볼륨
이것들에 대해 자세히 알아 봅시다.
그 전에 IOPS에 대해 알아보고 넘어갑시다.
1. IOPS
IOPS (Input/Output Operations Per Second)는 EBS 볼륨의 성능을 측정하는 중요한 지표 중 하나로,
초당 입출력 작업 수를 나타냅니다. 즉, 높으면 높을수록 파일의 읽고 쓰는게 빨라진다는 뜻입니다.
또한 IOPS를 계산할 때 사용하는 어플리케이션이나 데이터베이스의 I/O 최대크기를 확인해야 합니다.
예를들어서 EC2같은 경우는 아래 항목을 CloudWatch의 지표를 통해 분석한 후 계산해야 합니다.
- Read IOPS: 읽기 요청의 수
- Write IOPS: 쓰기 요청의 수
- Read Throughput: 읽기 작업의 전체 바이트 수
- Write Throughput: 쓰기 작업의 전체 바이트 수
여기서 읽기는 Read Throughput / Read IOPS
쓰기는 Write Throughput / Write IOPS
이렇게 나온 두 결과값을 통해 전체 평균 I/O 크기를 구할 수 있습니다.
(읽기 I/O 크기 + 쓰기 I/O 크기) / 2
그리고 보통 I/O의 크기는 4KB, 8KB, 16KB, 32KB ... 이렇게 구성 됩니다.
예를 들면, 매초 102,400KB (100MB)의 읽기 동작이 필요한 애플리케이션인 경우 16KB 페이지 크기의 데이터 베이스를 사용할 경우 초당 6,400 번의 읽기 동작을 해야 합니다. 즉 6,400 IOPS 이상의 성능을 가진 EBS볼륨이 필요합니다.
하지만 EC2에 Mount를 할 때 RAID(Redundant Array of Independent Disks)
구성을 하게 된다면 IOPS의 전채적인 성능을 끌어올릴 수 없을수도 있습니다.
이에 대해서는 나중에 자세하게 설명하겠습니다.
결론은 EC2에 적절한 EBS IOPS를 설정하기 위해선 EC2에서 사용하는 Read, Write를 모니터링한 후,
최대 I/O를 구해서 IOPS를 설정해야 효율적으로 사용할 수 있습니다.
2. 범용 SSD 볼륨
범용 SSD에는 gp2, gp3가 있습니다.
gp3가 최신 버전이며 gp2보다 같은 성능 대비 20% 저렴하므로 gp3를 권장하고 있습니다.
여기서 gp는 (General Purpose)의 약자로 범용적으로 사용하기 적합한 볼륨 종류 입니다.
우선 gp2, gp3의 비교 표 입니다.
볼륨 유형 | gp3 | gp2 |
볼륨 크기 | 1GiB - 16TiB | 1GiB - 16TiB |
기본/기준 IOPS | 3000 | GiB당 3 IOPS (최소 100 IOPS) 에서 최대 16,000 IOPS까지 지원합니다. 1TiB보다 작은 볼륨도 최대 3,000IOPS까지 버스트할 수 있습니다. |
최대 IOPS/볼륨 | 16,000 | 16,000 |
기본/기준 처리량 | 12MiB/s* | 처리량 한도는 볼륨 크기에 따라 128MiB/s~250 MiB/s입니다. |
최대 처리량/볼륨 | 1,000MiB/s | 250MiB/s |
가격 | 월 3,000IOPS는 무료 0.08 달러/GB, 프로비저닝된 IOPS는 월 3,000달러 이상, 프로비저닝된 IOPS는 0.005달러/초, 125MiB/s 이상은 무료, 프로비저닝된 MIB/월 0.04달러는 125MiB/s를 초과하면 월 0.04달러/초 | 월 0.10 달러/기가바이트 |
gp2는 최소 300 IOPS에서 시작할 수 있으며, 버스트 기능이 있어서,
데이터 처리량에 따라 최대 3000 IOPS까지 버스트할 수 있습니다.
(3000 IOPS 이후부턴 버스트는 사라집니다.)
반면에 gp3는 최소 3000 IOPS부터 시작됩니다.
최대 IOPS는 gp2, gp3 모두 동일하지만, 최대 처리량은 gp3가 월등히 높습니다.
이 gp 볼륨의 장점중 하나는 범용성인데, 적당한 데이터 처리와 적당한 요금제로써
데이터베이스, 가상 데스크톱, 개발 및 테스트 환경에 적합합니다.
gp3 볼륨은 기본적으로 3 IOPS/GB 를 권장하고 있는데,
사용자의 선택에 따라서 IOPS를 조절할 수 있는 장점이 있습니다.
반면에 gp2 볼륨은 IOPS를 지정할 수 없고, 불륨 크기에 따라 IOPS가 정해집니다.
그뿐만 아니라 AWS에서 EBS의 데이터 관리는 내부적으로 동일한 가용영역(AZ) 내에서 데이터를 복제하고 있어서
데이터의 장애, 손실에 대한 보장을 해줍니다.
3. Provisioned IOPS SSD(IO)
AWS EBS에는 io1, io2가 있습니다.
이 볼륨들은 최대 64000 IOPS까지 올릴 수 있는 고성능 EBS입니다.
io1, io2의 성능표는 다음과 같습니다.
륨 유형 |
EBS 프로비저닝된 IOPS SSD(io2 Block Express) | EBS 프로비저닝된 IOPS SSD(io2) | EBS 프로비저닝된 IOPS SSD(io1) |
간략한 설명 | 고성능 SSD 볼륨은 비즈니스에 핵심적이며 지연 시간에 민감한 트랜잭션 워크로드를 위해 설계됨 | 고성능 및 고내구성 SSD 볼륨은 지연 시간에 민감한 트랜잭션 워크로드를 위해 설계됨 | 고성능 SSD 볼륨은 지연 시간에 민감한 트랜잭션 워크로드를 위해 설계됨 |
내구성 | 99.999% | 99.999% | 99.8%-99.9% 내구성 |
사용 사례 | Oracle, SAP HANA, Microsoft SQL Server, SAS Analytics를 최대 규모로, 그리고 가장 I/O 집약적이고 미션 크리티컬한 방식으로 배포 | I/O 집약적 NoSQL 및 관계형 데이터베이스 | I/O 집약적 NoSQL 및 관계형 데이터베이스 |
API 이름 | io2 | io2 | io1 |
볼륨 크기 | 4GB–64TB | 4GB–16TB | 4GB–16TB |
볼륨당 최대 IOPS** | 256,000 | 64,000 | 64,000 |
볼륨당 최대 처리량*** | 4,000MB/초 | 1,000MB/초 | 1,000MB/초 |
인스턴스당 최대 IOPS | 350,000 | 160,000** | 350,000 |
인스턴스당 최대 처리량 | 10,000MB/초 | 4,750MB/초** | 1만 MB/초 |
지연 시간 | 1밀리초 미만 | 한 자리 수 밀리초 | 한 자리 수 밀리초 |
요금 | 월별 GB당 0.125 USD 월별 프로비저닝된 IOPS 당 0.065 USD (32,000 IOPS 이하) 월별 프로비저닝된 IOPS 당 0.046 USD (32,001~64,000 IOPS) 월별 프로비저닝된 IOPS 당 0.032USD (64,000 IOPS 초과) |
월별 GB당 0.125 USD 월별 프로비저닝된 IOPS당 0.065 USD |
|
주요 성능 특성 | IOPS, 처리량, 지연 시간, 용량 및 볼륨 내구성 | IOPS 및 볼륨 내구성 | IOPS |
io1의 경우 IOPS와 스토리지 볼륨 비율을 50:1로 잡고 있습니다. (50 IOPS/GB)
다음과 같이 계산할 수 있습니다.
- 1GB 볼륨: 최대 50 IOPS
- 100GB 볼륨: 최대 5,000 IOPS
- 1000GB (1TB) 볼륨: 최대 50,000 IOPS
- 1280GB 볼륨: 최대 64,000 IOPS
io1의 경우 IOPS의 최대 효율을 끌어내기 위해선 1280GB로 설정해야 최대 효율을 사용할 수 있습니다.
그렇다고 해서 io1의 경우 1280GB 이상 못 만드는 건 아닙니다.
최대 16TB까지 만들 수 있지만, 그렇게 됐을경우 IOPS는 4/GB밖에 되질 않습니다.
io2는 최대 500 IOPS/GB 까지 지원하고 있습니다.
따라서 128GB 볼륨이 최대 64,000 IOPS까지 지원이 됩니다.
64,000 IOPS 이상이 되면 io2는 io2 Block Express로 바뀌게 되는데,
이렇게 되면 최대 256,000 IOPS까지 지원할 수 있습니다.
그렇게되면 512GB 볼륨에 최대 256,000 IOPS가 지원이 가능하게 됩니다.
제가 설명드린 것은 최대 효율을 낼 수 있는 볼륨의 GB를 말씀 드린겁니다.
굳이 최대치를 맞출 필요는 없고, 워크로드의 요구 사항과 비용 효율성을 고려해서 결정해야 합니다.
때문에 Provisioned IOPS SSD는 고성능 데이터베이스, 고성능 애플리케이션,
레이턴시에 민감한 워크로드와 같은 경우에 사용되곤 합니다.
참고.
https://aws.amazon.com/ko/ebs/features/
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/ebs-volume-types.html