금융 서비스에서 EDM 아키텍처를 도입하여 얻을 수 있는 이점에 대해 발표하기 위해 작성한 PPT 자료와 그 스크립트 입니다..
EDM 소개
금융 서비스에서 EDM의 활용한 실시간 금융 거래 및 이상거래 탐지 시스템
EDM 아키텍처를 사용하여 효율적인 실시간 거래 시스템을 구성할 수 있습니다.
이유를 설명하기에 앞서 간단하게 거래 시스템 내에서 각 MS가 이벤트를 주고받는 과정의 예시를 간단하게 설명하겠습니다.
1) 사용자가 거래를 수행하면 거래 생성 서비스는 거래에 대한 거래 이벤트를 중앙화된 이벤트 브로커(이벤트 버스 또는 메시지 큐)에게 발행합니다.
2) 이벤트를 수신한 중앙 시스템은 해당 이벤트를 구독한 이상 거래 탐지 서비스와 기록 관리 서비스에 전달합니다.
3) 만약 거래 탐지 서비스가 거래 패턴을 확인했다면 적절한 부서, 사용자에게 경고 및 알림을 전송하게 되고
4) 그리고 기록 및 관리 서비스는 거래 이벤트가 정상적으로 처리되면, 거래 데이터를 분석 및 추적에 활용할 수 있도록 저장하고 관리합니다.
이와 같이 EDM 아키텍처를 통해 거래 처리 시스템을 구성한다면 다음과 같은 이점을 얻을 수 있습니다.
1) 거래 발생 서비스와 구독하는 서비스가 직접적으로 연결되어있지 않고, 이벤트 브로커를 통해 이벤트를 주고 받기 때문에 느슨한 결합이 형성됩니다.
그렇기에 한 서비스의 변경이 다른 서비스에 미치는 영향을 최소화하여, 시스템의 유연성을 향상하기에 빠른 시장 대응이 가능해집니다.
2) 실시간 데이터 처리에 효율적입니다.
이벤트 스트림은 스트리밍 방식을 통해 거래 데이터를 쌓아두지 않고 실시간으로 전달하고,
서비스간 비동기 통신과 병렬 처리를 통해 시스템 처리량을 향상시키고 지연 시간을 최소화할 수 있습니다.
그렇기 때문에 실시간으로 거래 데이터를 로 활용하고, 이상 거래 패턴을 감지하는데 용이합니다.
3) 시스템 안정성을 개선할 수 있습니다.
각각의 마이크로서비스가 독립적으로 운영되기에, 특정 서비스의 장애나 결함이 전체 서비스의 장애로 이어지지 않고, 장애 발생 지점을 신속하게 특정할 수 있기에 지속적이고 안정적인 시스템을 운영할 수 있게 됩니다.
금융 서비스는 특히 다양한 서비스간의 통합이 필요하고, 안정성이 중시되기에 이러한 이점이 극대화될 수 있다고 생각하고 있습니다.
MSA를 구성하는 것으로 읽기와 쓰기 작업을 분리하는 CQRS 패턴을 도입하여 성능 향상을 도모할 수 있습니다.
이는 모놀로식 아키텍처가 단일 DB를 사용하는 것과 다르게,MSA가 서비스 별로 개별적인 DB를 가지는 DataBase Per Service를 추구하기 때문입니다.
CQRS패턴을 통해 읽기와 쓰기 작업 각각에 특화된 스토리지와 로직을 사용하여 성능을 최적화할 수 있습니다.
특히, 읽기 작업의 경우 눈에 띄는 성능 향상을 이루어낼 수 있는데, 그 이유는 Read 만 발생하는 상황에선 , 데이터 Conflict의 위험성이 낮아지기 때문 입니다.
금융 거래 시스템은 매우 높은 트랜잭션 처리량이 요구되어지고, 복잡한 조회 요구사항을 가질 가능성이 높기에, 이와 같은 최적화를 통해 더 나은 서비스를 창출할 수 있을 것으로 예상합니다.
문제점 및 스스로 생각한 해결방안.
금융 IT는 결국 신뢰도가 무엇보다 중요합니다. 그렇기에 성능의 향상을 위해 안정성을 떨어트리는 Trade-off를 감수하며 상대적으로 새로운 형식의 아키텍처를 도입하는 것은 이점에 비해 잃는 점이 크다는 생각 역시 하게 되었습니다.
이 과정에서 '대체 불가능한 금융 서비스는 무엇일까?' 에 대해 고민하며 결국 '안정성'을 기반으로하는 동기 방식을 포기하는 것은 어렵다는 생각이 들게 되었습니다.
하지만 만약 레거시가 없는 상태에서 새로운 시스템을 창조한다면, MSA의 특징인 폴리 글랏을 통해 안정성이 필요한 서비스를 하나의 거대한 마이크로 서비스로 구성한 뒤, 내부적으로 동기방식을 사용하고 안정적인 DB를 사용하는 것으로 중대한 금융 관련 서비스는 동기성을 유지하여 안정성을 확보하되, 통합 시스템은 EDM으로 구성하여 확장성과 성능을 고려하는 것은 어떨까에 대해 생각해보게 되었습니다.
'MSA, EDA, Reactive 패러다임' 카테고리의 다른 글
Node.js기반 Express VS java기반 Spring WebFlux (0) | 2023.07.08 |
---|---|
(EDM) Event Driven MicroService 기초 지식 정리 (0) | 2023.07.07 |
Reactive System과 event-driven Architecture (0) | 2023.07.06 |
Request-Respone(Rest 통신) VS 비동기 메세지 통신(Pub-Sub) (0) | 2023.07.06 |
reactive programing [이론 정리] (0) | 2023.07.06 |