Kafka는 데이터 스트리밍을 처리하는 강력한 메시징 시스템으로, 토픽을 어떻게 설계하느냐에 따라 시스템의 확장성과 유지보수성이 크게 달라진다.
Kafka 토픽 설계 방식에는 크게 비즈니스 기반(Business-Oriented) 과 이벤트 기반(Event-Oriented) 접근 방식이 있다.
비즈니스 기반 설계는 도메인 또는 서비스의 역할을 기준으로 토픽을 정의하는 방식이다.
토픽이 특정 비즈니스 개념과 1:1로 매칭되므로, 서비스별 데이터 흐름을 명확하게 정리할 수 있다.
EX)
order-topic
execution-topic
settlement-topic
matching-topic
이벤트 기반 설계는 발생하는 이벤트를 중심으로 토픽을 정의하는 방식이다.
이벤트 소스(Event Source) 또는 특정한 액션(Action)을 기준으로 토픽을 분류한다.
EX)
user.created
order.placed
payment.processed
inventory.updated

MSA 기반 트레이딩 시스템에서는 기본적으로 비즈니스 기반 토픽 설계를 따르면서도, 특정 상황에서 이벤트 기반 방식을 도입한 하이브리드 토픽 설계를 적용했다.
order-topic, matching-topic, execution-topic, settlement-topic, notice-topic을 운영함.이유: 서비스 간 결합도를 낮추고, 롤백 및 재처리를 용이하게 하기 위함.
execution-failure-topic, settlement-failure-topic을 별도로 분리하여 체결 및 정산 실패 시 해당 이벤트만 별도로 관리하도록 함.execution-topic에서 실패 이벤트까지 처리하려 하면, 실패 이벤트가 기존 정상 체결 이벤트 흐름과 섞여 복잡성이 증가할 수 있음.DLT(Dead Letter Topic)도 각 모듈별로 나누어 서비스별 장애를 독립적으로 관리하도록 함.이유: 알림 유형별로 중요도가 다르고, 목적이 다르기 때문.
filling-notice-topic (체결 알림): 유저에게 거래 체결 내역을 즉시 전달해야 하는 실시간성 요구.notice-topic (일반 공시 알림): 금융 공시 등 상대적으로 중요도가 낮고, 대량으로 전송될 수 있는 알림.notice-topic에서 처리한다면, 공시 알림이 많아질 경우 체결 알림 전송이 지연될 가능성이 있음.failure-topic)을 통해 장애를 격리하고 처리.