Eventual Consistency
-
이코에코(Eco²) Eventual Consistency #4: Blacklist Relay Worker 구현이코에코(Eco²)/Eventual Consistency 2025. 12. 30. 15:35
1. 전체 디자인1.1 시스템 개요①auth-api → RabbitMQ정상 발행 (99%+)②auth-api → RedisMQ 실패 시 Outbox 적재③Redis → auth-relay1초마다 폴링④auth-relay → RabbitMQOutbox 이벤트 재발행⑤RabbitMQ → ext-authzFanout 브로드캐스트1.2 데이터 흐름단계컴포넌트동작①Redis BlacklistSETEX token:blacklist:{jti} {ttl}②Publisherbasic_publish() 시도③Outbox → Relay실패 시 LPUSH → RPOP → republish④RabbitMQFanout 브로드캐스트⑤ext-authzcache.Store(jti, entry) 2. 주요 컴포넌트2.1 컴포넌트 의존성..
-
Eventual Consistency 트러블슈팅: Character Rewards INSERT 멱등성 미보장 버그 픽스이코에코(Eco²)/Troubleshooting 2025. 12. 30. 14:32
날짜: 2025-12-30영향 범위: my.user_characters 테이블, 캐릭터 인벤토리 조회심각도: Medium (데이터 중복, UX 영향, 해결 전 표기 13/13)0. 부하테스트 수행 기록이 버그는 12월 28-29일간 집중 부하테스트 과정에서 발견.총 13회의 k6 부하테스트를 수행하며 Scan SSE 파이프라인의 성능을 검증했고, 그 과정에서 캐릭터 보상 중복 저장 문제가 발생.부하테스트 요약#VUsDurationScan TotalCompletion RateSuccess Rate11002m1,15096.0%100%21002m1,02098.5%100%32002m1,83199.8%100%42502m2,13199.9%100%53002m2,53899.9%100%64002m3,38598.2%100..
-
이코에코(Eco²) Message Queue #9: 캐릭터 보상 판정과 DB 레이어 분리, Eventual Consistency 적용 (2)이코에코(Eco²)/Message Queue 2025. 12. 24. 11:51
관련 글: 보상 판정과 DB 레이어 분리 설계 (1) 본 문서는 (1)편에서 설계한 보상 판정/저장 분리 아키텍처의 최종 구현과 로컬 캐시 기반 매칭을 다룬다.1. 설계 변경 요약항목(1)편 설계최종 구현Dispatcherpersist_reward_task (별도 task)제거 (scan.reward에서 직접)캐릭터 매칭DB 조회로컬 캐시매칭 호출동일 Worker 내별도 Worker 동기 호출Queue 구조reward.persistcharacter.match + character.rewardgRPCmy 도메인용완전 제거변경 이유persist_reward_task 제거:(1)편 설계에서 dispatcher task가 delay() 두 번만 수행. 불필요한 홉 제거:# Beforescan.reward → p..
-
이코에코(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. 캐릭터 매칭 (판정) ├── ..
-
Life Beyond Distributed Transactions: 분산 트랜잭션 없이 살아가기이코에코(Eco²)/Foundations 2025. 12. 21. 18:58
원문: Life Beyond Distributed Transactions: An Apostate's Opinion - Pat Helland (CIDR 2007) 들어가며2007년, Microsoft의 아키텍트 Pat Helland는 분산 시스템 커뮤니티에 "배교자의 의견(An Apostate's Opinion)"이라는 제목의 논문을 발표했다. 그는 수십 년간 분산 트랜잭션의 주도자였지만, 이제 그것이 대규모 시스템에서는 불가능하다고 선언한 것이다.이 논문이 중요한 이유는 현대 마이크로서비스 아키텍처의 이론적 기반을 제공했기 때문이다. "왜 도메인 간 트랜잭션을 피해야 하는가?", "왜 Eventual Consistency를 받아들여야 하는가?"에 대한 근본적인 방향을 제시한다.분산 트랜잭션의 환상2PC의..