SSE
-
이코에코(Eco²) Clean Architecture #15: Scan API Clean Architecture 마이그레이션 완료, FE-BE SSE E2E 연동이코에코(Eco²)/Clean Architecture Migration 2026. 1. 9. 21:25
작성일: 2026-01-09작성자: mangowhoiscloud, Opus 4.5 Scan API의 Clean Architecture 마이그레이션을 완료하고, 프론트엔드와 E2E 연동 테스트를 성공적으로 마쳤습니다.이 글에서는 #14 이후 진행된 주요 작업과 의사결정을 정리합니다.주요 태스크항목상태Scan API Clean Architecture✅ 완료RabbitMQ Topology CR 일원화✅ 완료Fanout Exchange 1:N 라우팅✅ 완료FE-BE E2E 연동✅ 완료Image API Redis 안정성 개선✅ 완료FE SSE 실시간 스캔 진행 상태✅ 완료FE 캐릭터 Optimistic Update✅ 완료1. RabbitMQ Queue 전략 최종 결정1.1 문제 상황scan.reward 태스크 완..
-
이코에코(Eco²) Scan API SSE BE-FE 연동: Eventual Consistency 대응 계획이코에코(Eco²)/Plans 2026. 1. 9. 18:47
프론트엔드 캐릭터 보유 확인 - Eventual Consistency 대응 계획상태: Updated (Frontend-only 접근법으로 변경)최종 수정: 2026-01-091. 현황 분석1.1 백엔드 응답 구조 (현재)# apps/scan_worker/application/classify/steps/reward_step.py:94-99reward_response = { "name": reward.get("name"), "dialog": reward.get("dialog"), "match_reason": reward.get("match_reason"), "type": reward.get("type"),}# ⚠️ received, already_owned, character_id 등이..
-
이코에코(Eco²) Streams & Scaling for SSE #10: Scan API 부하 테스트 (1)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 28. 17:06
테스트 시나리오 (K6)┌─────────────────────────────────────────────────────────────────────────────┐│ VU n Load Test Timeline │├─────────────────────────────────────────────────────────────────────────────┤│ ││ VU ..
-
이코에코(Eco²) Streams & Scaling for SSE #9: Race Condition 해결과정과 수평확장이코에코(Eco²)/Event Streams & Scaling 2025. 12. 28. 14:52
이전 글: Event Bus Layer 구현 Event Router + Redis Pub/Sub 기반의 SSE HA 아키텍처를 구현했지만, 실제 E2E 테스트에서 중간 이벤트 누락이 관측됐습니다. 이 글에서는 문제 관측부터 디버깅, 해결까지의 과정을 기록합니다.1. 관측된 문제1.1 증상# E2E 테스트 실행curl -s -X POST "https://api.dev.growbin.app/api/v1/scan" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"image_url": "..."}'# SSE 스트림 연결curl -s -N "https://api.dev.growbin.app/api/v1/stre..
-
이코에코(Eco²) Streams & Scaling for SSE #7: Event Bus Layer이코에코(Eco²)/Event Streams & Scaling 2025. 12. 27. 21:51
TL;DR이전 포스팅에서 Fan-out 계층의 필요성을 도출했습니다. 이번 포스팅에서는 Event Bus Layer의 실제 구현 과정을 기록합니다.Eco² Event Bus는 Redis Streams를 Durable Buffer(신뢰성 버퍼)로, Pub/Sub를 실시간 전달 채널로 사용하여 SSE Gateway로 fan-out하는 Composite Event Bus 계층입니다. 핵심 내용:Redis Streams Consumer Group 기반 이벤트 소비Pub/Sub로 실시간 fan-out멱등성 보장을 위한 Lua ScriptKafka 패턴과의 비교 및 Redis 기반 재구현배포 과정에서 마주친 트러블슈팅1. 아키텍처 분류: Composite Event Bus1.1 용어 정의Router목적지 결정 (라..
-
Streams & Scaling 트러블슈팅: SSE Gateway Sharding이코에코(Eco²)/Troubleshooting 2025. 12. 27. 15:37
SSE(Server-Sent Events) 기반 실시간 스트리밍 아키텍처를 구축하는 과정에서 발생했던 이슈를 기록합니다. 주요 SSE Gateway 노드 배포 및 초기화샤딩 아키텍처 설계 문제 (할당 vs 라우팅 불일치)Race Condition (SSE 연결 전 이벤트 발행)Redis 클라이언트 분리 (Streams vs Cache)SSE 샤딩 아키텍처┌─────────────────────────────────────────────────────────────────────────┐│ SSE 샤딩 아키텍처 (B안) │├─────────────────────────────────────────────────────..
-
이코에코(Eco²) Streams & Scaling for SSE #5: SSE Gateway, 단일 Consumer에서 분산 Fan-out까지이코에코(Eco²)/Event Streams & Scaling 2025. 12. 27. 15:28
50+ VU(Virtual Users) 부하 테스트에서 발생한 SSE 연결 병목을 해결하기 위한 단계별 개발 과정을 기록합니다.요약연결당 XREAD → 50 VU에서 CPU 85% 병목단일 SSE-Gateway → 깔끔한 이벤트 수신, 수평확장 불가StatefulSet + Consistent Hash → 해싱 정합성 불일치Fan-out 계층 필요성 ← 현재 단계2. 단일 SSE-Gateway로 전환2.1. 이전 아키텍처 문제점연결당 XREAD 모델 (N:N):┌─────────────────────────────────────────────────────────────┐│ 연결당 XREAD (AS-IS) │├─────────────..
-
이코에코(Eco²) Message Queue #13: Scan API 성능 측정 (SSE + Celery Chain + Gevent)이코에코(Eco²)/Message Queue 2025. 12. 25. 04:57
Celery Chain + Gevent Pool 기반 비동기 아키텍처 전환 후 실제 성능을 측정하고, HTTP 1.1 + gRPC + asyncio와 비교합니다.항목내용테스트 일시2025-12-25 02:16 ~ 04:35 (KST)테스트 도구k6 (JavaScript 기반 부하 테스트)대상 엔드포인트/api/v1/scan/classify/completion (SSE)모니터링Prometheus + Grafana (Scan SSE Pipeline 대시보드)1. 테스트 환경1.1 Queueing 아키텍처1.2 Worker 설정scan-workergevent1001~5character-match-workergevent501~4character-workergevent501~2my-workergevent501~2..