Community

초당 1억 건의 요청 S3 스케일의 스토리지 구축, 운영, 관리

초당 평균 1억 건의 요청이 발생하는 AWS S3를 구축, 운영 그리고 관리하면 어떤 점을 배울까요? 대용량 트래픽이 발생하고 그에 맞는 라지 스케일 시스템을 구현하고 관리하는 건 클래스를 들으며 배우는 데 한계가 있고 실무 경험이 아주 중요한 것 같습니다. 제가 AWS S3에서 일하며 배운 점을 선임이 쓰신 글에 잘 정리되어 있어서 간략하게 내용 정리해서 공유합니다. https://www.allthingsdistributed.com/2023/07/building-and-operating-a-pretty-big-storage-system.html 1️⃣ 소프트웨어 시스템에 대한 생각의 폭을 넓혀야 했다 라지 스케일의 시스템을 운영 및 관리하려면 수백 개의 마이크로서비스만 고려하는 게 아니라 그 수많은 마이크로서비스 코드를 구현하는 소프트웨어, 하드웨어 그리고 사람까지 모두 고려해야 한다. 2️⃣ 시스템을 이해하는 데 수년이 걸렸다 단순히 화이트보드에 시스템 설계를 그려 보면 '스케일(확장성)'을 명확하게 나타내지 않는다. 초당 1억 건의 요청이 발생하고 총 약 280 trillion 객체를 갖고 있는 S3 시스템을 이해하는 데 수년이 걸리고 현재까지도 큰 스케일에 가끔 놀랄 때가 있다(AWS S3 관련 추가 데이터는 원문에 있습니다). 3️⃣ 레플리케이션: 데이터 배치(Data Placement) 및 내구성 데이터 레플리케이션은 하드웨서 오류로부터 데이터를 보호하는 데 사용되지만 열(heat) 관리에도 도움 된다. 로드를 분산시켜서 핫 스팟(hot spot)을 방지한다. 서버 용량 입장에서 생각하면 레플리케션은 비싼 옵션이지만 I/O 관점에서 보면 굉장히 효율적인 옵션이다. 👉 원문에 살짝 언급되는 erasure coding은 알아 두면 좋은 개념입니다. 4️⃣ 규모가 데이터 배치 전략에 미치는 영향 새로운 객체의 배치를 여러 디스크에 넓게 확산하는 것이다. 각 객체는 수십 개의 드라이브에 걸쳐 인코딩될 수 있지만, 서로 다른 객체를 의도적으로 서로 다른 드라이브 세트에 배치해서 각 고객의 객체 액세스가 많은 수의 디스크에 분산되도록 한다. 5️⃣ 인적 요소 라지 스케일 시스템을 소유한 팀과 엔지니어들이 내구성(Durability)이 높은 스토리지를 제공하면서 빠르게 혁신할 수 있는 자신감을 갖도록 해야 한다. S3에서는 이를 위해 내구성 검토(Durability Review)라는 프로세스를 사용한다. 시스템을 구현할 때 내구성에 영향을 미칠 수 있는 리스크를 엔지니어가 스스로 미리 생각해 보고 검토하도록 하는 프로세스다. 이 과정은 보안 검토(Security Review)에서 Threat Model을 생각해 보는 것과 비슷하다. Threat Model처럼 리스크를 분석하고 이를 예방하는 가드레일이 충분히 있는지 검토한다. 👉 Threat Model에 관한 포스팅을 과거에 올린 적 있는데, 궁금하신 분은 예전 글을 참조해 주세요. https://careerly.co.kr/comments/73799 👉 원문에 살짝 언급되는 formal verification에 관해 좀 더 알아둬도 좋습니다. 6️⃣ 어려운 문제를 해결하는 건 오너쉽에서 시작하고 끝난다 빠르게 혁신하고 퀄리티가 높은 결과를 내기 위해서 오너쉽(Ownership)이 필요하다. 오너쉽에는 책임이 따르지만 믿음도 따른다. 한 개인이나 팀이 전적인 책임과 소유권을 갖도록 해서 스스로 의사 결정을 내릴 수 있도록 자율성도 함께 줘야 한다. 반대로 오너쉽이 없으면 부정적인 결과를 초래한다. 7️⃣ 다른 사람이 오너쉽을 갖도록 장려하기 회사의 선임으로써 문제를 해결할 솔루션을 제공하는 역할을 하는 게 아니라 서비스를 구축하고 운영하는 오너쉽을 가진 엔지니어나 팀이 스스로 여러가지 솔루션을 생각할 수 있도록 돕는다. 문제를 해결할 방법은 여러 가지가 있지만, 올바른 선택은 엔지니어가 스스로 솔루션은 찾도록 소유권을 갖도록 하는 것이다. 예를 들어, 필자가 캐나다 대학 교수 시절 가장 성공적이었던 연구는 필자가 낸 해결책이 아닌, 필자가 함께 일한 연구 학생들 덕분이었다. 연구하는 학생들에게 소유권을 갖도록 하면, 스스로 진화하고 자발적으로 일에 투자하도록 하며 좋은 결과를 내게 된다. 🪴 함께 읽으면 좋은 글 데이터 내구성을 보장하는 법 https://careerly.co.kr/comments/86427 체크섬에 대해 아직 모르시나요? https://careerly.co.kr/comments/86452

알림

알림이 없습니다