'새해, 새로운 나' 포트폴리오 챌린지 with Google AI

발행: (2026년 1월 17일 오전 07:46 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

이것은 New Year, New You Portfolio Challenge Presented by Google AI에 대한 제출물입니다.

About Me

저는 백엔드 시스템, 데이터 엔지니어링, 클라우드 인프라스트럭처를 전문으로 하는 소프트웨어 엔지니어입니다. 저는 일상에서 겪는 실제 문제인 정보 과부하와 개인 레포지토리의 PR에 대한 LLM 자동 리뷰 시 LLM 가시성을 해결하는 두 가지 AI 기반 프로젝트를 보여주기 위해 이 포트폴리오를 만들었습니다.

포트폴리오

(두 주요 프로젝트에 대한 개요가 아래에 제공됩니다)

How I Built It

Tech Stack

ComponentTechnology
BackendFastAPI on Cloud Run
AI/ScoringGemini 2.0 Flash API
Data StorageBigQuery
Rate LimitingFirestore + BudgetGuard
ObservabilityOpenTelemetry, Cloud Monitoring

Projects

1. Content Intelligence Hub

AI 기반 콘텐츠 큐레이션 시스템으로, 매일 500개 이상의 RSS 기사 중 약 10개의 고가치 읽을거리로 변환합니다. 이때 이중 스코어링 방식을 사용합니다:

  • Gemini AI가 개인 관심사와의 관련성을 분석합니다.
  • Community signals(Hacker News, Lobsters)가 품질을 검증합니다.

이는 AI만으로는 무작위 튜토리얼과 검증된 Netflix 엔지니어링 포스트를 구분하기 어려운 “희귀 블로그 포스트” 문제를 해결합니다.

2. LLM Code Review Observability

AI 코드 리뷰 시스템을 위한 엔드‑투‑엔드 모니터링으로, 다음을 추적합니다:

  • RAG 검색 품질(임베딩 유사도 점수)
  • 비용 및 지연 시간 추세
  • 요청량 및 오류율

실시간 대시보드는 BigQuery를 직접 쿼리하여 KPI와 시계열 차트를 제공합니다.

Source:

기술 심층 분석

듀얼‑스코어링 알고리즘 (Content Intelligence Hub)

시스템은 사용 가능한 신호에 따라 적응하는 신뢰도 기반 가중치를 사용합니다:

weights = {
    'high': (0.5, 0.5),    # Hacker News와 Lobsters 모두에서 발견
    'medium': (0.7, 0.3),  # 하나의 플랫폼에서만 발견
    'low': (0.9, 0.1)      # 커뮤니티 신호 없음
}

바이럴 오버라이드community_score >= 70 그리고 ai_relevance >= 25 일 때 가중치가 커뮤니티 신호를 우선하도록 전환됩니다:

if community_score >= 70 and ai_relevance >= 25:
    ai_weight, community_weight = 0.3, 0.7

Gemini를 이용한 구조화된 출력

Gemini는 Pydantic으로 검증된 타입‑안전 JSON을 반환하여, 다운스트림 코드가 알려진 스키마에 의존할 수 있게 합니다.

StruQ 패턴을 통한 안전한 NL→SQL

채팅 어시스턴트는 사용자 입력으로부터 직접 SQL을 생성하지 않습니다. 대신 Gemini가 구조화된 의도를 추출하고 이를 파라미터화된 쿼리로 매핑합니다:

User: "Show me Python tutorials from this week"

SearchIntent {
    topics: ["Python"],
    time_range_days: 7,
    content_type: "tutorial"
}

Parameterized SQL (user input never touches the query)

LLM 관측 패턴 (LLM Code Review Observability)

관측 파이프라인은 실행 가능한 인사이트를 제공하는 메트릭을 추적합니다:

메트릭 패턴의미
높은 비용, 낮은 유사도관련 없는 컨텍스트를 많이 보내고 있음 – RAG를 조정하세요
낮은 컨텍스트 활용도파일이나 히스토리를 추가하여 리뷰 품질을 향상시키세요
임베딩 실패Vertex AI 할당량/연결 문제 – GCP 콘솔을 확인하세요
레포지토리 간 비용 변동일부 코드베이스는 다른 리뷰 전략이 필요합니다

Google AI 통합

Gemini 2.0 Flash가 지원하는 기능:

  • 구조화된 JSON 출력으로 기사 관련성 점수 매기기
  • 자연어 채팅 인터페이스 (안전한 NL→SQL을 위한 StruQ 패턴)
  • 콘텐츠 분류 (튜토리얼, 심층 분석, 뉴스)

보안

추가 비용 $0인 5단계 프롬프트‑인젝션 방어:

  1. 입력 검증 (20개 이상의 정규식 패턴)
  2. 구분자를 이용한 안전한 프롬프트 구성
  3. 구조화된 출력 스키마 강제 (Pydantic)
  4. 출력 검증 (스키마 강제, 프롬프트 누출 탐지)
  5. 속도 제한 ($2 / day 예산 상한, Firestore 사용)

내가 가장 자랑스러워하는 것

  • Dual‑Scoring Innovation – AI 관련성과 커뮤니티 검증을 결합하여 개인화된 그리고 실전 검증된 추천을 제공합니다.
  • Live Stats – 대시보드는 실시간 최신 수치를 표시합니다. Content Intelligence Hub는 실제 기사 수와 점수를 얻기 위해 BigQuery에 쿼리하고; LLM Observability 탭은 llm_observability.metrics 테이블에서 직접 가져온 실시간 KPI(전체 리뷰 수, 비용, 지연 시간, RAG 유사도)를 보여줍니다.
  • Cost Control – BudgetGuard는 일일 $2 / day 한도로 지출을 제한하고 우아하게 감소합니다. 전체 플랫폼은 Cloud Run의 스케일‑투‑제로 기능 덕분에 매일 수백 개의 기사와 간헐적인 PR을 처리하면서 약 $20 / month에 운영됩니다.
Back to Blog

관련 글

더 보기 »