아마존의 개발 문화를 엿보기 위해 제가 추천 드리는 가장 좋은 방법은 Amazon Builders Library를 살펴 보는 것입니다.
이 문서 모음에는 아마존에서 소프트웨어를 개발, 설계, 출시 및 운영하는 방법을 설명하고 있습니다. 각 문서들은 아마존 엔지니어링의 중추적 역할을 하는 수석 엔지니어들이 아키텍처, 소프트웨어 전송 및 운영에 관한 다양한 주제로 작성하고 있습니다. 예를 들어, 소프트웨어 배포를 자동화하여 매년 1억 5,000만회가 넘는 배포 수행 방법 또는 셔플 샤딩 원칙을 구현하여 높은 가용성과 내결함성을 갖춘 탄력적인 시스템을 구축하는 방법 등을 포함하고 있습니다.
아래는 한국어로 제공되고 있는 기술 문서 목록입니다. (계속 업데이트 될 예정입니다.)
- 소프트웨어 배포 중 롤백 안전 보장 (by Sandeep Pokkunuri) 소프트웨어 변경으로 인해 고객 서비스를 중단하지 않도록 하위 호환성, 롤백 및 상태를 고려한 라이브 시스템 업그레이드 방법
- 데이터 캐싱 관련 당면 과제 및 전략 (by Matt Brinkley, Jas Chhabra) 캐싱을 사용해 지연 시간을 감소하고 가용성을 향상하는 동시에 이로 인해 발생할 수 있는 모달 행동 방지
- 분산 시스템에서 리더 선택 (by Marc Brooker) 리더 선택을 사용한 효율 개선, 조정 작업 감소 및 아키텍처 간소화
- 분산 시스템의 폴백 방지 (by Jacob Gabrielson) 폴백 로직을 방지하여 장애 중 예측 가능한 방식으로 작동하는 서비스 구축
- 분산 시스템의 도전 과제 (by Jacob Gabrielson) 비결정성 및 테스트 등 분산 시스템을 까다롭게 만드는 속성 소개
- 클라우드 가용 영역을 사용한 정적 안정성 (by Becky Weiss, Mike Furr) 고가용성을 위해 여러 가용 영역을 사용하는 아키텍처 구성 및 시스템의 정적 안정성 보장
- 서비스 상태 확인(Health-check) 구현 (by David Yanacek) 서버 플릿 수준의 오탐으로 인한 의도치 않은 결과 없이 서버 장애를 자동으로 감지 및 완화 방법
- 지속적 전달을 통한 신속한 배포 (by Mark Mansour) 소프트웨어 테스트 및 배포 프로세스를 자동화하여 속도와 신뢰도 향상 방법
- 시간 제한, 재시도 및 지터를 사용한 백오프 (by Marc Brooker) 시간 제한, 재시도 및 지터를 사용한 백오프를 통해 탄력적인 시스템을 구축하고 장애를 처리하는 방법
- 오버로드를 방지하기 위해 로드 차단 (by David Yanacek) 과부하 상황에서 예측 가능하고 일관적인 성능을 유지하기 위한 전략
- 심각한 수준의 대기열 백로그 방지 기법 (by David Yanacek) 빠르게 대기열 백로그에서 중요한 워크로드 드레이닝 우선순위 지정 및 사전에 백로그 방지 방법
- 셔플 샤딩을 사용한 워크로드 격리 (by Colm MacCarthaigh) 셔플 샤딩은 운영 문제의 피해 범위를 극도로 제한하는 기술 접근
- 운영 가시성을 위한 분산 시스템 계측 (by David Yanacek) 정식 운영 시스템에 대한 운영 가시성 확보를 위한 소프트웨어 도구를 통한 장애 문제 해결
일반 블로그 글 보다는 조금 길고 어렵게 되어 있지만, 아마존에서 일상적으로 활용하는 실제 기술 사례에 기반합니다. 따라서, 기초적인 분산 시스템 설계 방법, 글로벌 기반의 높은 확장성이 필요한 서비스 개발에 대한 접근법에 대한 통찰력을 얻을 수 있습니다. (물론 아마존에서 효과적인 것이 모든 회사나 상황에 적합한 것은 아닙니다.)
혹시 여러분이 클라우드 기반 아키텍처를 잘 만들고 싶으시다면, AWS Well-Architected 프레임워크와 기술 백서를 참고하셔도 좋습니다.
※ Disclaimer- 본 글은 개인적인 의견일 뿐 제가 재직했거나 하고 있는 기업의 공식 입장을 대변하거나 그 의견을 반영하는 것이 아닙니다. 사실 확인 및 개인 투자의 판단에 대해서는 독자 개인의 책임에 있으며, 상업적 활용 및 뉴스 매체의 인용 역시 금지함을 양해해 주시기 바랍니다. 본 채널은 광고를 비롯 어떠한 수익도 창출하지 않습니다. (The opinions expressed here are my own and do not necessarily represent those of current or past employers. Please note that you are solely responsible for your judgment on checking facts for your investments and prohibit your citations as commercial content or news sources. This channel does not monetize via any advertising.)