본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 01. 18:27

단 한 번의 SQL 쿼리로 GitHub, Sentry, Slack, PagerDuty를 통합하는 AI SRE 에이전트를 구축했습니다

요약

NexusOps는 Coral을 활용하여 GitHub, Sentry, Slack, PagerDuty의 데이터를 SQL 쿼리 하나로 통합하는 AI SRE 에이전트입니다. 복잡한 API 통합 과정 없이 SQL만으로 장애의 근본 원인을 빠르게 진단하고 시각화합니다.

핵심 포인트

  • Coral을 통해 다양한 API를 SQL 테이블처럼 조회 가능
  • 도구 간 컨텍스트 스위칭을 줄여 장애 대응 시간 단축
  • Groq AI를 사용하여 자연어를 SQL 쿼리로 자동 변환
  • 장애 인과 관계를 보여주는 Root Cause Timeline 시각화 제공

모든 엔지니어가 알고 있는 문제점

새벽 3시입니다. PagerDuty 알람이 울립니다. 당신은 반쯤 잠든 상태로 여러 탭을 정신없이 오갑니다:

  • GitHub: "마지막으로 나간 PR(Pull Request)이 뭐였지?"
  • Sentry: "스택 트레이스(Stack trace)가 어떻게 되지?"
  • Slack: "다른 사람들도 이걸 확인했나?"
  • PagerDuty: "이 알람이 발생한 지 얼마나 됐지?"

근본 원인(Root cause)을 찾기 전까지 도구 사이를 전환(Context-switching)하며 60분 이상을 허비합니다. 정작 수정하는 데 걸리는 시간은? 5분입니다.

만약 단 한 번의 쿼리로 근본 원인을 찾을 수 있다면 어떨까요?

NexusOps 소개

NexusOps는 운영 환경의 장애(Production incidents)를 몇 초 만에 진단하는 AI 기반 SRE 조사관입니다. Coral을 활용하여 GitHub, Sentry, Slack, PagerDuty의 데이터를 단일 SQL 쿼리로 통합합니다.

🔗 라이브 데모: nexus-ops-seven.vercel.app
📂 소스 코드: github.com/labishbardiya/nexus-ops

Coral이란 무엇인가?

Coral은 모든 API를 SQL 테이블로 변환하는 오픈 소스 데이터 검색 계층(Data retrieval layer)입니다. 각 도구마다 별도의 통합 코드를 작성하는 대신, 그저 SQL을 작성하면 됩니다:

SELECT s.title, s.level, g.title as pr_title, g.user__login as author
FROM sentry.issues s
JOIN github.pulls g
...

이 단일 쿼리는 다음과 같은 작업을 수행합니다:

  • 최근 PR을 가져오기 위해 GitHub API 호출
  • 치명적 오류(Fatal errors)를 가져오기 위해 Sentry API 호출
  • 타임스탬프(Timestamp)를 기준으로 데이터 상관관계 분석
  • 각 오류를 유발했을 가능성이 높은 PR 반환

ETL(Extract, Transform, Load)도, 데이터 웨어하우스(Data warehouse)도, 글루 코드(Glue code)도 필요 없습니다. Coral이 인증(Auth), 페이지네이션(Pagination), 속도 제한(Rate limits), 캐싱(Caching)을 투명하게 처리합니다.

아키텍처

┌─────────────────────────────────────────────┐
│                  NexusOps                     │
├─────────────────────────────────────────────┤
...

작동 방식:

  1. 사용자 질문: "어젯밤 발생한 치명적 오류의 원인이 무엇인가요?"
  2. Groq AI가 질문을 Coral SQL 쿼리로 변환
  3. Coral이 여러 소스에 걸쳐 쿼리를 동시에 실행
  4. NexusOps가 결과 + 근본 원인 타임라인(Root Cause Timeline) + AI 설명을 렌더링

근본 원인 타임라인 (The Root Cause Timeline)

이것은 제가 가장 자랑스럽게 생각하는 기능입니다. 여러 소스에 걸친 인과 관계 체인(causal chain)을 보여주는 SVG 시각화입니다.

GitHub:    ●──── PR #342 merged ────────────────────────────
Sentry:         ●── TypeError ──── ●── Redis pool exhausted
PagerDuty:              ●── High urgency alert ─────────────
...

PR 머지(merge)와 첫 번째 에러 사이의 간격이 바로 **폭발 반경 시간(blast radius window)**입니다. 네 가지 서로 다른 도구의 타임스탬프를 머릿속으로 대조할 필요 없이, 인과 관계를 한눈에 파악할 수 있습니다.

사용된 Coral의 주요 기능

1. 교차 소스 조인 (Cross-Source JOINs)

SELECT 'github' as source, g.title as event, g.merged_at as timestamp
FROM github.pulls g
WHERE g.merged_at >= datetime('now', '-48 hours')
...

단 하나의 쿼리. 네 개의 소스. 시간으로 상관관계가 연결됩니다.

2. 스키마 학습 (Schema Learning)

Coral은 각 소스의 스키마(schema)를 자동으로 발견합니다. GitHub의 API 응답 필드를 수동으로 매핑할 필요가 없었습니다. Coral은 github.pullsnumber, title, state, user__login, merged_at 등의 컬럼이 있다는 것을 스스로 파악했습니다.

3. 100% 로컬 (100% Local)

모든 자격 증명(credentials)은 제 컴퓨터에 머뭅니다. 데이터는 절대 제 노트북을 떠나지 않습니다. 이는 운영 환경의 장애 데이터를 제3자 서비스로 보낼 수 없는 엔터프라이즈(enterprise) 사용 사례에서 매우 중요한 요소입니다.

4. CLI 통합 (CLI Integration)

NexusOps는 Node.js의 child_process를 통해 coral sql "..."를 호출합니다. 단순하고 신뢰할 수 있으며, SDK 종속성(lock-in)이 없습니다.

NL-to-SQL 파이프라인 (The NL-to-SQL Pipeline)

자연어(natural language)를 SQL로 변환하기 위해 Groq와 Llama 3.3 70B를 사용했습니다. 이는 무료이고 빠르며(500+ tokens/sec), 구조화된 SQL 생성 능력이 뛰어납니다. 시스템 프롬프트(system prompt)에는 전체 Coral 스키마가 포함되어 있으며, 모델은 정확한 테이블 이름, 컬럼 이름 및 조인(JOIN) 조건을 갖춘 유효한 SQL을 생성합니다.

예시:

  • 입력: "지난 24시간 동안 머지된 PR은 무엇인가요?"
  • 출력: SELECT number, title, user__login, merged_at FROM github.pulls WHERE owner = 'withcoral' AND repo = 'coral' AND merged_at >= datetime('now', '-24 hours') ORDER BY merged_at DESC LIMIT 20

핵심 통찰: 다중 소스 쿼리(multi-source queries)를 수행할 때 SQL은 JSON이나 함수 호출(function calls)보다 훨씬 더 나은 중간 표현(intermediate representation)입니다. SQL은 조합 가능(composable)하고 디버깅이 가능하며, Coral이 실행을 처리합니다.

기술 스택 (Tech Stack)

계층 (Layer)선택 (Choice)이유 (Why)
프론트엔드 (Frontend)Next.js 15 + Tailwind CSS빠르고, TypeScript 네이티브임
...

배운 점 (What I Learned)

  1. SQL은 과소평가된 에이전트 인터페이스입니다. 대부분의 AI 에이전트 프레임워크는 함수 호출(function calling)이나 도구 체인(tool chains)을 사용합니다. SQL은 JOIN, 집계(aggregations), 필터링(filtering)을 기본적으로 제공하기 때문에 데이터 상관관계(data correlation) 분석에 훨씬 더 강력합니다.

  2. 교차 소스 상관관계(Cross-source correlation)가 어려운 문제입니다. 하나의 API에서 데이터를 가져오는 것은 쉽습니다. 서로 다른 시간대와 형식을 가진 4개의 API 간의 이벤트를 타임스탬프(timestamp) 기준으로 상관관계를 분석하는 것이 진정한 엔지니어링이 필요한 지점입니다. Coral은 이 과정을 완전히 추상화합니다.

  3. 로컬 우선(Local-first)은 하나의 기능입니다. 운영 데이터(production data)를 다루는 SRE 도구의 경우, 모든 데이터를 클라우드 서비스로 전송하는 것은 고려 대상조차 되지 않습니다. Coral의 로컬 우선 아키텍처는 제약 사항이 아니라 강력한 판매 포인트(selling point)입니다.

  4. 데모 모드는 필수적입니다. 모든 사람이 Sentry + PagerDuty + Slack을 설정해둔 것은 아닙니다. 현실적인 모의 데이터(mock data)를 제공하면 사용자들이 별도의 설정 없이도 제품을 경험할 수 있습니다.

직접 시도해보기 (Try It Yourself)

# Coral 설치
brew install withcoral/tap/coral

...

GitHub에서 Coral에 Star를 눌러주세요: github.com/withcoral/coral

링크 (Links)

WeMakeDevs "Pirates of the Coral-bean" Hackathon 2026을 위해 제작되었습니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0