Incident Brain: AI 에이전트에게 그래프 메모리를 제공하여 운영 장애에 대응하는 방법
요약
운영 장애 발생 시, 흩어진 정보를 연결하여 문제 해결에 필요한 컨텍스트를 제공하는 AI 에이전트 'Incident Brain'을 구축했습니다. 이 시스템은 FalkorDB의 그래프 데이터베이스 기능을 활용하여 서비스 간 파급 범위 분석, 담당자 식별, 과거 유사 사례 검색 등을 자동화합니다.
핵심 포인트
- 그래프 메모리를 이용해 운영 장애 대응에 필요한 컨텍스트를 제공합니다.
- FalkorDB와 LLM 도구 호출을 결합하여 사실 기반의 답변을 생성합니다.
- 다중 단계(multi-hop) 분석과 최단 경로 계산이 핵심 기능입니다.
운영 환경에 장애가 발생했을 때, 처음 10분은 문제를 해결하는 시간이 아닙니다. 질문을 던지는 시간입니다. "무엇이 또 고장 날 수 있을까?", "누가 이 시스템을 알고 있는가?", "이런 일이 전에 있었나?"와 같은 질문들 말입니다.
답변들은 존재하지만, 서비스 맵(service map), 팀 구성도(team chart), 그리고 오래된 사후 분석 보고서(postmortems)에 여기저기 흩어져 있습니다. 누군가가 압박감 속에서 이 조각들을 수작업으로 연결해야 합니다. 제가 해결하고자 했던 문제가 바로 이것이었습니다. WeMakeDevs와 FalkorDB가 만든 Graph Hacks를 통해 말입니다.
제가 구축한 것 (What I built)
Incident Brain은 FalkorDB 그래프에 컨텍스트(context)를 유지하는 에이전트(agent)입니다. 사용자가 "payments-api에서 500 오류가 발생하고 있어요"와 같은 내용을 입력하면, 다음과 같이 답변합니다:
- 파급 범위 (Blast radius): 연결 단계(hop distance)별로 영향을 받는 모든 다운스트림 서비스
- 문의할 사람 (Who to ask): 소유권 및 실무 경험에 따라 순위가 매겨진 담당자 목록
- 유사 과거 장애 사례: 근본 원인, 해결 방법, 그리고 누가 이를 해결했는지 여부
- 증거 (Proof): 각 주장 뒤에 있는 정확한 노드(nodes), 엣지(edges), 그리고 Cypher 쿼리가 라이브 그래프에 하이라이트되어 표시됨
그 후 사용자는 장애를 기록할 수 있습니다. 이 정보는 다시 그래프에 쓰여져, 다음에 유사한 장애가 발생했을 때 이를 활용할 수 있게 됩니다.
왜 그래프인가? (Why a graph?)
이러한 질문들은 모두 '연결'에 관한 것입니다. "이 서비스가 실패하면 무엇이 고장 날까?"라는 문제는 다중 단계(multi-hop) 문제입니다. SQL에서는 재귀적 조인(recursive joins)을 의미합니다. FalkorDB에서는 단 하나의 읽기 쉬운 쿼리로 처리할 수 있습니다:
MATCH (f:Service {name: $name})<-[:DEPENDS_ON*1..4]-(s:Service)
RETURN DISTINCT s.name
이 단일 쿼리가 에이전트가 호출할 수 있는 하나의 도구가 되었습니다. 이 에이전트는 추측하지 않습니다. 답변의 모든 사실은 Cypher 쿼리를 실행하고 실제 노드와 엣지를 반환한 도구에서 나옵니다.
FalkorDB 사용 방법 (How FalkorDB is used)
- **파급 범위(blast radius)**를 위한 다중 단계 순회(Multi-hop traversal)
- 하나의 서비스가 다른 서비스를 어떻게 영향 주는지 설명하는 최단 경로(shortestPath) 계산
- 영향을 받는 서비스를 중요도에 따라 순위 매기는 그래프 알고리즘 (PageRank)
- 지속적 메모리(Persistent memory): 기록된 모든 장애는 AFFECTED, FIXED_BY, SIMILAR_TO 엣지를 가진 노드가 되므로 재시작 후에도 기억이 유지됨
- 다중 그래프 지원(Multi-graph support): 회사 전체의 공유 그래프와 팀별 독립적인 메모리 그래프를 분리하여 관리 가능
FalkorDB를 제거하면 제품이 작동을 멈춥니다. 그래프는 장식이 아니라 두뇌입니다.
스택 (The Stack)
Python, FastAPI, 공식 FalkorDB Python 클라이언트, LLM 도구 호출(tool calling), 브라우저의 힘 기반 그래프 뷰(force-directed graph view), 그리고 Docker로 구성됩니다. 전체 시스템은 하나의 명령어로 시작됩니다: docker compose up.
제가 직면했던 과제 (A Challenge I Hit)
[이 부분은 실제 직면했던 과제로 대체해야 합니다. 예시: "첫 번째 버전에서는 모델이 자체 지식으로 답변하게 했고, 존재하지 않는 서비스를 발명했습니다. 저는 모든 답변이 도구 결과에서 오도록 강제하고 노드 ID를 출처로 반환함으로써 이를 수정했습니다." 실제로 일어난 일을 사용하세요.]
제가 배운 점 (What I Learned)
[경험에서 우러나온 솔직한 문장 2~3개를 작성하세요. 예시: "그래프 스키마를 먼저 설계하는 것이 다른 모든 것을 더 쉽게 만들었습니다. 관계가 명확해지자 도구들은 작고 간단했습니다."]
사용해보기 (Try It)
- Live demo: [https://incident-brain-ashen.vercel.app/ ]
- GitHub: [https://github.com/vidishagupta/incident-brain ]
- Demo video: [ ]
FalkorDB와 WeMakeDevs와 함께 #GraphHacks를 위해 제작되었습니다. 에이전트(agents)를 구축한다면 그래프를 제공해 보세요. 추측하는 것과 관계를 따라가는 것 사이의 차이는 큽니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기