프로젝트 주제: AI SRE 봇

Keno Kim·2025년 4월 14일

Intro

  • API 서비스를 운영하면서, 어느 날 API 서비스 전체가 느려지는 문제가 발생했다.
  • 이 때, Grafana 대시보드를 포함해서 뭐가 문제인지 찾아보고 성능 병목을 찾아 코드를 수정하고 문제를 해결할 수 있었다.
  • 이 과정을 AI 에이전트가 자동화할 수 없을까?

시나리오 - 성능 병목 찾기

  1. 개발자: "전체 API 서비스가 느려지고 에러가 발생하고 있어"

  2. AI 에이전트:

    이 문제를 즉시 분석하겠습니다. 여러 모니터링 지표를 확인 중입니다...
  3. AI 에이전트 내부 프로세스:

    • 프로메테우스 MCP로 Grafana 대시보드 지표 확인
    • Hikari DB 커넥션 풀이 최대 점유 상태임을 감지
    • DB 모니터링 MCP로 슬로우 쿼리 로그 분석 → 특이사항 없음
    • 프로메테우스 MCP로 API별 요청량 분석
    • /api/v1/product/recommendations API에 트래픽 집중 확인
    • 부하 테스트 도구 MCP로 해당 API에 대한 테스트 자동 실행
  4. AI 에이전트:

    분석 결과:
    1. DB 커넥션 풀(Hikari)이 최대치로 점유되어 있습니다
    2. DB 자체에는 슬로우 쿼리나 성능 이슈가 없습니다
    3. '/api/v1/product/recommendations' API에 요청이 과도하게 집중되고 있습니다
    4. 이 API에 대한 부하 테스트 결과, 현재 발생한 이슈가 재현됩니다
    
    결론: '/api/v1/product/recommendations' API가 전체 서비스의 성능 병목입니다.
    
    권장 조치:
    1. 해당 API의 DB 커넥션 사용을 확인하세요 - 커넥션을 필요 이상으로 오래 유지하고 있을 수 있습니다
    2. DB 커넥션 풀 크기 증가를 고려하세요 (현재 20 → 50으로 증가 권장)
    3. 해당 API에 캐싱 도입을 검토하세요
    4. 필요하다면 이 API에 대한 트래픽 제한(rate limiting)을 적용하세요
  5. 개발자: "어떤 부분이 API의 성능을 저하시키는지 코드 레벨에서 찾아줘"

  6. AI 에이전트:

    • QA 도구 MCP로 API 코드 분석
    • 프로파일링 도구로 API 실행 경로 추적
    코드 분석 결과:
    1. 추천 API에서 상품 데이터를 조회할 때 DB 커넥션을 획득하고 명시적으로 해제하지 않는 부분이 있습니다
    2. try-with-resources 패턴을 사용하지 않아 DB 커넥션이 제대로 반환되지 않습니다
    3. 또한 상품 조회 시 N+1 쿼리 문제가 발생하고 있습니다
    
    수정 권장사항:
    파일: src/main/java/com/example/service/ProductRecommendationService.java, 라인 127-145
    1. DB 연결 처리를 try-with-resources 패턴으로 변경
    2. JOIN 쿼리로 N+1 문제 해결
    3. 자주 변경되지 않는 상품 데이터에 캐싱 적용

시퀀스 다이어그램


서비스 구성도

사용 예시

개발자: "로그인 API 성능이 저하되는 이유를 찾아줘"

AI 에이전트:

프로메테우스 MCP로 API 응답시간 증가 확인
DB 모니터링 MCP로 사용자 인증 쿼리 분석
"사용자 테이블의 인덱스가 누락되어 full table scan이 발생하고 있습니다"
"다음 인덱스를 추가하세요: CREATE INDEX idx_user_email ON users(email)"

개발자: "내일 신규 기능 출시 예정인데 문제없을까?"

AI 에이전트:

부하 테스트 도구 MCP로 트래픽 증가 시뮬레이션
QA 도구 MCP로 기능 테스트 자동화
"결제 API에서 동시 요청 100개 이상 시 응답 시간이 10초 이상으로 증가합니다"
"DB 커넥션 풀 사이즈를 현재 20에서 50으로 늘리는 것을 권장합니다"

개발자: "API 응답 시간이 간헐적으로 급증하는 현상이 발생해요"

AI 에이전트:

API 모니터링 MCP로 응답 시간 패턴 분석
인프라 모니터링 MCP로 시스템 자원 사용량 확인
"외부 결제 서비스 API 호출 시 타임아웃 대기 시간이 길게 설정되어 있습니다"
"HTTP 클라이언트 타임아웃을 현재 30초에서 5초로 줄이고, 재시도 로직 추가를 권장합니다"

개발자: "사용자가 많은 시간대에 API 일부가 503 에러를 반환해요"

AI 에이전트:

API 모니터링 MCP로 에러율 및 트래픽 패턴 분석
DB 모니터링 MCP로 데이터베이스 상태 점검
부하 테스트 MCP로 병목 지점 식별
"상품 목록 API에서 캐싱이 적용되지 않아 DB 부하가 심합니다"
"Redis를 활용한 캐시 레이어 추가와 카테고리별 TTL 적용을 권장합니다"

개발자: "검색 기능이 사용될수록 전체 시스템이 느려지는 것 같아요"

AI 에이전트:

인프라 모니터링 MCP로 메모리 사용량 추적
QA 도구 MCP로 검색 서비스 코드 분석
"검색 결과를 캐싱할 때 메모리 누수가 발생하고 있습니다"
"WeakReference를 사용하여 GC가 필요시 메모리를 회수할 수 있도록 수정하세요"
"검색 결과 캐시에 LRU 정책과 최대 크기 제한을 적용하세요"
profile
개발자의 생각 로그

0개의 댓글