아키텍처 설계
실시간 요청과 이벤트 기반 비동기 처리를 분리한 백엔드 구조
챗봇 응답 생성, 행동 이벤트 집계처럼 처리 시간이 긴 작업을 API 응답 과정에서 배제하고자 하였습니다. 실시간 요청 처리와 이벤트 기반 비동기 처리를 분리하는 것을 핵심 설계 과제로 삼았고, 백엔드를 API 서버와 이벤트 처리 워커로 나누어 Kafka로 연결했습니다.
- 이벤트 기반 비동기 처리 구조로 서비스 간 결합도 완화 및 체감 응답 속도 향상
Project
AI 기반 맞춤형 레시피 추천 플랫폼
보유 재료와 대화 맥락을 바탕으로 레시피를 추천하는 AI 챗봇 서비스를 풀스택으로 설계·개발한 개인 프로젝트입니다. 캐싱으로 레시피 검색 응답 시간을 약 66% 단축했고, Batch API와 NAT Instance로 인프라 비용을 최대 50% 절감했습니다.
Experience
각 모듈은 실서비스에서 마주치는 제약 조건과, 그 안에서 선택한 해결을 기준으로 정리했습니다.
실시간 요청과 이벤트 기반 비동기 처리를 분리한 백엔드 구조
챗봇 응답 생성, 행동 이벤트 집계처럼 처리 시간이 긴 작업을 API 응답 과정에서 배제하고자 하였습니다. 실시간 요청 처리와 이벤트 기반 비동기 처리를 분리하는 것을 핵심 설계 과제로 삼았고, 백엔드를 API 서버와 이벤트 처리 워커로 나누어 Kafka로 연결했습니다.
도메인별 읽기·쓰기 패턴에 맞춘 다중 저장소 전략
도메인별로 읽기·쓰기 패턴과 보존 기간이 달라, 단일 저장소로는 무결성·성능·운영 비용을 충족할 수 없었습니다. 데이터 특성에 맞게 관계형 DB와 문서형 DB를 역할 분리하고, 고빈도 갱신·캐시·벡터 검색까지 계층을 나누어 설계했습니다.
Function Calling·스트리밍·멱등 과금까지 고려한 대화형 추천
단순 Q&A에서 벗어나 보유 재료와 대화 맥락에 맞는 추천을 제공하고자 하였습니다. LLM이 필요할 때 도메인 데이터를 직접 호출해 활용하는 Function Calling 구조를 도입했고, 과금 안정성과 외부 호출 실패까지 함께 고려하였습니다.
공공데이터부터 RAG 벡터 적재까지 이어지는 6단계 파이프라인
식품의약품안전처 레시피 데이터를 LLM으로 도메인에 맞게 변환하고, DB에 영속화한 뒤 RAG 검색용 벡터까지 적재하는 6단계 파이프라인을 구현하였습니다. 토큰 비용을 절감하면서도 단계별 독립 배포·운영과 품질 관측이 가능하도록 설계하였습니다.
토큰·명세·라우팅 전략이 맞물리는 프론트 아키텍처
Figma에 구축한 디자인 시스템을 바탕으로 토큰·명세·라우팅 전략이 서로 맞물리는 프론트 아키텍처를 목표로 했습니다.
비용 최적화와 관측성을 전제로 한 배포·운영
2개의 AWS EC2 인스턴스와 PaaS 조합으로 비용 최적화와 배포 안정성을 확보하고, 메트릭·KPI 모니터링과 장애 대응을 전제로 실제 운영 가능한 서비스를 목표하였습니다.
Writing
이 프로젝트를 만들며 정리한 글입니다.
Next
설계·구현·운영까지 한 흐름으로 다루는 풀스택 협업이 필요하면 편하게 문의해 주세요.