넷플릭스, 실시간 서비스 맵으로 장애 해결 시간 단축

by DD
5일 전
조회수 12

넷플릭스는 분산 시스템(Distributed System)의 복잡성 증가에 따라 엔지니어의 문제 해결을 돕기 위해 실시간 서비스 맵(Real-time Service Map)을 구축함

eBPF 네트워크 흐름(eBPF Network Flows), IPC 메트릭(IPC Metrics), 분산 추적(Distributed Tracing)을 활용하여 네트워크, 애플리케이션, 요청 계층의 3가지 독립적인 토폴로지 그래프(Topology Graph)를 생성함

실시간 업데이트, 빠른 쿼리 속도, 다양한 계층 지원을 통해 엔지니어는 의존성 시각화(Dependency Visualization), 문제 발생 지점 파악(Root Cause Analysis), 변경 영향도 분석(Blast Radius Analysis)을 수행

넷플릭스는 Kafka(Kafka) 기반의 데이터 파이프라인(Data Pipeline)을 구축하여 대규모 데이터 처리 문제를 해결했으며, 향후 자동화된 근본 원인 분석(Automated Root Cause Analysis) 기능을 추가할 예정

이 시스템은 서비스 중단 시간 감소, 변경 위험 최소화, 시스템 안정성 향상에 기여하여 궁극적으로 사용자 경험(User Experience) 개선에 기여

3가지 데이터 소스를 활용한 서비스 의존성 매핑

넷플릭스는 eBPF 네트워크 흐름(eBPF Network Flows), IPC 메트릭(IPC Metrics), 분산 추적(Distributed Tracing)을 통해 서비스 간의 관계를 파악한다. eBPF는 네트워크 계층의 모든 연결을, IPC 메트릭은 애플리케이션 계층의 상세 정보를, 분산 추적은 실제 요청 흐름을 보여준다.

eBPF: 네트워크 레벨(Network Level)의 모든 통신을 캡처하여 광범위한 서비스 연결(Service Connection) 정보를 제공하지만, 애플리케이션 컨텍스트(Application Context)는 부족하다.

IPC 메트릭: gRPC, GraphQL, REST(REST) 등 다양한 프로토콜(Protocol)을 통해 호출되는 API 엔드포인트(API Endpoint), 에러율(Error Rate), 지연 시간(Latency) 등의 정보를 제공한다.

분산 추적: 개별 요청의 흐름을 추적하여 실제 요청 경로(Request Path)를 파악하고, 조건부 로직(Conditional Logic) 및 기능 플래그(Feature Flag)를 포함한 런타임 동작(Runtime Behavior)을 보여준다.

이러한 다층적 접근 방식은 각 소스의 한계를 보완하여 정확하고 완전한 서비스 의존성 맵(Service Dependency Map)을 구축한다.

실시간 서비스 맵 구축을 위한 아키텍처

넷플릭스는 3단계 분산 집계 파이프라인(Three-Stage Distributed Aggregation Pipeline)을 통해 네트워크 흐름 데이터를 처리한다. 이 파이프라인은 Kafka(Kafka)에서 수집된 로그(Log)를 초기 배치, 중간 해결, 최종 보강 단계를 거쳐 그래프 데이터베이스(Graph Database)에 저장한다.

1단계: Kafka(Kafka)로부터 초기 데이터 집계(Initial Data Aggregation)를 수행하며, 데이터 볼륨(Data Volume)을 관리한다.

2단계: 네트워크 중개자(Network Intermediaries) 식별 및 해결(Resolution)을 통해 애플리케이션 간의 직접적인 연결을 재구성한다. 로드 밸런서(Load Balancer)와 같은 중개자를 식별하여 실제 서비스 간의 관계를 파악한다.

3단계: 최종 집계(Final Aggregation)를 수행하며, 상태 정보를 통합하여 그래프 데이터베이스에 저장한다. 이 단계를 통해 서비스의 상태 정보를 맵에 반영한다.

이러한 아키텍처는 대규모 데이터 처리(Large-scale Data Processing)를 효율적으로 처리하고, 실시간 서비스 맵(Real-time Service Map)의 정확성을 보장한다.

넷플릭스 서비스 맵의 핵심 기술: eBPF

넷플릭스는 eBPF(Extended Berkeley Packet Filter) 기술을 활용하여 커널 레벨(Kernel Level)에서 네트워크 흐름을 캡처한다. eBPF는 커널 내에서 실행되는 프로그램(Program)을 통해 네트워크 트래픽(Network Traffic)을 모니터링하고, 서비스 간의 통신 관계를 파악한다.

장점: 애플리케이션 코드 변경 없이 모든 서비스의 네트워크 연결(Network Connection)을 파악할 수 있으며, 높은 성능(High Performance)낮은 오버헤드(Low Overhead)를 제공한다.

eBPF는 네트워크 계층(Network Layer)에서 발생하는 모든 트래픽을 감지하므로, 애플리케이션 수준의 계측(Instrumentation)이 필요하지 않다.

단점: 애플리케이션 컨텍스트(Application Context), 즉 호출되는 API 엔드포인트(API Endpoint)나 요청의 상세 정보는 제공하지 못한다.

결과적으로 eBPF는 서비스 맵의 기초 데이터(Foundation Data)를 제공하며, 다른 데이터 소스와 결합하여 완전한 서비스 의존성 맵(Service Dependency Map)을 구축하는 데 기여한다.

서비스 토폴로지(Service Topology)의 장점

넷플릭스의 서비스 토폴로지(Service Topology)는 엔지니어에게 향상된 가시성(Enhanced Visibility)문제 해결 능력(Problem-Solving Ability)을 제공한다.

의존성 시각화(Dependency Visualization): 서비스 간의 상호 의존 관계(Interdependency)를 시각적으로 파악하여, 문제 발생 시 영향 범위(Blast Radius)를 쉽게 예측할 수 있다.

빠른 문제 해결(Faster Troubleshooting): 서비스의 상태를 실시간으로 모니터링하고, 문제 발생 시 근본 원인(Root Cause)을 빠르게 파악할 수 있도록 지원한다.

변경 영향도 분석(Blast Radius Analysis): 서비스 변경 전에 영향을 받는 서비스(Impacted Service)를 정확하게 파악하여, 변경으로 인한 예기치 않은 사고(Unexpected Incident)를 방지한다.

이러한 기능들은 엔지니어가 시스템을 더 잘 이해하고, 안정적인 서비스 운영(Stable Service Operation)을 유지하는 데 기여한다.

향후 발전 방향: 자동화된 근본 원인 분석

넷플릭스는 서비스 토폴로지(Service Topology)를 기반으로 자동화된 근본 원인 분석(Automated Root Cause Analysis) 기능을 개발할 예정이다. 이 기능은 서비스 맵을 지속적으로 분석하여 문제 발생 시 원인을 자동으로 파악(Automated Root Cause Identification)하고, 엔지니어에게 정확한 정보(Accurate Information)를 제공한다.

자동화된 근본 원인 분석은 장애 대응 시간(Incident Response Time) 단축문제 해결 효율성(Problem-Solving Efficiency) 향상에 기여할 것이다.

넷플릭스는 배포 이벤트(Deployment Event), 설정 변경(Configuration Change) 등 다양한 정보를 서비스 맵에 통합하여, 문제 발생 시점의 상황을 더욱 정확하게 파악(More Accurate Understanding)할 수 있도록 할 예정이다.

궁극적으로, 이러한 기술 발전은 시스템의 안정성(System Stability)을 향상시키고, 사용자 경험(User Experience)을 개선하는 데 기여할 것이다.

From Silos to Service Topology: Why Netflix Built a Real-Time Service Map

댓글 0

첫 번째 댓글을 남겨보세요!