
eBPF부터 그래프 DB까지, 복잡한 마이크로서비스 숲에서 길을 잃지 않게 해주는 실시간 '살아있는 지도'
대규모 마이크로서비스 환경에서 '무엇이 어디에 연결되어 있는가'는 가장 기본적이면서도 대답하기 어려운 질문입니다. 넷플릭스는 파편화된 모니터링 정보를 넘어, 실제 트래픽 기반의 실시간 서비스 토폴로지를 구축하여 이 난제를 해결했습니다. 이 아티클은 넷플릭스가 어떻게 다양한 데이터 레이어를 통합하고 대규모 그래프 데이터를 효율적으로 처리하는지 시니어 엔지니어의 관점에서 깊이 있게 다룹니다.
마이크로서비스의 복잡도로 인해 장애 대응 속도가 저하되는 조직의 플랫폼 엔지니어 및 SRE에게 강력히 추천합니다. 특히 분산 시스템의 가시성을 확보하기 위해 eBPF나 그래프 데이터베이스 도입을 고민 중이라면 넷플릭스의 설계 패턴은 훌륭한 실무 레퍼런스가 될 것입니다.
수천 개의 마이크로서비스로 구성된 복잡한 아키텍처에서 장애 발생 시 서비스 간의 의존 관계와 영향 범위를 즉각적으로 파악하기 어려운 문제가 있었습니다. 기존의 메트릭, 로그, 트레이스 도구들은 단편적인 정보만 제공하여 엔지니어가 장애 상황에서 수동으로 전체 구조를 파악해야 하는 한계가 존재했습니다.
eBPF 네트워크 플로우, IPC 메트릭, 분산 트레이싱이라는 세 가지 보완적인 데이터 소스를 통합하여 실시간 서비스 토폴로지 맵을 구축했습니다. Apache Pekko Streams를 활용한 3단계 분산 집계 파이프라인을 통해 로드 밸런서와 같은 네트워크 중간 매개체를 식별하고, 고성능 그래프 데이터베이스를 사용하여 1초 미만의 쿼리 응답 속도를 구현했습니다.
엔지니어는 전체 서비스의 상하위 의존성을 시각적으로 확인하고 장애 전파 경로와 폭발 반경(Blast Radius)을 신속하게 추적할 수 있게 되었습니다. 또한 서비스 가용성 티어 검증 자동화와 과거 특정 시점의 토폴로지 복원 기능을 통해 장애 조사 및 아키텍처 변경 계획 수립의 정확도와 속도가 크게 향상되었습니다.
Trade-off
모든 연결을 포착하는 eBPF는 상세 엔드포인트 정보가 부족하고, 풍부한 맥락을 제공하는 IPC 메트릭과 트레이싱은 계측 오버헤드나 샘플링으로 인한 데이터 유실 가능성이 있습니다. 이를 극복하기 위해 세 가지 레이어를 별도로 관리하고 쿼리 시점에 병합하는 복잡한 아키텍처를 도입하여 시스템 복잡도가 증가했습니다.
리눅스 커널 내에서 샌드박스화된 프로그램을 실행하여 커널 소스코드를 변경하지 않고도 시스템의 동작을 관찰하고 제어할 수 있는 기술입니다. 현대적인 클라우드 네이티브 환경에서 고성능 네트워킹과 가시성 확보를 위해 널리 사용됩니다.
분산 시스템 내 마이크로서비스 간의 논리적, 물리적 연결 구조와 의존 관계를 시각화한 지도입니다. 단순히 정적인 다이어그램이 아니라 런타임 트래픽을 반영하여 시스템의 현재 상태를 나타냅니다.
Akka의 포크 버전으로, 대규모 분산 환경에서 백프레셔(Backpressure)를 지원하며 데이터 스트림을 안전하고 효율적으로 처리하는 오픈소스 툴킷입니다.








