[논문 리뷰] NDBench: Benchmarking Microservices at Scale
NDBench는 마이크로서비스 및 데이터 스토어의 스케일링된 연속적이고 동적 성능 테스트를 위한 클라우드 네이티브이고 플러그인 방식의 벤치마킹 프레임워크로, 넷플릭스에서 개발하였다. 런타임 설정 변경, 장기적인 장애 조건 하에서의 테스트, 프로덕션과 유사한 환경과의 통합을 가능하게 하여 실제 시나리오에서 메모리 누수나 복제 병목 현상과 같은 문제를 드러낸다.
Software vendors often report performance numbers for the sweet spot or running on specialized hardware with specific workload parameters and without realistic failures. Accurate benchmarks at the persistence layer are crucial, as failures may cause unrecoverable errors such as data loss, inconsistency or corruption. To accurately evaluate data stores and other microservices at Netflix, we developed Netflix Data Benchmark (NDBench), a Cloud benchmark tool. It can be deployed in a loosely-coupled fashion with the ability to dynamically change the benchmark parameters at runtime so we can rapidly iterate on different tests and failure modes. NDBench offers pluggable patterns and loads, support for pluggable client APIs, and was designed to run continually. This design enabled us to test long-running maintenance jobs that may affect the performance, test numerous different systems under adverse conditions, and uncover long-term issues like memory leaks or heap pressure.
연구 동기 및 목표
- 실제 장애 조건 하에서 마이크로서비스 및 데이터 스토어에 대한 현실적인 장기 성능 벤치마크의 부족을 해결한다.
- 실시간 설정 변경을 통해 실시간 장애 모드와 시스템 스트레스를 시뮬레이션할 수 있는 지속적이고 동적 벤치마킹을 가능하게 한다.
- 넷플릭스의 클라우드 네이티브 스택(예: Eureka, Archaius, Spectator)과의 통합을 통해 프로덕션과 유사한 테스트 환경을 지원한다.
- EVCache와 Dynomite와 같은 내부 시스템을 포함한 다양한 데이터 스토어와 마이크로서비스를 테스트할 수 있는 통합적이고 확장 가능한 프레임워크를 제공한다.
- 자동화되고 반복 가능한 테스트 파이프라인을 통해 데이터 스토어 업그레이드 및 시스템 설정의 사전 프로덕션 검증을 촉진한다.
제안 방법
- 다양한 클라이언트 API와 데이터 스토어 유형을 지원하는 플러그인 아키텍처를 설계하여 다양한 시스템 간 일관된 벤치마킹을 가능하게 한다.
- 활동 중인 벤치마킹 중 실시간 워크로드 및 매개변수 변경을 허용하기 위해 런타임 설정 업데이트를 동적으로 구현한다.
- 넷플릭스의 클라우드 생태계(Eureka를 통한 서비스 디스covery, Archaius를 통한 설정, Spectator를 통한 메트릭스)와 통합하여 프로덕션 수준의 가시성을 확보한다.
- 장기적인 유지보수 작업(예: 애너티-엔트로피 수리)을 시뮬레이션할 수 있는 분산형으로 지속적으로 작동하는 벤치마킹 시스템으로 NDBench를 배포한다.
- 클러스터 제어, 워크로드 모니터링, 지연 및 처리량 메트릭스의 실시간 시각화를 위한 중앙집중식 웹 UI를 구축한다.
- 유한한 벤치마킹 기간을 피함으로써 무한한 시간 범위 테스트를 지원하여 장기적인 문제(예: 메모리 누수 또는 힙 압박) 탐지를 가능하게 한다.
실험 결과
연구 질문
- RQ1어떻게 벤치마킹 프레임워크가 활성 테스트 중 동적 설정 변경을 지원하여 실제 장애 시나리오를 시뮬레이션할 수 있는가?
- RQ2어떤 아키텍처 패턴이 현실적인 장애 조건 하에서 마이크로서비스 및 데이터 스토어의 지속적이고 장기적인 성능 테스트를 가능하게 하는가?
- RQ3벤치마킹 도구는 운영에 영향을 주지 않으면서 어떻게 클라우드 네이티브 마이크로서비스 기반 프로덕션 환경에 통합될 수 있는가?
- RQ4다양한 워크로드 하에서 분산형 데이터 스토어의 장기적인 유지보수 작업(예: 컴팩션, 수리)이 성능에 어떤 영향을 미치는가?
- RQ5통합된 벤치마킹 프레임워크는 어떻게 플러그인 방식의 클라이언트 API와 일관된 메트릭스 수집을 통해 다양한 데이터 스토어와 마이크로서비스를 지원할 수 있는가?
주요 결과
- NDBench는 장기적인 벤치마킹 런 중 성능 저하 및 장기적인 문제(예: 메모리 누수, 힙 압박)를 성공적으로 식별하였다.
- 실시간 설정 변경과 장애 시뮬레이션 중 연속적인 모니터링을 통해 시스템 불안정성 탐지 시간을 단축시켰다.
- 넷플릭스의 클라우드 스택(Spectator, Eureka 등)과의 통합을 통해 프로덕션과 유사한 가시성과 지역 간 원활한 배포를 가능하게 하였다.
- NDBench의 동적 설정 기능을 통해 시스템 유지보수 중 지연 시간 저하를 탐지할 수 있었으며, 예를 들어 DynamoDB에서 DAX를 사용할 경우 50퍼센트 백분위수 지연 시간이 3.98ms에서 0.79ms로 감소한 바가 있었다.
- 새로운 데이터 스토어 배포 및 시스템 업그레이드를 위한 자동화된 테스트를 지원하여 사전 프로덕션 리스크를 감소시키고 배포에 대한 자신감을 높였다.
- 중앙집중식 UI를 통해 여러 벤치마킹 인스턴스의 효율적 관리와 다양한 워크로드 및 장애 모드에서의 성능 메트릭스 실시간 시각화를 가능하게 하였다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.