
eBPF와 그래프 DB로 구현한 실시간 서비스 토폴로지가 복잡한 분산 시스템의 가시성을 해결하는 방법
본 아티클은 넷플릭스가 파편화된 관측 지표들을 어떻게 하나의 통합된 서비스 맵으로 진화시켰는지에 대한 기술적 여정을 다룹니다. 네트워크 계층부터 애플리케이션 계층까지 아우르는 3중 데이터 전략을 통해, 수천 개의 서비스가 얽힌 복잡한 환경에서도 엔지니어가 단 몇 초 만에 의존성을 파악할 수 있는 아키텍처를 소개합니다.
마이크로서비스 아키텍처(MSA)를 운영하며 서비스 간 복잡한 의존성 때문에 장애 복구 시간이 길어지는 팀에게 강력히 추천합니다. 특히 eBPF를 활용한 비침습적 관측과 그래프 데이터베이스를 활용한 관계 모델링 기법은 인프라 엔지니어들에게 실무적인 영감을 줄 것입니다.
넷플릭스의 수천 개 마이크로서비스 환경에서 장애 발생 시 서비스 간 의존성, 장애 영향도(Blast Radius), 근본 원인을 파악하는 데 기존의 메트릭과 로그만으로는 한계가 있었습니다. 특히 실시간 데이터가 아닌 정적인 다이어그램은 급변하는 인프라 상태를 반영하지 못해 엔지니어들이 수동으로 정보를 조합해야 하는 어려움이 있었습니다.
eBPF 기반 네트워크 흐름(Network Layer), IPC 메트릭(Application Layer), 분산 트레이싱(Request Layer)의 세 가지 데이터 소스를 통합한 실시간 '서비스 토폴로지' 시스템을 구축했습니다. Apache Pekko Streams를 활용한 3단계 분산 처리 파이프라인을 통해 부하 분산 장치 등 중간 노드를 식별하여 실제 앱 간의 관계를 재구성하고, 고성능 그래프 데이터베이스에 저장했습니다.
수천 개의 노드가 포함된 복잡한 호출 그래프에서도 1초 미만의 응답 속도로 쿼리가 가능해졌으며, 과거 시점의 토폴로지를 확인하는 '타임 트래블' 기능을 구현했습니다. 이를 통해 장애 대응 시 상/하위 의존성을 즉각 파악하고 유지보수 전 영향도를 정확히 계산할 수 있는 환경을 마련했습니다.
Trade-off
트레이싱 데이터의 경우 성능 영향을 최소화하기 위해 샘플링 방식을 사용하므로 드물게 발생하는 코드 경로가 누락될 수 있으며, IPC 메트릭은 라이브러리가 주입된 서비스에만 국한된다는 한계가 있습니다. 또한 실시간성과 저장 비용의 균형을 맞추기 위해 시간 윈도우 집계(Time-window aggregation) 방식을 채택하여 미세한 시간 단위의 데이터 정밀도는 일부 희생되었습니다.
커널 소스 코드를 수정하지 않고도 운영체제 커널 내에서 샌드박스화된 프로그램을 실행할 수 있게 해주는 기술입니다.
분산 시스템 내에서 마이크로서비스 간의 연결 관계와 의존성을 시각화하고 데이터화한 구조적 지도입니다.
서로 다른 프로세스나 서비스 간에 통신할 때 발생하는 프로토콜, 엔드포인트, 에러율 등의 세부 메트릭입니다.








