본문으로 건너뛰기
sanguk
Projects로 돌아가기

Project

Mealio

AI 기반 맞춤형 레시피 추천 플랫폼

보유 재료와 대화 맥락을 바탕으로 레시피를 추천하는 AI 챗봇 서비스를 풀스택으로 설계·개발한 개인 프로젝트입니다. 캐싱으로 레시피 검색 응답 시간을 약 66% 단축했고, Batch API와 NAT Instance로 인프라 비용을 최대 50% 절감했습니다.

형태
개인 프로젝트
주요 기술
Next.jsNestJSPostgreSQLMongoDBRedisKafka

Experience

설계와 구현에서 풀어낸 문제

각 모듈은 실서비스에서 마주치는 제약 조건과, 그 안에서 선택한 해결을 기준으로 정리했습니다.

  1. 01

    아키텍처 설계

    실시간 요청과 이벤트 기반 비동기 처리를 분리한 백엔드 구조

    챗봇 응답 생성, 행동 이벤트 집계처럼 처리 시간이 긴 작업을 API 응답 과정에서 배제하고자 하였습니다. 실시간 요청 처리와 이벤트 기반 비동기 처리를 분리하는 것을 핵심 설계 과제로 삼았고, 백엔드를 API 서버와 이벤트 처리 워커로 나누어 Kafka로 연결했습니다.

    • 이벤트 기반 비동기 처리 구조로 서비스 간 결합도 완화 및 체감 응답 속도 향상
  2. 02

    DB 설계

    도메인별 읽기·쓰기 패턴에 맞춘 다중 저장소 전략

    도메인별로 읽기·쓰기 패턴과 보존 기간이 달라, 단일 저장소로는 무결성·성능·운영 비용을 충족할 수 없었습니다. 데이터 특성에 맞게 관계형 DB와 문서형 DB를 역할 분리하고, 고빈도 갱신·캐시·벡터 검색까지 계층을 나누어 설계했습니다.

    • Redis Cache-Aside 전략으로 레시피 검색 응답 시간을 warm p95 기준 약 30ms에서 10ms로 단축
    • 조회수 집계 카운터를 레시피 본문에서 분리하여 조회수 폭증 상황에서의 쓰기 지연 약 5배 완화
  3. 03

    레시피 추천 챗봇 개발

    Function Calling·스트리밍·멱등 과금까지 고려한 대화형 추천

    단순 Q&A에서 벗어나 보유 재료와 대화 맥락에 맞는 추천을 제공하고자 하였습니다. LLM이 필요할 때 도메인 데이터를 직접 호출해 활용하는 Function Calling 구조를 도입했고, 과금 안정성과 외부 호출 실패까지 함께 고려하였습니다.

    • 시맨틱 검색·질의 확장·가중치 정렬로 LLM 컨텍스트 품질 확보, 도메인 함수를 도구 형태로 분리해 데이터 소스 확장 용이성 확보
    • Redis·SSE로 응답 청크 실시간 전달하는 비동기 스트리밍 파이프라인 구축
    • 지수 백오프 재시도와 DLQ를 두어 LLM·외부 호출 실패를 격리하고 실패 전파 범위를 제한
    • 스트림 채널 단위 멱등 과금으로 중복 요청·재시도 시 크레딧 이중 차감 방지
    • OpenAI Completions API → Responses API 마이그레이션으로 10턴 세션 기준 요청 body 약 30% 절감
  4. 04

    레시피 ETL 파이프라인 구축

    공공데이터부터 RAG 벡터 적재까지 이어지는 6단계 파이프라인

    식품의약품안전처 레시피 데이터를 LLM으로 도메인에 맞게 변환하고, DB에 영속화한 뒤 RAG 검색용 벡터까지 적재하는 6단계 파이프라인을 구현하였습니다. 토큰 비용을 절감하면서도 단계별 독립 배포·운영과 품질 관측이 가능하도록 설계하였습니다.

    • Optimistic Lock을 적용해 각 단계에서 메시지 재전달·cron 중복 실행 시 이중 처리 방지
    • OpenAI Batch API로 공공데이터 원본을 대량 비동기 변환 후 일정 주기로 폴링하여 동기 대비 API 비용 50% 절감
    • 원본 이미지를 리사이즈·압축·CDN 호스팅하여 원본 URL 사용 대비 LCP 약 3배 개선
  5. 05

    프론트엔드 개발

    토큰·명세·라우팅 전략이 맞물리는 프론트 아키텍처

    Figma에 구축한 디자인 시스템을 바탕으로 토큰·명세·라우팅 전략이 서로 맞물리는 프론트 아키텍처를 목표로 했습니다.

    • Figma 변수·토큰·컴포넌트 체계와 코드를 1:1 동기화
    • 온디맨드 ISR과 태그 기반 revalidation으로 공개 도메인의 캐시 정합성 관리
  6. 06

    배포·운영

    비용 최적화와 관측성을 전제로 한 배포·운영

    2개의 AWS EC2 인스턴스와 PaaS 조합으로 비용 최적화와 배포 안정성을 확보하고, 메트릭·KPI 모니터링과 장애 대응을 전제로 실제 운영 가능한 서비스를 목표하였습니다.

    • AWS EC2 NAT Instance로 Public IPv4 비용 50% 절감
    • Prometheus 메트릭 수집으로 HTTP·DB 지연·inflight·슬로우 쿼리 모니터링
    • Grafana 알림과 Slack 채널을 연결하여 KPI 임계 신호와 장애를 조기 감지
    • 시크릿 값으로 내부 SSR 트래픽과 외부 트래픽을 구분하여 rate limit 차등 적용

Next

Mealio처럼, 제품 단위로 끝까지 책임집니다

설계·구현·운영까지 한 흐름으로 다루는 풀스택 협업이 필요하면 편하게 문의해 주세요.