에어비앤비에서 내결함성 메트릭 저장 시스템 구축 노트

에어비앤비에서 내결함성 메트릭 저장 시스템 구축

에어비앤비는 초당 5천만 개의 샘플과 2페타바이트의 시계열 데이터를 처리하기 위해 자체 내부 스토리지 시스템을 개발했습니다. 이러한 변화는 진화하는 제품과 인프라 전반에 걸친 광범위한 코드 계측으로 인해 생성되는 엄청난 양의 데이터 때문에 필요했습니다. 주요 엔지니어링 과제는 이 방대한 데이터 세트를 고성능으로 지속적으로 저장하고 제공하는 것이었습니다.이러한 규모를 관리하기 위해 에어비앤비는 안정적인 그룹화 및 속성을 위해 서비스 또는 프로세스별로 테넌트를 격리하는 다중 테넌트 아키텍처를 채택했습니다. 테넌트 워크로드를 격리하기 위해 셔플 샤딩을 구현하여 테넌트가 노드의 하위 집합에만 쓰고 쿼리되도록 함으로써 내결함성을 향상시켰습니다. 특히 테넌트 온보딩 및 구성 관리와 같은 운영 복잡성은 온보딩을 자동화하고 구성 업데이트를 단순화하는 통합 제어 평면으로 해결되었습니다.시스템의 주요 요구 사항은 초당 5천만 개 이상의 샘플을 처리하고, 수많은 대시보드 및 경고를 지원하며, 낮은 쿼리 실행 시간을 유지하는 것이었습니다. 섀도우 클러스터를 사용한 초기 검증에서는 안정성 문제, 압축 지연, 특히 대규모 데이터 페이로드에서 느린 쿼리 성능이 드러났습니다. 이러한 문제를 해결하기 위한 첫 단계는 단일 클러스터의 안정성을 보장하는 것이었으며, 벤치마킹, 가드레일, 쿼리 경로 격리를 통해 쓰기, 읽기 및 압축을 안정화하는 데 중점을 두었습니다.이 시스템은 3개 영역에 배포된 영역 인식 상태 저장 구성 요소로 내결함성을 갖추었습니다. 효과적인 플릿 관리 및 시스템 보호를 위해 복제본당 제한 및 테넌트 수준 제어가 구현되었습니다. 이후 장애의 폭발 반경을 줄이고 유연성을 향상시키기 위해 다중 클러스터 아키텍처가 채택되었습니다.그러나 이 다중 클러스터 접근 방식은 메트릭 검색, 쿼리 및 운영 오버헤드에서 복잡성을 야기했습니다. 이는 테넌트-클러스터 매핑을 위한 도구와 Kubernetes 연산자를 사용한 자동화된 배포 전략으로 완화되었습니다. 사용자 정의 개선 사항이 적용된 Promxy의 도입은 클러스터 간 쿼리 및 경고를 용이하게 했습니다.이 여정에서 얻은 주요 교훈은 클러스터 간 쿼리의 상당한 비용과 자동화 및 표준화된 배포를 통해 달성되는 배포 일관성의 중요성입니다. 철학은 중요한 고유한 "애완동물"이 아닌 "가축"과 유사하게 클러스터를 일회용 리소스로 취급하는 방향으로 발전하여 더 쉬운 확장 및 유지 관리가 가능해졌습니다. 궁극적으로 이 플랫폼을 구축하려면 아키텍처 혁신, 운영 엄격성, 기대치 관리의 문화적 변화가 조화를 이루어야 했습니다.
CdXz5zHNQW_oUKNz5mUz5.jpeg