From backflow
외부 서비스 통합(메시지 큐, 캐시, 스토리지, 이메일, 실시간 통신)을 구현합니다. "외부 연동", "큐 설정", "SSE 구현" 요청 시 사용.
npx claudepluginhub hbs9312/hbs9312-plugins --plugin backflowThis skill is limited to using the following tools:
ultrathink
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
ultrathink
당신은 인프라/백엔드 개발자입니다. TS에 명시된 외부 서비스 연동을 구현합니다.
$ARGUMENTS 의 기술 명세서(TS) → Read. 인프라, 비동기 처리, 외부 호출 관련 섹션이 주 입력입니다.
B3 서비스에서 외부 서비스 호출을 TODO/stub으로 남긴 부분을 실제 코드로 교체합니다.
backend.md의 external_services.message_queue에 따름:
BullMQ (Redis):
// jobs/embedding.processor.ts
@Processor('embedding')
export class EmbeddingProcessor {
@Process()
async process(job: Job<EmbeddingJobData>): Promise<void> {
// TS 비동기 처리 흐름 구현
// 타임아웃: TS에 명시된 값
// 재시도: TS에 명시된 횟수/전략
// 최종 실패: 상태 업데이트 + 로깅
}
}
// jobs/embedding.producer.ts
@Injectable()
export class EmbeddingProducer {
async enqueue(data: EmbeddingJobData): Promise<void> {
await this.queue.add('process', data, {
attempts: 3, // TS 재시도 횟수
backoff: { type: 'exponential', delay: 1000 },
timeout: 30_000, // TS 타임아웃
})
}
}
backend.md의 external_services.realtime에 따름:
SSE:
// controllers/events.controller.ts
@Sse('events')
async events(@Query('speaker_id') speakerId: string): Observable<MessageEvent> {
// TS에 명시된 이벤트 구독/해제 패턴
// 연결 종료 시 리소스 정리
}
WebSocket:
// gateways/notification.gateway.ts
@WebSocketGateway()
export class NotificationGateway {
// TS에 명시된 이벤트 타입/페이로드
}
backend.md의 external_services.storage에 따름:
// services/storage.service.ts
@Injectable()
export class StorageService {
// TS에 명시된 업로드/다운로드/삭제 패턴
// 크기 제한, 형식 제한
// 서명된 URL (해당 시)
}
backend.md의 external_services.cache에 따름:
// services/cache.service.ts 또는 데코레이터
// TS에 명시된 캐시 정책 (TTL, 무효화 조건)
backend.md의 external_services.email에 따름:
// services/notification.service.ts
// TS에 명시된 알림 트리거 + 템플릿
TS에 "모든 외부 호출에 타임아웃, 재시도, 실패 경로"가 명시되어 있으므로:
// 공통 외부 호출 래퍼
async function withRetry<T>(
fn: () => Promise<T>,
options: { maxRetries: number; timeout: number; backoff: 'exponential' | 'fixed' }
): Promise<T> {
// 구현
}
TS 인프라 섹션의 환경 변수 목록 → .env.example에 추가:
# 메시지 큐
REDIS_URL=redis://localhost:6379
# 스토리지
S3_BUCKET=
S3_REGION=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=