본문으로 건너뛰기

시스템 아키텍처

이 문서로 해결할 질문​

  • Mealio의 주요 컴포넌트와 데이터 흐름은 무엇인가요?
  • 동기(HTTP)와 비동기(Kafka) 경계는 어디인가요?
  • 프로덕션 인프라 배치는 어떻게 되나요?

컴포넌트 다이어그램​

  • Frontend: SSR·ISR을 사용하므로 Node.js 서버 런타임이 필요합니다. 백엔드와 독립적으로 배포하거나 동일 환경에 함께 배포할 수 있습니다.
  • Backend: producer·consumer·Kafka·관측은 함께 배포되며, Nginx가 외부 요청을 라우팅합니다.

요청 경로 (동기)​

읽기는 Cache-Aside를 우선 적용하며, 쓰기는 HTTP 200 응답 후 Consumer가 최종 반영합니다.

이벤트 경로 (비동기)​

패키지 책임​

패키지동기/비동기핵심 책임
client동기(HTTP/SSE)UI, BFF Route Handler, ISR
producer동기 + 발행API, OAuth, 캐시 조회, Kafka produce, SSE 중계
consumer비동기Kafka consume, GPT, 추천, ETL, KPI 롤업
shared—스키마, 타입, Kafka/Redis 상수

데이터 저장소 역할​

저장소데이터 예
PostgreSQLUser, Recipe, Ingredient, UserRecipeRecommendation
MongoDBInventory, ChatbotLog, EventLog, ingestion jobs
RedisAPI 캐시, refresh 세션 캐시, 챗봇 스트림, dedupe
Kafka도메인 이벤트 버스 (영속 아님)
S3레시피 이미지 (ingestion persist 재호스팅)

→ 도메인

외부 서비스​

서비스사용처
OpenAI챗봇, recipe ingestion Batch
Sentry에러 추적 (client, producer, consumer)
GA4프론트 행동 분석
CloudFlareCDN (정적 자산·ISR)

크로스 컷 관심사​

관심사구현
인증OAuth 백엔드 주도, JWT HttpOnly 쿠키
캐시Producer Cache-Aside + Consumer 무효화
관측성Correlation-ID, Prometheus /metrics, EventLog
신뢰성Kafka at-least-once, DLQ, 멱등 키

관련 문서​