전체 글
-
이코에코(Eco²) Streams & Scaling for SSE #3: Application, Integration Layer 업데이트 (Scan API, MQ Workers)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 16:09
Redis 인프라 배포 후 애플리케이션 레이어를 업데이트합니다.Celery Events (RabbitMQ) 대신 Redis Streams를 사용하여 SSE 이벤트를 발행/구독합니다.변경 범위domains/├── _shared/events/ # NEW: 공유 모듈│ ├── __init__.py│ ├── redis_client.py # Redis 클라이언트 팩토리 (동기/비동기)│ └── redis_streams.py # Streams 발행/구독│├── scan/│ ├── tasks/│ │ ├── vision.py # 이벤트 발행 추가│ │ ├── rule.py # 이벤트 발행 추가│ │ ├── answer..
-
Redis 3-Node 클러스터 프로비저닝 실측 로그이코에코(Eco²) 제작 문서 및 리포트/Logs 2025. 12. 26. 15:02
작업 일시: 2025-12-26환경: AWS ap-northeast-2 (Development)도구: Terraform + Ansible + kubeadm 이 문서는 단일 Redis 인스턴스를 용도별 3-Node 클러스터로 마이그레이션한 실제 작업 로그입니다.클러스터 구축에 있어 재현 가능한 환경을 지향하며 트러블슈팅 과정을 포함하여 유사한 작업 시 참고할 수 있도록 작성했습니다.Phase 1: 초기 상태 확인$ aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" \ --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value|[0],InstanceType..
-
이코에코(Eco²) Streams & Scaling for SSE #2: 3-Node Redis Cluster 선언적 배포 (GitOps)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 14:52
개요EC2 노드 프로비저닝 후 Kubernetes 클러스터에 Redis를 선언적으로 배포합니다.Spotahome Redis Operator를 사용하여 Redis + Sentinel HA 구성을 자동화합니다.Operator 선정: Spotahome vs Bitnami후보 비교기준Spotahome Redis OperatorBitnami Redis (Helm)배포 방식CRD + OperatorHelm ChartHA 구현Redis + Sentinel (자동)수동 설정 필요Failover자동 (Sentinel 관리)수동 또는 외부 도구리소스 관리CR 단위 선언적 관리values.yamlGitOps 친화도높음 (CR = YAML)중간 (Helm values)유지보수Operator가 조정(Reconcile)직접 관리..
-
이코에코(Eco²) Streams & Scaling for SSE #1: 3-Node Redis Cluster 리소스 프로비저닝이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 13:23
Kubernetes 클러스터에 Redis 3노드를 추가하는 인프라 프로비저닝 과정을 다룹니다.목표항목BeforeAfter노드 수1 (k8s-redis)3 (auth, streams, cache)인스턴스t3.medium ×1t3.medium ×1 + t3.small ×2vCPU26메모리4GB8GBPhase 1: Terraform 변경기존 모듈# terraform/main.tf (Before)module "redis" { source = "./modules/ec2" name = "k8s-redis" instance_type = "t3.medium" # ...}3개 모듈로 분리# terraform/main.tf (After)module "redis_auth" { sourc..
-
이코에코(Eco²) Streams & Scaling for SSE #0: 3-Node Redis Cluster 아키텍처 및 마이그레이션안이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 13:22
작성일: 2025-12-26시리즈: Redis Streams for SSE배경: SSE 50 VU 병목 발견Scan API의 SSE(Server-Sent Events) 스트리밍 기능에서 50 VU 부하 테스트 중 성능 저하가 관측됐다.테스트 환경항목값테스트 도구k6가상 사용자50 VU엔드포인트POST /api/v1/scan/classify/completion테스트 시간10분관측된 문제지표값문제SSE : RabbitMQ 연결1 : 21연결 폭발RabbitMQ 연결 (max)341개8.7배 급증scan-api 메모리676Mi512Mi limit 초과503 에러발생Readiness 실패문제 분석: 연쇄 실패 흐름50 VU 부하 ↓SSE 연결 16개 (동시 처리 중) ↓ × 21 연결/SSERabbi..
-
Event Streams를 앞두고 잡담잡담 2025. 12. 26. 00:10
Celery와 RabbitMQ를 중심으로 잡다한 테크닉들을 덧붙여 SSE 버전 Scan API 첫 구현 및 부하 테스트를 마쳤다.누군가에겐 기술 부채로 느껴질 수 있지만.. 그렇게 소비되지 않기 위해 실시간 시계열 데이터와 테스트, Opus가 함께하는 중이다.이번 작업은 큐잉 및 비동기를 활용해 에이전틱의 표준 UX인 SSE 방식을 이코에코에 부분 도입하는 과정이었다.큐잉이 마련된 만큼 비즈니스 앱 레이어와 Persistence 레이어(주로 RDB, Postgre다.)의 분리도 함께 시도했다.메트릭을 뽑아보며 든 생각이지만 LLM 파이프라인의 태스크를 큐잉 체인으로 관리하는 건 그다지 효율적이진 않다.작업기에서도 밝혔지만 Redis Streams로 RabbitMQ 및 Scan API SSE 동시 접속 연..
-
Redis Streams이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 25. 22:30
Redis Streams는 로그 기반 데이터 구조로, Apache Kafka의 핵심 아이디어를Redis의 단순성과 결합한 메시지 브로커/이벤트 소싱 도구입니다.공식 자료Redis 공식 문서문서URL핵심 내용Introduction to Redis Streamsredis.io/docs/data-types/streamsStream 개념, 명령어 기초XADDredis.io/commands/xadd이벤트 발행, MAXLENXREADredis.io/commands/xread블로킹 읽기, 폴링XREADGROUPredis.io/commands/xreadgroupConsumer GroupXRANGEredis.io/commands/xrange범위 조회, 리플레이설계 원문자료저자URLStreams: A New General..
-
Server-Sent Events (SSE)이코에코(Eco²) 제작 문서 및 리포트/Applied 2025. 12. 25. 22:28
SSE는 HTTP 기반의 단방향 서버→클라이언트 실시간 스트리밍 프로토콜입니다.WebSocket보다 단순하고, 실시간 진행 상황 전달에 적합합니다.공식 자료W3C/WHATWG 표준문서URL내용HTML Living Standard - Server-sent eventshtml.spec.whatwg.org공식 스펙EventSource APIMDN Web Docs클라이언트 APIHTTP 관련RFC제목관련 내용RFC 7230HTTP/1.1 Message SyntaxTransfer-Encoding: chunkedRFC 9110HTTP SemanticsContent-Type, Cache-Control프레임워크 문서프레임워크URL내용FastAPIfastapi.tiangolo.com/.../streamingStreami..