
Firebase와 Cloud Firestore로 실시간 메신저 서비스 이전
코드너리 | 2022. 09. 26
실시간 스트리밍
사용된 기술:



기존 문제점:
메신저 서비스의 데이터를 관리하면서 여러 메신저 서비스 이벤트를 발행하는 IM (Instant Messaging) 서버, 대화방에 접속 중인 앱 또는 웹 클라이언트 세션과 실시간으로 통신하며 클라이언트와 IM 서버에서 발생하는 이벤트를 전달하는 앱 클라이언트 세션 서버와 웹 클라이언트 세션 서버,
마지막으로 IM 서버와 번개장터의 내부 서비스를 연동하면서 클라이언트에게 메신저 서비스의 주요 비즈니스 로직을 제공하는 API 서버까지 총 4개의 메신저 서버와 클라이언트가 실시간으로 메신저 서비스의 데이터와 이벤트를 교환하는 구조였습니다.
구현 방법:
Realtime Database와 Cloud Firestore 모두 실시간 데이터 변경 이벤트를 지원하고 있으며 각각의 장단점이 존재했지만 많은 양의 데이터를 읽고 써야 하는 메신저 서비스의 특성상
Collection과 Document를 통한 계층별 데이터 관리, 다중 필드에 대한 쿼리와 인덱스, 데이터베이스의 자동 확장과 같이 많은 양의 데이터 읽기와 쓰기를 위한 기능들을 지원하는 Cloud Firestore 를 선택했으며,
Cloud Firestore로 메신저 서비스의 데이터를 관리하고 실시간 데이터 변경 이벤트로 메신저 서비스의 실시간 통신 로직을 구현하면서 전보다 간단한 구조로 메신저 서비스를 구현할 수 있었습니다.