Heatmap 데이터 전송 기능 구현기 - 프로젝트 아키텍처 및 기능 소개

JDooo·2024년 10월 9일
0

Intro

SSAFY 2학기 두 번째 프로젝트, '멍멍이들의 핫플레이스(멍플)'을 개발하면서 실시간 산책 데이터를 기반으로 하는 Heatmap 데이터 조회 기능을 만들어야 했습니다.

복잡한 여정에 들어가기 앞서, 기능과 아키텍처를 먼저 소개하겠습니다.

히트맵 조회 기능

멍플은 건강한 애견산책 문화를 만들기 위한 커뮤니티를 목표로 합니다. 주요 기능으로 히트맵 조회가 있는데, 이 기능은 사용자들이 많이 다닌 산책 경로를 보여주는 블루존, 산책 시 주의해야 하는 지역을 알려주는 레드존이 있습니다.

5m 반경의 그리드를 가진 히트맵에 대해 반경 2km를 조회할 경우 최대 16만개, 약 11.2MB나 되는 데이터를 처리해서 응답해야 할 정도로 네트워크 부하가 큰 기능입니다. 실시간 위치 정보 수집과 더불어 이 기능 때문에 분산처리가 가능한 아키텍처가 필요했습니다.

프로젝트 아키텍처

프로젝트를 시작하면서부터 아키텍처에 대한 고민을 많이 했습니다. 서비스 특성 상 실시간으로 주고 받는 데이터의 양이 상당하기 때문입니다. 5초마다 수집하는 산책 데이터를 바로 분석, 저장할 수 있고 대량의 데이터를 빠르게 조회할 수 있는 아키텍처가 필요했습니다. 그래서 우리 팀은 실시간 분산 처리가 가능한 이벤트 기반 아키텍처(EDA)를 적용하기로 했습니다.

EDA는 서비스 간 느슨한 결합을 제공하여, 서비스별로 자유로운 스케일링이 가능하게 해줍니다. 또한 새로운 서비스를 추가할 때 기존 서비스를 수정하지 않아도 되서 마이크로 서비스 아키텍처(MSA)와의 궁합이 좋습니다. EDA 적용을 통해 각 서비스가 독립적으로 동작할 수 있으며, 확장도 자유롭습니다.

그러나 우리 팀은 백엔드 3명, 프론트 3명으로 구성되어 있어, MSA를 적용하기에는 규모가 작았습니다. MSA는 각 서비스가 독립적으로 배포 및 운영되기 때문에 관리 포인트가 많아지며, 작은 팀에서 이를 모두 관리하는 것은 많은 리소스를 필요로 합니다.

그래서 우리 팀은 초기 개발 속도가 빠른 전통적인 모놀리식 아키텍처의 장점과, 분산 처리와 스케일링이 자유로운 EDA의 장점을 결합한 이벤트 기반 모놀리식 아키텍처를 구상했습니다.

위 그림처럼 이벤트 기반 모놀리식 아키텍처는 하나의 서버 내에서 여러 서비스가 이벤트로 상호작용하므로 자유로운 스케일링이 가능하고 실시간성도 보장됩니다.

예고

다음 글에서는 구체적으로 히트맵 조회 기능을 어떻게 설계했는지 소개하도록 하겠습니다. 부족한 글이지만, 끝까지 읽어주셔서 감사합니다!

0개의 댓글