[Paper] 클라우드 애플리케이션의 코드 관련 사고 근본 원인 분석을 위한 Agentic Structured Graph Traversal
Source: arXiv - 2512.22113v1
Overview
클라우드‑네이티브 애플리케이션은 수천 개의 마이크로서비스를 실행합니다. 사고가 발생했을 때, 장애를 일으킨 정확한 코드나 설정을 찾는 데는 수시간이 걸릴 수 있으며, 이는 수백만 달러의 손실을 초래합니다. 이 논문은 PRAXIS라는 새로운 오케스트레이터를 소개합니다. PRAXIS는 대형 언어 모델(LLM)이 두 개의 보완적인 그래프(서비스‑레벨 그래프와 코드‑레벨 그래프)를 “걸어다니며” 자동으로 근본 원인 분석(RCA)을 수행하도록 합니다. LLM을 그래프 탐색 정책으로 전환함으로써, PRAXIS는 사고 진단 속도를 크게 높이고 정확성을 향상시킵니다.
핵심 기여
- 이중 그래프 표현: 마이크로서비스 간 상호작용을 나타내는 서비스 종속성 그래프(SDG)와 각 서비스 내부의 세밀한 코드 종속성을 포착하는 “햄머크‑블록” 프로그램 종속성 그래프(PDG)를 결합합니다.
- LLM 기반 탐색 정책: ReAct에서 영감을 얻은 프롬프트 기법을 사용해 LLM이 다음에 탐색할 노드를 스스로 결정하도록 하여, 모델을 그래프 위에서 추론하는 자율 에이전트로 전환합니다.
- PRAXIS 오케스트레이터: LLM, 그래프 쿼리, 외부 데이터(로그, 트레이스)를 관리하여 간결하고 인간이 읽기 쉬운 RCA 보고서를 생성하는 경량 런타임입니다.
- 실증적 성과: 30개의 실제 클라우드 사고로 구성된 정제된 벤치마크에서 PRAXIS는 최신 ReAct 기반 베이스라인에 비해 RCA 정확도 3.1배 향상 및 토큰 사용량 3.8배 감소를 달성했습니다.
- 오픈 벤치마크: 저자들은 사고 데이터셋을 새로운 RCA 벤치마크로 공개하여 연구 커뮤니티에 제공하고 있습니다.
방법론
-
그래프 구성
- Service Dependency Graph (SDG): 노드는 마이크로서비스이며, 방향성 있는 엣지는 RPC 호출, 메시지 큐, 혹은 공유 스토리지를 나타냅니다. SDG는 서비스‑메시 텔레메트리(예: OpenTelemetry)와 배포 매니페스트를 기반으로 구축됩니다.
- Hammock‑Block Program Dependence Graph (PDG): 각 서비스에 대해 정적 분석을 수행해 “햄머크”(문장 클러스터)와 개별 코드 블록 사이의 제어‑ 및 데이터‑흐름 의존성을 추출합니다. 이를 통해 디버깅에 필요한 인과 구조를 유지하면서도 압축된 PDG를 얻습니다.
-
에이전시 탐색
- LLM은 구조화된 프롬프트를 받아서 사고 설명, 현재 그래프 노드, 그리고 짧은 “액션 공간”(예: 의존 서비스 X로 이동, PDG에서 함수 Y 검사)을 포함합니다.
- ReAct‑style 루프를 사용해 모델은 액션(방문할 노드)과 관찰(예: 로그 조각, 오류 메시지)를 출력합니다.
- 오케스트레이터는 컨텍스트를 업데이트하고 다음 그래프 슬라이스를 가져와서, 종료 조건(신뢰도 임계값 또는 최대 단계 수)이 충족될 때까지 반복합니다.
-
RCA 합성
- 탐색이 수렴하면 LLM은 방문한 노드, 관찰 내용, 그리고 추론된 인과 체인을 기반으로 짧고 개발자 친화적인 근본 원인 설명을 작성하고, 필요에 따라 문제를 일으킨 코드 커밋이나 설정 파일에 대한 링크를 포함합니다.
결과 및 발견
| 지표 | PRAXIS | ReAct‑Baseline |
|---|---|---|
| RCA 정확도 (top‑1) | 78 % (↑3.1×) | 25 % |
| 사건당 평균 토큰 수 | 1.2 k (↓3.8×) | 4.6 k |
| 평균 탐색 단계 | 7 | 22 |
| 진단 시간 | ~45 s (including API latency) | ~3 min |
- Higher precision는 PDG가 관련 없는 코드 경로를 초기에 가지치기할 수 있는 능력에서 비롯되며, SDG는 LLM을 가장 의심스러운 서비스 쪽으로 안내합니다.
- Token savings는 LLM이 각 단계에 필요한 최소 서브 그래프만 받게 함으로써 달성되며, 이는 단일형 ReAct 접근 방식에서 발생하는 “프롬프트 부피 증가”를 방지합니다.
- 벤치마크 결과 PRAXIS가 널 포인터 충돌, 잘못된 구성, 버전 불일치 등 다양한 사고 유형에 걸쳐 작동함을 보여주며, 높은 일반성을 나타냅니다.
실용적 시사점
- 빠른 MTTR (Mean Time to Repair): PRAXIS를 SRE 툴체인에 통합하면 사고 해결 시간을 몇 분, 심지어 몇 시간까지 단축할 수 있어 대규모 클라우드 제공업체의 비용 절감으로 바로 이어집니다.
- 개발자 친화적인 RCA 보고서: 생성된 설명에는 정확한 파일/라인 참조가 포함되어 있어 SRE에서 개발팀으로의 인계가 원활합니다.
- 확장 가능한 자동화: 오케스트레이터가 필요한 그래프 조각만 가져오기 때문에 저사양 하드웨어에서도 실행 가능하고, LLM 토큰 한도에 걸리지 않으면서 수천 개 서비스까지 확장할 수 있습니다.
- 지속적인 개선 루프: 사고 결과를 피드백하여 PDG(예: 동적 호출 그래프 데이터 추가)와 LLM 프롬프트를 개선함으로써 스스로 학습하는 RCA 어시스턴트를 만들 수 있습니다.
- CI/CD 통합 가능성: PRAXIS를 실패한 배포나 사후 분석 파이프라인에서 자동으로 호출하도록 하면, 프로덕션에 문제가 나타나기 전에 근본 원인을 포착할 수 있습니다.
제한 사항 및 향후 작업
- 정적 분석 의존성: PDG는 정적 코드 분석을 기반으로 구축되므로 런타임에 생성되는 코드 경로(예: 리플렉션, 플러그인)를 놓칠 수 있습니다.
- 그래프 최신성: 빠르게 변화하는 마이크로서비스 생태계에서는 SDG와 PDG를 최신 상태로 유지하기 위해 자주 재생성해야 하며, 이는 운영 부담을 증가시킵니다.
- LLM 환각 위험: 구조화된 탐색이 환각을 감소시키긴 하지만, 기본 텔레메트리가 잡음이 많거나 불완전할 경우 모델이 그럴듯하지만 잘못된 인과 관계를 생성할 수 있습니다.
- 벤치마크 규모: 평가에 사용된 사건이 30건에 불과하므로, 보다 크고 다양화된 데이터셋이 필요합니다.
- 저자들이 제시한 향후 방향:
- 동적 프로파일링 데이터를 활용해 PDG를 보강하기.
- 앙상블 추론을 위한 다중 LLM 앙상블 탐색.
- 코드 추적이 희박한 구성 전용 사건을 처리하도록 PRAXIS 확장하기.
저자
- Shengkun Cui
- Rahul Krishna
- Saurabh Jha
- Ravishankar K. Iyer
논문 정보
- arXiv ID: 2512.22113v1
- 분류: cs.DC, cs.AI, cs.SE
- 출판일: 2025년 12월 26일
- PDF: PDF 다운로드