Skip to content

AI Platform Engineering

범수 edited this page Sep 12, 2026 · 1 revision

AI Platform Engineering

DBTower에서 AI의 역할은 도구를 골라 근거를 모으고, 사람이 판단할 수 있는 분석을 만드는 것입니다. 권한, 데이터 반출, 승인, 실행은 모델 밖의 플랫폼 코드가 책임집니다.

MCP 도구와 연동 정보

플랫폼 구조

Web / MCP Client / Discord / Slack
                 |
          인증된 호출자 문맥
                 |
        REST 서비스 코어와 감사
                 |
   Agent Runtime -> 읽기 도구 선택·호출
                 |
 DbmsOperator -> 5개 DBMS의 실제 관측 데이터

웹, MCP, ChatOps는 별도 비즈니스 로직을 갖지 않습니다. 같은 서비스 코어와 권한 검사를 통과하므로 채널이 늘어나도 정책을 한 곳에서 바꿀 수 있습니다.

1. Agent Runtime

자연어 질문을 받으면 모델이 health, compare, sessions, explain 같은 읽기 도구를 선택하고 최대 단계 안에서 연쇄 호출합니다. 각 단계의 도구명, 입력, 결과 요약을 trace로 남기고 사용자에게 진행 상황을 스트리밍합니다.

설계 선택:

  • 도구 목록은 MCP의 tools/list에서 가져와 웹과 외부 Agent가 같은 계약을 사용합니다.
  • 변경 실행·승인·되돌리기 도구는 제공하지 않습니다.
  • 지원하지 않거나 수집하지 못한 값은 추정하지 않고 사유를 반환합니다.
  • 대상 DB에서 읽은 쿼리 문자열은 신뢰하지 않는 입력으로 취급합니다.

2. MCP와 인증

JSON-RPC 2.0 프로토콜 코어와 stdio·HTTP 전송을 구현하고 19개 도구를 제공합니다. HTTP MCP는 OAuth 2.1, PKCE, 동적 클라이언트 등록을 지원합니다.

가장 중요한 수정은 대리 호출의 주체를 보존한 것입니다. 초기 구현은 MCP 요청을 관리자 서비스 토큰으로 REST에 위임했습니다. 그 결과 실제 요청자가 감사 기록에서 사라지고, 같은 관리자가 자기 요청을 승인할 수 있었습니다.

수정 후에는 MCP를 인증한 사용자의 토큰으로 위임합니다.

수정 전: MCP 변경 요청자 api-token -> 같은 관리자의 승인 HTTP 200
수정 후: MCP 변경 요청자 실제 사용자 -> 자기 승인 HTTP 409

3. Prompt Injection과 도구 경계

세션 SQL 주석처럼 대상 DB 사용자가 만든 문자열도 AI 입력에 들어옵니다. 따라서 시스템 프롬프트의 다른 인스턴스를 보지 마라는 보안 경계로 충분하지 않습니다.

  • 허용된 도구와 대상 인스턴스를 DiagnosisGuard에서 검사합니다.
  • 인스턴스 인자를 현재 대상 ID로 고정합니다.
  • 검사한 값을 정규화한 뒤 실제 실행에도 같은 값을 사용합니다.
  • 질문, 도구 실행, 거부를 실제 사용자 이름으로 감사 기록에 남깁니다.
  • 가드를 제거하면 공격 재현 테스트가 실패하도록 뮤테이션으로 확인했습니다.

4. 컨텍스트와 데이터 반출

AI SQL 제안에는 전체 데이터를 무조건 싣지 않습니다.

입력 기본 정책
스키마 질문과 선택한 테이블 우선, 글자 예산 안에서 제공
조회 결과 값 기본 차단, 인스턴스별 관리 설정으로만 허용
허용된 결과 최대 50행, 마스킹 후 전달
SQL 리터럴 외부 전송 전에 마스킹
대화와 버전 워크시트 단위로 저장, AI 제안은 자동 실행하지 않음

정확도를 위해 컨텍스트는 늘리되, 데이터 반출 결정은 관리자 정책으로 분리했습니다.

5. 평가와 개선 루프

NL2SQL 품질을 문장 유사도가 아니라 같은 워크벤치에서 SQL을 실행한 결과로 비교합니다.

평가 결과 의미
Lenient 12/12 핵심 결과 집합이 일치
Strict 7/12 열 구성과 순서까지 일치

데이터셋은 테이블 2개, 질문 12개, 1회 실행이므로 일반 벤치마크 성능으로 주장하지 않습니다. 이 평가의 목적은 프롬프트·스키마 컨텍스트·모델 변경 전후의 회귀를 같은 기준으로 확인하는 것입니다.

평가 스크립트 · 평가 데이터

6. AI UX와 운영 안정성

워크벤치 AI 응답 스트리밍

  • 규칙 분석과 실행계획을 먼저 보여주고 AI 결과는 도착하는 대로 흘립니다.
  • 스트리밍 조각은 표시용이고, 저장·분류·버전 생성은 완성본을 다시 파싱합니다.
  • 외부 AI 호출을 DB 트랜잭션 밖으로 옮겨 동시 4요청의 active 커넥션을 4 -> 0으로 줄였습니다.
  • AI 작업 동시성에 상한을 두고 초과 요청은 명시적으로 거부합니다.
  • 시간 초과 시 셸뿐 아니라 자식 프로세스까지 종료해 Linux CI에서 20초를 넘기던 작업을 약 2초에 끝냈습니다.
  • API 키가 없거나 AI 호출이 실패해도 규칙 기반 분석과 핵심 알림은 계속 동작합니다.

구현한 것과 아직 하지 않은 것

영역 현재 상태
Agentic tool-use 읽기 도구 선택·연쇄 호출·trace·단계 제한 구현
MCP stdio·HTTP, OAuth 2.1, 19개 도구 구현
품질 평가 실행 결과 기반 NL2SQL 회귀 평가 구현
모델 Anthropic 연동, 규칙 기반 폴백
Model Router 미구현. 품질·비용·지연 평가셋부터 필요
A2A Agent Mesh 미구현. MCP 호출자의 신원 보존 경험을 인증 기반으로 활용 가능
장기 Agent Memory 미구현. 출처·유효기간·권한 상속을 먼저 설계해야 함

백엔드는 Python/FastAPI가 아니라 Java/Spring, 프론트는 React가 아니라 의존성 없는 정적 SPA입니다. 특정 프레임워크 일치를 주장하기보다 Agent Runtime, 프로토콜, 권한, 평가, 스트리밍, 운영 안정성을 제품 수준의 한 흐름으로 만든 경험을 보여줍니다.

상세 사례: PORTFOLIO-AX.md

Clone this wiki locally