누구나 AWS S3가 무엇인지는 알지만, S3가 얼마나 거대한 규모로 동작하는지와 이를 위해 어떤 혁신이 있었는지 아는 사람은 적음 S3는 확장 가능한 멀티테넌트 오브젝트 스토리지 서비스이며, API를 통해 오브젝트를 저장 및 조회할 수 있고, 매우 높은 가용성과 내구성을 상대적으로 저렴한 비용으로 제공함 S3의 놀라운 확장성과 퍼포먼스는 전통적인 저장 매체인 HDD가 기반임 SSD와는 달리, HDD는 극도로 저렴한 단가와 높은 저장 용량 증대로 인해 여전히 대규모 스토리지에 활용되고 있음 그러나 30년째 IOPS는 약 120 수준에 정체되어 있으며, 랜덤 접근 성능과 지연은 크게 개선되지 않음 HDD의 느림은 물리 법칙에 기인함 HDD는 순차 입출력 패턴에 최적화되어 있음 임의(랜덤) 위치 읽기는 평균적으로 물리적 이동의 절반가량을 필요로 하며, 그래서 대량의 데이터 저장에는 HDD가 가성비가 뛰어나지만, 무작위 액세스 성능이 떨어짐 S3는 대규모 병렬성을 활용함 스토리지 시스템에서는 중복성 보장이 필수임 S3는 3가지 주요 병렬화 방식을 사용 병렬로 분산 처리하면 초당 1GB 업로드 등도 어려움 없이 달성 가능 S3는 수천만 대의 드라이브와 초당 수억 요청, 수억 샤드의 병렬 운영 환경 이를 막기 위한 핵심 전략:
AWS S3의 대규모 스토리지 아키텍처
규모
기반 기술: 하드 드라이브(HDD)
HDD는 오래된 기술로 내구성은 높지만 물리적 이동에 의해 IOPS(초당 입출력)과 지연에서 한계가 존재함
HDD가 느린 이유
기계적 팔이 플래터를 꼭짓점 위치까지 이동, 대기 후 전기적으로 데이터 읽기 수행
이동해야 하므로 전체적인 지연이 불가피함순차 접근
연속된 바이트를 읽고 쓰면 디스크 플래터가 자연스럽게 돌아가면서 빠르게 데이터 처리 가능
로그 기반 데이터 구조(log-structured)는 이런 순차 특성을 활용함
S3 자체도 LSM(log-structured merge) 트리를 기반으로 구축되어 있음랜덤 접근
랜덤 I/O의 평균 지연은 약 11ms로 0.5MB 데이터 접근이 느림
HDD 한 개에서 랜덤 I/O로 최대 초당 45MB 처리 가능
S3는 이 물리적 한계를 극복하며, 대규모 데이터에 대한 무작위 액세스를 제공함병렬성의 필요
데이터를 수많은 HDD에 분산 저장, 각 디스크의 입력/출력을 병렬로 사용해 전체 처리량을 크게 높임
예를 들어 1TB 파일을 2만 개의 HDD에 분할 저장하면, 전체 디스크의 처리량을 합산하여 TB/s급 읽기 가능함에러수정코딩(Erasure Coding)
S3는 Erasure Coding(EC) 을 사용하여 데이터를 K개의 조각과 M개의 패리티 조각으로 분할
총 K+M개 중 임의의 K개만 있으면 복원 가능
병렬 처리 구조
1. 프론트엔드 서버 단위 병렬 처리
2. 하드 드라이브 간 병렬 처리
3. PUT/GET 요청 병렬 처리
핫스팟(Hot Spot) 방지
특정 디스크나 노드에 부하가 몰릴 경우 시스템 전체 성능 저하 위험 발생
셔플 샤딩 & Power of Two
무작위 2개의 노드 중 부하가 적은 쪽 선택 시 효과적 로드 밸런싱 가능리밸런싱
Chill@Scale
요약
참고

1 month ago
13








![닷컴 버블의 교훈[김학균의 투자레슨]](https://www.edaily.co.kr/profile_edaily_512.png)
English (US) ·