클라우드 ·
AWS S3, 수천만 대의 하드 드라이브로 초당 1페타바이트 처리...느린 HDD로 어떻게 가능했나
AWS S3가 저속 하드디스크를 활용해 초당 1페타바이트의 데이터를 처리하는 대규모 병렬 처리 기술을 공개했다.
[한국정보기술신문] 아마존 웹 서비스(AWS)의 Simple Storage Service(S3)가 수천만 대의 하드 드라이브를 활용해 초당 1페타바이트의 데이터를 처리하는 놀라운 확장성을 보여주고 있다. 이는 저속 하드디스크의 물리적 한계를 대규모 병렬 처리로 극복한 혁신적인 접근법이다.
하드 드라이브의 한계와 S3의 해결책
하드 드라이브는 순차 액세스에 최적화되어 있지만 랜덤 I/O에서는 약 45MB/s의 처리량만을 보인다. 디스크 헤드의 물리적 이동으로 인한 평균 11ms의 지연 시간은 지난 30년간 거의 개선되지 않았다. S3는 이러한 물리적 한계를 대규모 병렬화를 통해 극복했다.
S3의 스토리지 백엔드인 ShardStore는 로그 구조 병합 트리(LSM) 기반으로 구축되어 순차 쓰기에서 우수한 성능을 보인다. 하지만 사용자가 요청하는 파일의 랜덤 읽기는 여전히 도전 과제였다.
소거 부호화를 통한 데이터 분산
S3는 소거 부호화(Erasure Coding)를 사용해 데이터를 여러 드라이브에 분산 저장한다. 5-of-9 방식을 채택해 9개의 조각으로 데이터를 나누고, 이 중 5개만으로도 원본 데이터를 복구할 수 있다. 이는 원본 데이터의 1.8배만 저장하면서도 최대 4개의 손실을 허용한다.
이 방식은 단순한 3중 복제 방식보다 1.2배 적은 저장 공간을 사용하면서도 9개의 읽기 소스를 제공해 병목 현상을 방지한다. 수백 엑사바이트 규모에서 이러한 효율성은 매우 중요하다.
3단계 병렬 처리 구조
S3는 세 가지 레벨에서 병렬 처리를 구현한다. 첫째, 사용자 관점에서 파일을 청크 단위로 업로드 및 다운로드한다. 둘째, 클라이언트는 여러 프론트엔드 서버에 동시 요청을 보낸다. 셋째, 서버는 객체를 여러 스토리지 서버에 분산 저장한다.
멀티파트 업로드와 바이트 범위 GET 요청을 통해 1GB/s의 단일 서버 업로드보다 100개 서버에 각각 10MB/s씩 업로드하는 것이 더 실용적임을 보여준다.
핫스팟 방지를 위한 무작위 배치
S3는 핫스팟 형성을 방지하기 위해 데이터를 무작위로 배치한다. 새로운 PUT 요청마다 서로 다른 드라이브 세트를 무작위로 선택하며, '2개 무작위 선택의 힘(Power of Two Random Choices)' 원리를 활용해 부하 분산을 최적화한다.
시스템은 지속적으로 데이터를 재균형화한다. 새로운 데이터가 더 자주 액세스되고 시간이 지날수록 접근 빈도가 줄어든다는 특성을 활용해 차가운 데이터를 이동시키고 새로운 용량을 활용한다.
스케일의 경제와 예측 가능성
흥미롭게도 시스템이 클수록 더 예측 가능해진다. AWS는 S3가 성장하면서 워크로드 비상관화를 경험했다. 개별 워크로드는 매우 버스트적이지만, 독립적인 워크로드들이 함께 몰리지 않기 때문에 더 많은 워크로드를 결합할수록 유휴 시간이 채워지고 시스템이 더 예측 가능해진다.
S3는 현재 수만 명의 고객이 백만 개의 디스크에 데이터를 분산 저장하고 있다. 이러한 대규모 멀티테넌시는 개별 테넌트로는 불가능한 백만 개의 HDD 배포를 경제적으로 가능하게 만든다.
데이터 인프라의 새로운 트렌드
S3는 백업과 이미지 저장용으로 시작했지만, 현재는 분석과 머신 러닝의 주요 스토리지 시스템으로 진화했다. 카프카의 '디스크리스' 트렌드처럼 많은 데이터 인프라 프로젝트가 로컬 디스크 대신 S3를 활용해 90%의 비용 절감을 달성하고 있다.
한국정보기술신문 클라우드분과 이준호 기자 news@kitpa.org