전체 글
-
이코에코(Eco²) Message Queue #7: Celery Chain + Celery Events (2)이코에코(Eco²)/Message Queue 2025. 12. 24. 11:44
이전 글: Celery Chain + Celery Events (1)관련 트러블슈팅: Celery + RabbitMQ 트러블슈팅 가이드개요본 문서는 4단계 Scan Pipeline + Fire&Forget RDB 저장으로 고도화된 Celery Chain 아키텍처를 다룬다.클라이언트 응답 경로에서 Persistence Layer를 완전히 제거하여 Stateless한 응답을 구현했다.1. 설계 원칙1.1 기존 아키텍처의 문제(1)편에서 scan_reward_task가 character-worker에서 실행되며 DB 조회와 gRPC 호출을 포함:scan-worker character-worker┌────────────────────────┐ ┌──────────────..
-
Message Queue 트러블슈팅: Quorum Queue -> Classic Queue 마이그레이션이코에코(Eco²) Context/Troubleshooting 2025. 12. 24. 09:20
환경 정보ComponentVersionRabbitMQ4.0.9Celery5.4.0kombu5.6.1amqp5.3.1Python3.11.14RabbitMQ Messaging Topology Operatorlatest (rabbitmqoperator/messaging-topology-operator)RabbitMQ Cluster Operatorlatest (rabbitmqoperator/cluster-operator)Kubernetesv1.28.15문제 상황증상Celery 워커들이 RabbitMQ에 연결 후 즉시 연결이 끊기고 무한 재시작하는 현상 발생:[2025-12-24 00:03:34,585: INFO/MainProcess] Connected to amqp://admin:**@eco2-rabbitmq...
-
이코에코(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²) Context/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 ..