전체 글
-
Debezium Outbox Event Router: CDC 기반 이벤트 발행이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 19:12
원문: Reliable Microservices Data Exchange with the Outbox Pattern - Gunnar Morling (Red Hat, 2019)문서: Debezium Outbox Event Router들어가며Chris Richardson이 Transactional Outbox 패턴을 이론화했다면, Gunnar Morling은 이를 실제로 구현하는 방법을 제시했다.Red Hat의 Debezium 프로젝트를 통해 CDC(Change Data Capture) 기반의 해결책을 만들어냈다.이 문서는 Polling Publisher의 한계를 넘어, 데이터베이스의 트랜잭션 로그를 직접 활용하는 방법을 다룬다.Polling Publisher의 한계왜 CDC가 필요한가?┌──────────..
-
Transactional Outbox: 이중 쓰기 문제의 해결이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 19:08
원문: Transactional Outbox Pattern - Chris Richardson (microservices.io)참고: Microservices Patterns - Chris Richardson (Manning, 2018)참고: Designing Data-Intensive Applications - Martin Kleppmann (O'Reilly, 2017) 들어가며마이크로서비스 아키텍처에서 까다로운 문제 중 하나다. 데이터베이스 업데이트와 메시지 발행을 어떻게 원자적으로 처리할 것인가?Chris Richardson이 "Microservices Patterns"에서 공식화한 Transactional Outbox 패턴은 이 문제에 대한 우아한 해결책을 제시한다. 이 패턴은 Pat Helland..
-
SAGAS: 장기 실행 트랜잭션의 해법이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 19:04
원문: SAGAS - Hector Garcia-Molina, Kenneth Salem (ACM SIGMOD Record, December 1987)PDF: Direct Download 들어가며1987년, Princeton 대학의 Hector Garcia-Molina와 Kenneth Salem이 발표한 이 논문은 분산 시스템에서 장기 실행 트랜잭션을 처리하는 방법의 원형을 제시했다. 핵심 질문은 단순하다. 트랜잭션이 몇 시간 동안 실행된다면, 그 동안 데이터를 잠가둬야 할까?Long-Lived Transactions의 문제기존 트랜잭션의 한계전통적인 ACID 트랜잭션은 짧은 작업을 전제로 설계되었다:┌───────────────────────────────────────────────────────────..
-
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의..
-
Domain-Driven Design: Aggregate와 트랜잭션 경계이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 18:53
원문: Domain-Driven Design: Tackling Complexity in the Heart of Software - Eric Evans (Addison-Wesley, 2003)참고: Implementing Domain-Driven Design - Vaughn Vernon (2013)들어가며2003년, Eric Evans가 발표한 Domain-Driven Design(DDD)은 소프트웨어 설계의 패러다임을 바꿨다.특히 Aggregate 개념은 마이크로서비스 아키텍처에서 트랜잭션 경계를 결정하는 핵심 원칙이 되었다.Pat Helland가 2007년 논문에서 말한 Entity는 Evans의 Aggregate와 유사한 개념이다.이 문서에서는 DDD의 핵심 개념과 분산 시스템에서의 적용을 다룬다.D..
-
CQRS: Command와 Query의 책임 분리이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 18:40
원문: CQRS - Martin Fowler (2011)들어가며2011년, Martin Fowler가 Greg Young의 아이디어를 정리하여 발표한 CQRS(Command Query Responsibility Segregation)는 읽기와 쓰기를 별도의 모델로 분리하는 패턴이다.흥미로운 점은 Fowler 본인이 이 글에서 CQRS의 위험성을 강하게 경고한다는 것이다. 그는 CQRS가 유용한 경우도 있지만, 대부분의 시스템에는 불필요한 복잡성을 추가한다고 강조한다."CQRS is a significant mental leap for all concerned, so shouldn't be tackled unless the benefit is worth the jump." 이 문서에서는 CQRS가 해결하는..
-
Enterprise Integration Patterns: 메시징 시스템의 설계 원칙이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 10:06
원문: Enterprise Integration Patterns - Gregor Hohpe, Bobby Woolf (2003)들어가며2003년에 출간된 이 책은 메시징 기반 시스템 통합 기반이 수록되어 있다.20년이 지난 지금도 RabbitMQ, Kafka, AWS SQS/SNS 등 모든 현대 메시징 시스템의 설계에 영향을 미치고 있다.이 책이 중요한 이유는 65개의 패턴을 정의하여 메시징 설계에 대한 공통 언어를 제공했기 때문이다."Dead Letter Queue", "Pub/Sub", "Competing Consumers" 같은 용어들이 바로 이 책에서 나왔다.모든 패턴을 다 알 필요는 없다. 실무에서 가장 자주 마주치는 핵심 패턴들을 중심으로 살펴보자.특수한 경우일 수 있지만, 만 0개월차부터 일부..
-
Uber DOMA: 마이크로서비스 관리 방법론이코에코(Eco²) 제작 문서 및 리포트/Foundations 2025. 12. 21. 08:58
원문: Introducing Domain-Oriented Microservice Architecture - Uber Engineering (2020)들어가며2018에서 2020년, Uber는 2,200개 이상의 마이크로서비스를 운영하고 있었다. 그리고 위 포스팅에서 그 혼란과 해결책을 공유했다.마이크로서비스는 모놀리스의 문제를 해결하기 위해 도입됐지만, 규모가 커지면서 새로운 종류의 복잡성을 만들어냈다.Uber의 DOMA(Domain-Oriented Microservice Architecture)는 이 복잡성을 관리하기 위한 아키텍처 원칙이다.DOMA는 마이크로서비스를 부정하는 게 아닌 마이크로서비스를 조직화하는 방법론이다.Uber의 여정: 모놀리스에서 카오스까지2012년: 모놀리스 시절Uber는 단일 ..