전체 글
-
이코에코(Eco²) Streams & Scaling for SSE #4: KEDA 기반 이벤트 드리븐 오토스케일링이코에코(Eco²)/Event Streams & Scaling 2025. 12. 26. 17:51
k6 부하 테스트 결과를 기반으로 KEDA와 Prometheus Adapter를 활용한 스케일링 전략을 수립하고 적용합니다.Redis Streams 적용, 50VU 기준 Success Rate 86.3% (직전 테스트 Success Rate: 35%)1. 배경: CPU 기반 HPA의 한계문제 상황기존 Kubernetes HPA(Horizontal Pod Autoscaler)는 CPU/Memory 사용률 기반으로 동작합니다.# 기존 HPA (CPU 기반)apiVersion: autoscaling/v2kind: HorizontalPodAutoscalerspec: metrics: - type: Resource resource: name: cpu target: type: ..
-
KEDA: Kubernetes Event-Driven AutoscalingKnowledge Base/Applied 2025. 12. 26. 17:15
GitHub: kedacore/kedaCNCF 프로젝트: Graduated (2024)KEDA (Kubernetes Event-Driven Autoscaling)는 이벤트 기반 워크로드에 대한 세밀한 오토스케일링을 제공하는 Kubernetes 컴포넌트이다. 기존 HPA(Horizontal Pod Autoscaler)를 확장하여 외부 이벤트 소스(메시지 큐, 스트림, 데이터베이스 등)를 기반으로 스케일링할 수 있게 한다.KEDA의 핵심 기여┌─────────────────────────────────────────────────────────────────┐│ KEDA의 핵심 기여 │├───────────────────..
-
이코에코(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²) Context/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 동시 접속 연..