본문으로 건너뛰기

개요

이 문서로 해결할 질문

  • @mealio/shared는 무엇을 제공하나요?
  • Producer/Consumer가 어떻게 import하나요?
  • 빌드 순서는 무엇인가요?

패키지 정보

항목
이름@mealio/shared
경로server/shared
역할Producer·Consumer 공통 설정·DB·타입·상수

제공 범위

server/shared/src/
├── config/ # kafka, redis, observability, sentry
├── constants/ # kafka-topics, cache-keys, redis-channels
├── policy/ # user-credits, recipe-ingestion
├── database/
│ ├── prisma/ # schema, migrations, PrismaService
│ └── mongoose/ # schemas (Inventory, EventLog, ...)
├── redis/ # RedisService, RedisModule
├── types/events/ # Kafka·SSE 이벤트 타입
├── observability/ # Sentry 래퍼
└── utils/ # logger, correlation-id, recipe-nutrition

import 예

import {
PrismaModule,
KAFKA_TOPICS,
cacheKeyRecommendation,
computeChatbotCreditCost,
} from '@mealio/shared';

import { Recipe, Prisma } from '@mealio/shared/prisma-client';

빌드 순서

pnpm run build:shared # prisma generate + tsc
pnpm run build:producer
pnpm run build:consumer

스키마를 변경한 뒤에는 루트에서 pnpm run db:prisma:generate를 반드시 실행해야 합니다.

DB 모듈

모듈용도
PrismaModulePostgreSQL — connection pool config 주입
MongooseSchemasModuleMongoDB — 스키마·풀 config
RedisModuleRedis 클라이언트

Producer와 Consumer의 app.module에서 forRoot 또는 forRootAsync로 pool 설정을 전달합니다.

확장 원칙

  • Producer와 Consumer 양쪽에서 쓰는 상수·타입·스키마만 shared에 추가합니다.
  • 패키지 전용 로직은 producer 또는 consumer에 유지합니다.
  • Kafka 토픽·캐시 키를 변경할 때는 Producer·Consumer 문서와 Observability 를 함께 갱신해야 합니다.

관련 문서