전체 글
-
이코에코(Eco²) Streams & Scaling for SSE #6: Event Router + Pub/Sub (Fan-out Layer)이코에코(Eco²)/Event Streams & Scaling 2025. 12. 27. 19:15
TL;DRSSE Gateway, 단일 Consumer에서 분산 Fan-out까지에서 Consistent Hash + StatefulSet으로 non-HA 연결 라우팅을 해결했지만, 수평확장을 적용할 경우 이벤트가 Dest Pod로 도착하는 것이 보장되지 않았습니다.Worker의 해싱과 Istio의 해싱이 일치하지 않아, Pod 수가 동적인 HA 환경에선 라우팅이 불가능했고, 해싱 불일치를 해결하기 위해선 Istio의 Consistent Hashing에 호응하도록 Woker 측 추가 구현 부담이 가해졌습니다. 이는 해시 기반 라우팅이 SSE HA를 위한 해법이 아님을 시사했고 결국 Fan-out 계층(Event Router+Pub/Sub)의 분리로 이어졌습니다.1. 지난 포스팅 정리1연결당 XREAD50 ..
-
redis-pubsub, event-router 노드 프로비저닝 실측 로그이코에코(Eco²) Context/Logs 2025. 12. 27. 18:35
기존 18-Node 클러스터에 2개의 새 노드를 추가:k8s-event-router (t3.small) - Redis Streams → Pub/Sub Bridgek8s-redis-pubsub (t3.small) - Realtime Event Broadcast아키텍처 배경┌─────────────────────────────────────────────────────────────────────────────┐│ SSE HA Architecture (Full) │├─────────────────────────────────────────────────────────────────────────────┤│ ..
-
Streams & Scaling 트러블슈팅: SSE Gateway Sharding이코에코(Eco²) Context/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) │├─────────────..
-
Sharding & Routing: 분산 데이터 파티셔닝과 라우팅Knowledge Base/Foundations 2025. 12. 27. 14:27
분산 시스템에서 데이터를 여러 노드에 분산(Sharding)하고 요청을 올바른 노드로 라우팅(Routing)하는 기술.Eco²에서는 Redis Streams 샤딩과 Istio Consistent Hash로 분산 라우팅을 시도했습니다. (현재는 Pub/Sub로 전환)1차 지식생산자핵심 논문논문저자발표핵심 내용Consistent Hashing and Random TreesKarger et al. (MIT)STOC 1997Consistent Hashing 원본 논문Dynamo: Amazon's Highly Available Key-value StoreDeCandia et al.SOSP 2007Virtual Nodes, Quorum, 실제 적용Jump Consistent HashLamping, Veach (Go..
-
Consensus Algorithms: 분산 합의 알고리즘Knowledge Base/Foundations 2025. 12. 27. 13:50
분산 시스템에서 여러 노드가 하나의 값에 동의하도록 하는 합의 알고리즘.Eco²에서는 Redis Sentinel (Quorum 기반)에서 사용합니다.1차 지식생산자핵심 논문논문저자발표핵심 내용In Search of an Understandable Consensus AlgorithmDiego Ongaro, John OusterhoutUSENIX ATC 2014Raft 합의 알고리즘Paxos Made SimpleLeslie Lamport2001Paxos 알고리즘 간소화 설명Impossibility of Distributed Consensus with One Faulty ProcessFischer, Lynch, PatersonJACM 1985FLP Impossibility (합의의 불가능성)공식 문서기술문서핵..
-
Karpenter: Kubernetes Node AutoscalingKnowledge Base/Applied 2025. 12. 26. 20:42
참고: Karpenter Documentation, AWS Karpenter GitHub, CNCF Karpenter들어가며Kubernetes에서 Pod 스케일링(HPA, KEDA)은 잘 작동하지만, 노드 리소스가 부족하면 Pod는 Pending 상태에 머문다. 기존 Cluster Autoscaler는 ASG(Auto Scaling Group)에 의존하여 스케일업이 느리고 인스턴스 타입 선택이 제한적이다.┌─────────────────────────────────────────────────────────────┐│ 노드 스케일링의 필요성 │├───────────────────────────────────────────────────..
-
KEDA 트러블슈팅: RabbitMQ 기반 이벤트 드리븐 오토스케일링이코에코(Eco²) Context/Troubleshooting 2025. 12. 26. 19:43
본 문서는 Kubernetes 환경에서 KEDA(Kubernetes Event-driven Autoscaling)를 활용하여 RabbitMQ 큐 길이 기반 Worker Pod 오토스케일링을 구현하는 과정에서 발생한 이슈와 해결 방법을 기술합니다.환경 정보구성 요소버전/사양Kubernetesv1.28.4 (kubeadm)KEDAv2.16.0RabbitMQv3.13.x (RabbitMQ Operator)ArgoCDv2.13.xCNICalico (NetworkPolicy 적용)목표CPU 기반 HPA의 한계를 극복하고 메시지 큐 길이 기반 오토스케일링 구현scan-worker의 동적 스케일링으로 부하 대응력 향상k6 부하 테스트 시 성공률 개선1. 배경: CPU 기반 HPA의 한계1.1 기존 구조scan-wor..