전체 글
-
이코에코(Eco²) Message Queue #6: 캐릭터 보상 판정과 DB 레이어 분리, Eventual Consistency 적용 (1)이코에코(Eco²)/Message Queue 2025. 12. 23. 07:12
본 문서는 보상(Reward) 판정과 DB 저장 로직의 분리, 병렬 저장을 통한 gRPC 제거,현재 상황에서 택한 Eventual Consistency 적용 방향에 대해 기록한다.목표클라이언트 응답 속도 개선 (판정 즉시 응답)DB 저장 실패가 응답에 영향 주지 않도록 격리두 DB(character, my) 저장을 병렬로 처리반영안클라이언트 응답판정 + DB 저장 완료 후판정 즉시DB 저장순차 (character → my gRPC)병렬 (Fire & Forget)my 도메인 연동gRPC 호출직접 DB INSERT실패 시 영향전체 실패각자 독립 재시도1. 문제 정의1.1 기존 구조의 문제점scan_reward_task (Chain 마지막 단계) │ ├── 1. 캐릭터 매칭 (판정) ├── ..
-
이코에코(Eco²) Message Queue #5: Celery Chain + Celery Events (1)이코에코(Eco²)/Message Queue 2025. 12. 23. 07:05
개요본 문서는 Celery Chain을 활용한 단계별 파이프라인 처리와 Celery Events 기반 실시간 진행상황 전달(SSE) 구현 과정을 기록한다.목표4단계 Celery Chain으로 파이프라인 분리 (vision → rule → answer → reward)Celery Events + SSE로 클라이언트에게 실시간 진행상황 전달Worker 분리: scan-worker (LLM tasks) vs character-worker (others, persistence layer)핵심 성과파이프라인단일 Task4단계 Chain실패 시 재시도전체 재실행해당 단계만진행상황 전달Webhook 완료 시에만SSE 실시간Worker 구조scan-worker 단일scan-worker + character-worker..
-
이코에코(Eco²) Message Queue #4: SSE vs Webhook vs Websocket이코에코(Eco²)/Message Queue 2025. 12. 22. 15:40
┌──────────────────────────────────────────────────────────────────────────────┐│ 타임라인 │├──────────────────────────────────────────────────────────────────────────────┤│ ││ 0s POST /scan/classify {"realtime": true} │..
-
이코에코(Eco²) Message Queue #3: Scan 비동기 파이프라인 로드맵이코에코(Eco²)/Message Queue 2025. 12. 22. 13:24
1. 개요 (Overview)본 문서는 Scan Pipeline의 단계적 발전 방향을 정의합니다. 현재 단일 Task로 처리되는 파이프라인을 4단계 Celery Chain으로 분리하고, 궁극적으로 Event-Driven Architecture로 전환하는 로드맵입니다.1.1 발전 단계 요약Phase아키텍처Task/Event 처리인프라상태Phase 1Monolithic Task단일 Celery TaskRabbitMQ✅ 완료Phase 2Celery Chain4단계 Task 분리RabbitMQ🔄 진행 중Phase 3HybridTask + Event 발행RabbitMQ + Kafka📋 계획Phase 4Full Event-DrivenKafka Consumer 기반Kafka Cluster📋 계획2. Phase ..
-
Message Queue 트러블슈팅: RabbitMQ 구축이코에코(Eco²) 제작 문서 및 리포트/Troubleshooting 2025. 12. 22. 10:40
RabbitMQ Operator를 GitOps(ArgoCD app-of-apps, sync-wave)로 배포하면서 발생한 문제들과 해결 과정을 기록합니다.트러블슈팅 요약#문제증상원인해결 시간1Operator Path 오류ServiceAccount not found잘못된 kustomize path10분2Control-Plane TolerationPod Pending누락된 taint toleration15분3Namespace 충돌Sync 실패두 Operator가 동일 NS 생성20분4401 UnauthorizedTopology CR Ready=FalseNetwork Policy + 인증1시간5Finalizer StuckCR Deleting 상태 고착리소스 정리 실패30분6DNS 미등록NXDOMAINExter..
-
이코에코(Eco²) Message Queue #2: RabbitMQ 구축이코에코(Eco²)/Message Queue 2025. 12. 22. 10:36
https://github.com/rabbitmq/cluster-operator GitHub - rabbitmq/cluster-operator: RabbitMQ Cluster Kubernetes OperatorRabbitMQ Cluster Kubernetes Operator. Contribute to rabbitmq/cluster-operator development by creating an account on GitHub.github.com 본 문서는 RabbitMQ를 Kubernetes 클러스터에 GitOps(ArgoCD app-of-apps, sync-wave)로 배포한 구축 과정을 기록합니다.목표RabbitMQ Cluster Operator + Messaging Topology Operator ..
-
이코에코(Eco²) Message Queue #1: MQ 적용 가능 영역 도출이코에코(Eco²)/Message Queue 2025. 12. 21. 22:52
개요RabbitMQ + Celery 아키텍처 설계에서는 Chat/Scan API의 AI 파이프라인을 비동기로 전환하는 계획을 수립했다. 그러나 MQ 도입의 효과는 AI 파이프라인에만 국한되지 않는다.본 글에서는 이코에코 백엔드 전체를 분석하여 RabbitMQ 적용으로 개선할 수 있는 영역을 도출하고, 우선순위를 정한다.분석 대상도메인역할현재 부하 특성chat폐기물 분류 챗봇GPT API 호출 (10~30초)scan이미지 스캔 + 리워드GPT API + gRPC 호출character캐릭터 발급 + 동기화DB + gRPC 호출image이미지 업로드S3 Presigned URLlocation위치 검색PostGIS 쿼리my사용자 프로필CRUDauth인증/인가Redis 블랙리스트ext-authzJWT 검증Redi..
-
이코에코(Eco²) Message Queue #0: RabbitMQ + Celery 아키텍처 설계이코에코(Eco²)/Message Queue 2025. 12. 21. 22:25
개요이코에코(Eco²) 백엔드는 현재 동기식 HTTP/gRPC 통신 기반으로 운영되고 있다. 7개 도메인 서비스(auth, character, chat, scan, my, location, image)가 Istio Service Mesh 위에서 동작하며, 분산 추적이 가능한 Observability 환경(EFK 로깅, Jaeger 트레이싱, Prometheus 메트릭)은 구축 완료된 상태다.그러나 AI 파이프라인의 동기 대기 구간에서 심각한 레이턴시 누적이 발생하고 있으며, 이는 사용자 경험과 시스템 확장성 모두에 악영향을 미친다. 본 글에서는 RabbitMQ + Celery 기반의 비동기 아키텍처 전환 계획을 수립하고, 다른 메시지 브로커(NATS, Kafka)와의 비교 분석을 통해 기술 선정 근거를 ..