도메인 독립적인 채팅 플랫폼, MessagingHub의 아키텍처와 기술을 파헤치다!

by DD
2개월 전
조회수 50

특정 도메인에 의존하지 않는 범용 채팅 플랫폼, MessagingHub의 설계 원칙과 구축 사례를 소개

인증, 사용자 식별, 서비스 컨텍스트 등 채팅 플랫폼의 기본 정책과 데이터 보관 및 삭제 정책 설명

웹소켓(WebSocket) 연결 관리, 메시지 라우팅, 푸시 알림 등 MessagingHub 아키텍처 구성 요소 및 작동 방식 제시

ChatWeb을 통해 플랫폼 독립성을 확보하고, 연동 측의 구현 부담을 줄이는 웹 기반 채팅 클라이언트 구조 설명

채팅 클라이언트(ChatWeb) 연동시스템 연동을 위한 Channel Messaging API 및 MessagingHub SDK 활용 방법 제시

도메인 독립성을 위한 아키텍처 설계

MessagingHub는 특정 도메인에 종속되지 않는 독립적인 채팅 플랫폼을 목표로 설계되었다. 핵심은 도메인 간의 책임 분리(Responsibility Separation)이며, 연동 도메인의 비즈니스 로직은 MessagingHub가 관여하지 않는다.

사용자 인증: 연동 시스템이 담당하며, MessagingHub는 토큰 검증(Token Validation) 및 연결 관리만 수행

데이터 관리: 사용자 정보는 연동 측에서 제공하며, MessagingHub는 데이터 보관 및 전달(Data Storage and Delivery)만 담당

ChatWeb: 웹 기반 클라이언트를 통해 플랫폼 독립성(Platform Independence)을 확보하고, 연동 측의 구현 부담을 줄임

이러한 설계는 확장성(Scalability)유지보수성(Maintainability)을 높이는 데 기여하며, 다양한 서비스에 유연하게 적용될 수 있도록 한다.

채팅 플랫폼의 핵심 정책 분석

MessagingHub는 인증, 사용자 식별, 서비스 컨텍스트, 데이터 보관 및 삭제 등 다양한 정책을 통해 채팅 서비스를 관리한다. 특히, 데이터 보관 및 삭제 정책은 GDPR 규제 준수(GDPR Compliance)를 위해 중요한 역할을 한다.

인증: 연동 시스템의 인증을 거친 사용자에 한해 채팅 서비스 접근 허용

사용자 식별: 연동 측 도메인 정보와 사용자 식별 정보를 조합한 client ID 사용

서비스 컨텍스트: Driver2CS, Consumer2CS 등 역할 조합에 따라 채팅 허용 여부 결정

데이터 삭제: 채팅방 참여자 모두가 나가거나, 연동 측 요구 사항에 따라 자동 삭제(Automatic Deletion)

이러한 정책들은 채팅 서비스의 안정성(Stability), 보안(Security), 개인 정보 보호(Privacy)를 강화하는 데 기여한다.

MessagingHub 아키텍처 심층 분석

MessagingHub는 모놀리식(Monolithic) 구조가 아닌, 도메인별로 분리된 시스템으로 구성되어 있다. 각 컴포넌트는 독립적인 책임을 가지며, 이벤트 기반으로 느슨하게 결합되어 있어 확장성(Scalability)유지보수성(Maintainability)을 높인다.

사용자 연결 관리(connection-manager): 웹소켓 연결 관리, 연결 토큰 검증, 사용자별 연결 상태 추적

채팅 비즈니스(chat-app): 메시지 송수신, 채팅방 생성, 상태 전이, 읽음 처리 등 핵심 로직 수행

메시지 라우터(message-router): 메시지 수신자에게 라우팅, 연결 상태 및 위치 파악

알림(notification-app): 푸시 알림 발송, pushToken 기반 작동

어드민(admin-hub): 챗봇 시나리오 관리, 상담원 계정 관리, 모니터링 대시보드

이러한 아키텍처는 MSA(Microservices Architecture)의 장점을 활용하여 유연하고 확장 가능한 채팅 서비스를 제공한다.

ChatWeb을 통한 플랫폼 독립성 확보

MessagingHub는 채팅 클라이언트를 웹(Web)으로 제공하여 플랫폼 독립성을 확보하고, 연동 측의 개발 부담을 줄였다. ChatWeb은 Channel Messaging API를 활용하여 연동 측 앱과 통신하며, 채팅 비즈니스 로직을 자체적으로 처리한다.

웹 기반: iOS, Android, Flutter, React Native, 웹 등 모든 플랫폼에서 동일한 채팅 경험 제공

Channel Messaging API: 연동 측 앱은 최소한의 정보(페이로드 구조, 이벤트 메시지)만 이해하면 연동 가능

배포 용이성: 채팅 정책 변경 또는 기능 추가 시 ChatWeb만 배포하면 모든 연동 측에 즉시 반영

이러한 구조는 개발 생산성(Developer Productivity)을 향상시키고, 유지보수 비용(Maintenance Cost)을 절감하는 데 기여한다.

채팅 플랫폼 연동 방법

MessagingHub와 연동하기 위해서는 ChatWeb 연동시스템 연동 두 가지 단계를 거쳐야 한다. ChatWeb 연동은 Channel Messaging API를 통해 이루어지며, 시스템 연동은 MessagingHub가 제공하는 SDK 또는 gRPC 통신을 통해 구현된다.

ChatWeb 연동: 연동 클라이언트가 MessageChannel의 포트를 생성하여 ChatWeb에 전달, 양방향 통신

시스템 연동: MessagingHub SDK 또는 protobuf 스키마를 사용한 gRPC 통신

연동 절차: INIT → SOCKET_CONNECTED → MH_CONNECTED → MH_STARTED_CHAT 순서로 연결 상태 전이

이러한 연동 방식을 통해 연동 측은 MessagingHub의 기능을 쉽게 활용하고, 채팅 서비스를 구축할 수 있다.

도메인에 의존하지 않는 채팅 플랫폼은 어떻게 만들었을까?