AWS S3가 느린 HDD로 초당 1페타바이트를 제공하는 비밀
아마존 AWS S3(오브젝트 스토리지)는 오늘날 인터넷의 근간을 이루는 핵심 서비스입니다. 이름만 들어도 모두 알지만, 실제로 이 서비스가 초당 1페타바이트(PB/s) 이상, 1억 5천만 건 이상의 요청을 동시에 처리한다는 사실은 잘 알려져 있지 않습니다. 더 놀라운 건, 이런 어마어마한 규모를 값싼 하드디스크(HDD)로 구현했다는 점! 왜 SSD가 아닌 오래된 HDD를 쓰는지, 그리고 어떻게 성능 문제를 극복했는지 궁금하시죠? 이번 글에서는 S3의 내부 구조와 혁신적인 기술, 그리고 그로 인한 비용 절감 효과까지 재미있게 소개합니다.
AWS S3의 어마어마한 스케일과 기본 원리
AWS S3는 여러 기업과 사용자가 파일을 저장하고 불러오는 고가용성·고내구성 객체 스토리지 서비스입니다. S3에 저장된 객체(파일)는 400조 개가 넘고, 매초 1억 5천만 건의 요청을 처리합니다. 데이터를 처리하는 백엔드는 우리가 흔히 아는 하드디스크(HDD)로 구성되어 있습니다. SSD보다 느리지만, HDD는 저렴한 가격 덕분에 대량 저장에 적합하죠. 이 서비스를 통해 AWS는 효율성과 비용을 단번에 잡았습니다.
느린 HDD에서 빠른 스토리지를 만든 비법: 시퀀셜 I/O와 LSM 구조
HDD는 기본적으로 '순차(시퀀셜) I/O'에 강합니다. 즉, 데이터를 한꺼번에 이어 붙여 저장하거나 읽을 때 빠르죠. S3의 내부 저장소(ShardStore)는 이 구조를 활용한 LSM(로그 구조 병합 트리) 방식입니다. 대량의 데이터를 한꺼번에 쓰는 작업엔 매우 효율적이고, 데이터 처리량이 극대화됩니다. 아파치 카프카 등 유명 오픈소스 시스템도 이 원리를 따라갑니다.
랜덤 I/O의 한계와 S3의 Clever한 우회
문제는 파일을 '임의(Random)' 위치에서 읽어야 할 때입니다. HDD는 바늘이 움직이고 원판이 회전하는 물리적 한계로, 이런 랜덤 접근엔 매우 느린 응답속도를 보입니다. SSD가 대체제로 떠오르는 이유도 이 때문이죠. 하지만 S3는 어마어마한 데이터량을 저장해야 하므로, SSD를 쓰면 비용이 걷잡을 수 없이 올라갑니다. 이 난제를 S3는 데이터 병렬 처리(Parallelism)로 해결했습니다.
데이터 병렬 처리와 Erasure Coding의 마법
S3의 핵심 전략은 '병렬 처리'에 있습니다. 데이터를 2만 개 이상의 HDD로 쪼개 병렬로 읽으면, 단일 디스크의 속도 한계를 뛰어넘게 됩니다. 그래서 단일 1TB 파일도 쪼개서 여러 드라이브에 분산시켜 읽고, 초고속 대역폭을 실현합니다. 여기엔 'Erasure Coding'(삭제코딩) 기술도 쓰입니다. 데이터를 여러 개의 조각(K)과 추가 복구용 파리티(M)로 분할하고, 어떤 조각이 고장나도 원본이 복구되게 하는 방식입니다. S3가 사용하는 5-of-9 방식은 9개 중 5개만 있으면 원본 복원이 가능해, 데이터 안정성과 효율성 모두 잡았습니다.
사용자·클라이언트·서버의 3단 병렬 처리
병렬 처리의 효과는 서비스 전체에 걸쳐 적용됩니다. 사용자는 대용량 파일을 업로드·다운로드할 때 여러 청크로 나누고, 클라이언트 라이브러리는 다수의 S3 서버와 동시 접속합니다. 서버 쪽에서도 객체를 여러 하드디스크에 분산저장합니다. 이런 다중 경로 병렬화는 S3 전체의 처리량과 응답속도를 극대화시키고, 어떤 구간에서도 병목이 생기지 않게 만듭니다.
핫스팟을 피하는 데이터 배치와 로드밸런싱 비법
S3는 수천만 개의 드라이브와 엄청난 연산량을 가진 시스템입니다. 특정 디스크에 요청이 몰리면 전체 서비스에 지장이 생길 수 있죠. 이를 방지하기 위해 S3는 무작위(Random) 배치와 'Power of Two Choices' 알고리즘을 활용합니다. 새 데이터를 저장할 때마다 매번 무작위 드라이브 두 개 중 적게 사용된 곳에 저장하면 병목 현상을 자연스럽게 줄일 수 있습니다. 또한, 오래된 데이터는 액세스 빈도가 낮아지므로 지속적으로 데이터 전체를 리밸런싱해, 공간과 처리량을 최대한 활용합니다.
거대한 시스템에서 예측 가능한 성능을 만드는 비밀
사용자 수·워크로드가 많아질수록 단일 사용자의 데이터 요청은 서로 겹치지 않고 분산됩니다. 덕분에 전체적인 자원 사용률이 평탄해지고, S3처럼 대규모 시스템일수록 오히려 성능 예측이 쉬워지는 '규모의 경제' 효과가 나타납니다.
S3의 확장성과 최신 트렌드
초창기에는 백업, 이커머스 이미지·동영상 저장에 최적화된 서비스였던 S3는 이제 빅데이터 분석, 머신러닝 데이터레이크의 중심으로 진화했습니다. 최근에는 별도의 데이터 인프라 프로젝트에서 S3를 메인 저장소로 활용하는 사례가 급증합니다. 통계적으로 HDD 대비 25배 이상 저렴하게 운영할 수 있고, AWS가 내장한 내구성·복제·로드밸런싱 기술을 그대로 사용할 수 있어 관리 부담도 대폭 줄일 수 있습니다.
S3를 빛나게 하는 기타 고급 트릭
S3 내부에는 DNS 레벨 셔플샤딩, p95 초과 요청에 '헤지 요청' 추가, 무중단 소프트웨어 업데이트 등 엔터프라이즈급 기술이 곳곳에 적용되어 있습니다. 수백 개의 마이크로서비스가 따로 분리된 설계와, 99.999999999%에 근접하는 내구성을 위한 모델링/검증 절차까지 더해지면, 그야말로 세계 최고 수준의 객체 스토리지 시스템이라 할 수 있습니다.
마치며 AWS S3는 가격, 안정성, 확장성 세 가지를 모두 잡은 최신 스토리지의 표본입니다. 값싼 HDD를 활용하면서도 수만 대의 드라이브를 병렬로 배치하고, Erasure Coding 등의 기술로 데이터 안전성을 강화했습니다. 대용량 빅데이터, 머신러닝, 통합 데이터레이크가 필요하다면 '걱정 없이 확장' 가능한 S3의 구조와 철학을 참고해 보는 것이 좋겠습니다. 언제든 데이터 저장이 고민될 땐, 단순히 스펙이 좋은 장비보다 '규모의 경제'와 병렬화 구조에 집중해 보세요. S3에서 배운 원리로, 여러분의 서비스도 한 단계 업그레이드될 수 있습니다!
출처 및 참고 : How AWS S3 serves 1 petabyte per second on top of slow HDDs
이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.