개요아파치에서 스칼라로 개발한 오픈소스 메세지 브로커링크드인에서 최초 개발2011년 오픈소스화링크드인에서는 백엔드 데이터 흐름 처리 위한 목적스트리밍 데이터 원할한 처리정적인 데이터 저장이 아닌 동적인 데이터 처리 주 목적계속적으로 변하는 스트리밍 데이터⇒ 현대의 기업은 정적인 DB로는 관리할 수 없는 복잡성, 다양성을 띈 데이터 처리할 수 있는 시스템 요구ex) 배민 라이더 위치 추적, 지하철 칸별 혼잡도RDBMS의 트랜잭션 로그 마이너 기술 영향을 받아서 만들어졌음데이터가 생성, 변경될 때 마다 로그를 기록목표고성능이벤트분산스트리밍카프카 스트림이라는 별도의 기술(api) 사용스트리밍 프로세스에 최적화된 방법 제공사용 목적시스템 또는 애플리케이션 간에 실시간 데이터 파이프라인 만들 때 사용대용량 실시간..
MSA/Event Driven Architecture
개요Event Driven Architecture는 MSA에서 Producer가 여러 Consumer 서비스를 직접 호출해야 했던 구조에서 Event Broker 하나에만 이벤트를 전송하면 되는 구조로 개선했다는 것이 가장 큰 특징이다. 이로 인해 서비스가 느슨하게 결합(Loosely Coupled)되고, 결합도가 낮아진다. 다음 문단부터 정리할 EDA의 장단점은 이러한 EDA의 특징 때문에 생기는 것이라고 이해할 수 있다.장점확장성시스템에 부하가 증가할 때 Producer와 Consumer를 scale out(수평적 확장) 할 수 있다.Producer가 Counsumer를 직접 호출하지 않기 때문에 시스템을 크게 재설계하지 않아도 된다유연성새로운 이벤트나 처리 로직을 추가할 때 기존 컴포넌트에 미치는 ..
정의시스템 컴포넌트 간의 통신을 위해 이벤트를 생성하고 감지하는 아키텍처이벤트: 무언가 발생한 것시스템의 상태 변화Event Notification으로 전달명령과 관련된 데이터를 포함할 수도 있고, 단지 무언가 발생했다는 알림일수도 있다불변(immutable) 이다⇒ Event Sourcing의 원천이 된다명령(Command): 다른 시스템에게 응답을 요청하는 것Event Sourcing데이터 변경 이벤트를 저장하고 시스템의 상태를 재구축하는 방식데이터 변경 히스토리 추적데이터 일관성 보장구성 요소Producer: 이벤트 생성Broker: 이벤트를 적절한 Consumer로 라우팅Consumer: 이벤트를 수신하고 처리이벤트 기반 아키텍처나 메세지 기반 아키텍처에서는 Publisher-Subscriber ..