Portfolio

aiva-bb — 개인/커플(공용) 가계부

2026.02 ~ 현재

개인으로 혼자 사용도 가능하고, 부부/커플로 함께 쓸 수 있는 가계부. 거래 기반으로 AI 추천 기능을 풀스택으로 만들어 NAS에 배포·실사용 운영.

KotlinSpring Boot 3FlutterPostgreSQLRedisClaude API

문제 · 맥락

가계부 앱의 가장 큰 마찰은 '거래를 일일이 분류하는 일'과 '숫자만 쌓이고 인사이트가 없는 것'입니다. 동시에 LLM을 매 거래마다 호출하면 비용·지연이 감당이 안 됩니다. 이 둘을 품질은 살리되 비용은 누르는 구조로 풀어야 했습니다.

핵심 설계 결정

Claude API 직접 연동 + 용도별 모델 분리

  • api.anthropic.com/v1/messages에 직접 연동(anthropic-version: 2023-06-01).

  • 거래 자동 분류(POST /api/v1/ai/classify)는 빠르고 저렴한 claude-haiku-4-5.

  • 월별 소비 인사이트(POST /api/v1/ai/insights)는 품질이 중요한 claude-sonnet-4-6.

  • '어떤 작업에 어떤 모델을 쓸지'를 비용/품질 트레이드오프로 의도적으로 분리.

LLM 호출을 최소화하는 3단 비용 최적화

  • 자체 패턴 학습 폴백(PatternLearningService)

    과거 분류를 학습해 LLM 없이 규칙 매칭으로 우선 처리.

  • Redis 캐시

    분류 30일 / 인사이트 7일 TTL.

  • 캐시·패턴이 모두 미스일 때만 LLM 호출. 응답에 source(CACHE/PATTERN/AI)·confidence를 실어 판단 근거를 투명화.

  • enabled 플래그로 AI 장애 시 graceful degradation(앱은 정상, AI만 우회).

멀티유저(커플) 도메인 + 실운영 신뢰성

  • OAuth2(Google·Kakao) 로그인, 커플 단위 공유 가계부(두 사용자가 한 가계부).

  • 거래·예산·통계·자산(머니포켓)·정기거래·이체, WebSocket 실시간 동기화.

  • Sentry(에러)·Micrometer/Prometheus(메트릭)·Actuator 헬스체크, 변경 기반 일일 DB 백업, PostgreSQL autovacuum 임계치 운영 튜닝.

성과 · 지표

  • 라이브 운영 중

    aiva-bb.duckdns.org, OAuth 멀티유저·커플 공유·실데이터 기반.

  • 약 3.5개월 520커밋 · Flyway 62 마이그레이션을 1인으로 운영.

  • LLM 캐시·패턴 폴백으로 분류/인사이트 호출량을 구조적으로 절감(캐시·패턴 미스에만 과금).

한 줄 요약

Kotlin/Spring + Flutter로 AI 가계부를 1인 풀스택 개발해 NAS에 배포·실사용 운영. Claude를 용도별 모델(Haiku/Sonnet)로 분리하고 Redis 캐시·자체 패턴 학습 폴백으로 LLM 비용을 최소화.

라이브 보기
← 다른 프로젝트 보기