AWS Nitro SSD – I/O 집약적 애플리케이션을 위한 고성능 스토리지
AWS는 고객의 어려운 문제를 기꺼이 해결하고자 합니다! 수년 동안 지켜보셨듯이 AWS의 혁신은 다양한 형태를 취하며 하드웨어와 소프트웨어를 모두 포괄합니다.
가장 마음에 드는 고객 중심 혁신 사례 중 하나는 AWS Nitro System입니다. 저는 이 시스템에 대해서는 2018년 중반에 처음 썼습니다. 해당 게시물에서는 더 많은 유형의 워크로드를 실행하는 인스턴스를 만드는 것을 목표로, Nitro System을 통해 그 어느 때보다 빠르게 혁신할 수 있는 방법에 대해 설명했습니다. 또한 네트워크 및 스토리지 I/O를 가속화하고 오프로드하는 Nitro 카드, 하드웨어 리소스를 모니터링하고 보호하는 Nitro 보안 칩, 매우 낮은 오버헤드로 메모리 및 CPU 할당을 관리하는 Nitro 하이퍼바이저 등 당시 존재했던 기본 구성 요소에 대해서도 다루었습니다.
오늘 저는 또 하나의 빌딩 블록에 대해 말씀드리고자 합니다!
AWS Nitro SSD
수십 년 동안 전통적인 하드 드라이브(농담으로 구동하는 녹슨 기계라고도 함)가 기본 블록 저장 디바이스였습니다. 오늘날에도 회전하는 녹슨 기계가 여전히 자리를 차지하고 있지만 대부분의 고성능 스토리지는 최신 솔리드 스테이트 드라이브(SSD)를 기반으로 합니다. SSD를 열면 메모리에 대한 액세스를 관리하고 블록 매핑, 암호화, 캐싱, 웨어 레벨링 등과 같은 고급 기능을 지원하는 많은 플래시 메모리와 펌웨어 기반 프로세서를 찾아볼 수 있습니다.
AWS 클라우드의 규모와 지원되는 다양한 고객 사용 사례를 통해 오늘날의 애플리케이션, 데이터베이스 엔진 및 운영 체제가 블록 스토리지를 사용하는 방식에 대한 귀중한 인사이트를 얻을 수 있습니다. 그 결과 여러 세대의 EC2 인스턴스를 제공하면서 더 나은 성과를 실현할 수 있는 기회를 얻었습니다. AWS의 목표는 I/O 집약적인 워크로드(관계형 데이터베이스, NoSQL 데이터베이스, 데이터 웨어하우스, 검색 엔진, 분석 엔진 등)가 더 빠르고 예측 가능한 성능으로 실행되도록 하는 것이었습니다.
오늘은 AWS Nitro SSD에 대해 말씀드리려고 합니다. 이러한 디바이스의 1세대는 io2 Block Express EBS 볼륨을 구동하는 데 사용되었으며, 이를 통해 IOPS가 많고 처리량도 많으며 최대 볼륨 크기가 64TiB인 EBS 볼륨을 제공할 수 있습니다. 오늘 제가 앞서 작성한 Im4gn 및 Is4gen 인스턴스는 2세대 AWS Nitro SSD를 사용하고, 오늘 미리 발표한 i4i 인스턴스를 비롯하여 향후 많은 EC2 인스턴스도 사용할 수 있습니다.
AWS Nitro SSD는 클라우드 규모로 설치 및 작동하도록 설계되었습니다. 이 말이 더 많은 디바이스를 제조 및 설치하는 간단한 과정처럼 들리지만 현실은 훨씬 더 복잡하고 훨씬 더 흥미롭습니다. 앞서 언급했듯이 각 디바이스 내부의 펌웨어는 많은 하위 수준 기능을 구현합니다. 고객이 디바이스를 고객 역량의 한계까지 활용하면서, 관찰되는 성능 불일치를 진단하고 해결할 수 있기를 기대하고 있습니다. AWS의 자체 디바이스를 구축하면 클라우드 규모와 클라우드 속도로 펌웨어 업데이트를 설치할 수 있는 메커니즘과 함께 운영 원격 분석 및 진단을 설계할 수 있습니다. 이를 더욱 발전시켜 안정성과 디버그 기능을 더욱 개선하고 일관된 성능을 제공하기 위해 AWS는 인스턴스 수준 스토리지를 관리하는 자체 코드를 개발했습니다.
성능 측면에서는 클라우드 워크로드에 대한 심층적인 이해를 바탕으로, 연속된 지속적인 부하에서도 최대 성능을 제공할 수 있도록 디바이스를 엔지니어링했습니다. SSD는 빠른, 고밀도 플래시 메모리에서 구축됩니다. 이 반도체 메모리의 특성으로 인해 각 셀은 제한된 횟수만큼 쓰고, 삭제하고 다시 쓸 수 있습니다. 디바이스를 최대한 오래 사용할 수 있도록 펌웨어는 웨어 레벨링이라는 프로세스를 담당합니다. 제가 세부 사항을 이해하고 있지는 못하지만, 시간이 지남에 따라 주기 수를 고르게 만드는 방식으로 논리적 블록 번호에서 물리적 셀로의 일종의 매핑이 이 프로세스에 포함된다고 가정합니다. 이 프로세스에는 일부 정리 과정(가비지 수집의 한 형태)이 수반되며, 다양한 종류의 SSD는 쓰기 폭발을 처리할 때 예측할 수 없는 시간에 속도가 느려질 수 있습니다(대기 시간 급증 발생). 또한 데이터베이스 전문 지식을 활용하고 전원 장애 방지 저널 기반의 매우 정교한 데이터베이스를 SSD 펌웨어에 구축했습니다.
2세대 AWS Nitro SSD는 대기 시간 급증을 방지하고 실제 워크로드에 대한 뛰어난 I/O 성능을 제공하도록 설계되었습니다. 벤치마크에 따르면 새로운 Im4gn 및 Is4gen과 같은 AWS Nitro SSD를 사용하는 인스턴스가 I3 인스턴스보다 대기 시간 변동성이 75% 낮아 일관된 성능을 제공한다는 것을 알 수 있습니다.
이 모든 내용을 종합하면 Nitro SSD를 구축하는 팀은 AWS 스토리지 팀의 일원이며 운영 책임도 담당하기 때문에 매우 강력하고 빠르게 구동하는 운영 기반을 갖게 됩니다. AWS의 모든 팀과 마찬가지로 해당 팀은 매일 지표를 확인하고, CI/CD 모델을 사용하여 새 펌웨어를 효율적으로 배포할 수 있습니다.
팀에 합류
항상 그렇듯이, 현재 더 많은 혁신이 앞당겨지고 있으며 AWS Nitro SSD를 설계하는 팀에서 몇 가지 흥미로운 직책을 모집하고 있습니다. 예를 들면 다음과 같습니다.
- 소프트웨어 개발 관리자 – 스토리지 인프라 팀
- 선임 기술 프로그램 관리자 – 스토리지
- 선임 펌웨어 개발 엔지니어 – 솔리드 스테이트 디바이스
- 선임 시스템 개발 엔지니어 – 스토리지
- 선임 하드웨어 개발 엔지니어 – 스토리지
– Jeff