k-pullup

카카오맵 API를 활용한 대한민국 철봉 지도

2024.02 - 유지보수 중· BE 1명, FE 1명· 백엔드 리드

시스템 아키텍처
시스템 아키텍처

운동을 좋아하는 사람들이 전국의 철봉 위치를 쉽게 찾고 공유할 수 있도록 도와주는 플랫폼을 제공합니다. 특히 맨몸운동을 즐기는 사람들이 어디서든 운동할 수 있는 철봉을 찾고, 새로운 철봉 정보를 커뮤니티와 공유할 수 있는 지도 기반 서비스입니다.

Go·MySQL·Redis·RabbitMQ·Uber Fx·Bleve·Grafana·Locust·Kakao Map API

  • 백엔드 아키텍처 설계
  • MySQL 공간 데이터 최적화
  • Redis 캐싱 시스템 구현
  • WebSocket 채팅 시스템
  • 성능 모니터링 (Grafana)
  • 비속어 필터링 알고리즘
  • 부하 테스트 (Locust)
  • 메시지 큐 시스템 (RabbitMQ)
  • MySQL 공간 쿼리 대폭 최적화

    기존 비효율적인 공간 쿼리를 분석하고 인덱스 전략을 재설계하여 쿼리 비용을 66배 절감, 응답 시간을 85% 개선했습니다. 특히 위치 기반 검색에서 사용자 경험이 크게 향상되었습니다.

  • 고성능 비속어 필터링 시스템

    Double AhoCorasick 알고리즘을 적용하여 10KB 한글 텍스트 기준 비속어 필터링 속도를 4,858ms에서 1.1ms로 대폭 개선. 실시간 채팅에서도 즉시 처리 가능한 수준으로 최적화했습니다.

  • 대규모 실시간 채팅 시스템 구축

    Redis 기반 WebSocket 채팅 시스템을 구현하여 1,000명 동시 접속 환경에서 5분간 100만 건 메시지를 안정적으로 처리. TPS 3,548을 달성하며 확장 가능한 채팅 인프라를 구축했습니다.

  • 선제적 모니터링 시스템

    Prometheus + Grafana를 활용한 종합 모니터링 시스템으로 장기 실행 작업의 이상 동작을 실시간으로 감지하고, 메모리 누수 등의 리소스 문제를 선제적으로 해결했습니다.

이미지를 클릭하면 크게 볼 수 있습니다.

배운 점
Go 언어의 동시성 처리 능력과 공간 데이터베이스 최적화에 대해 깊이 있게 학습했습니다. 특히 MySQL의 공간 인덱스 활용법과 Redis를 통한 실시간 데이터 처리 최적화 방법을 실전에서 익힐 수 있었습니다. 또한 대용량 트래픽 처리를 위한 모니터링의 중요성을 체감했습니다.
아쉬운 점
초기 설계 단계에서 확장성을 충분히 고려하지 못해 중간에 아키텍처 리팩토링이 필요했던 점이 아쉽습니다. 또한 사용자 피드백을 더 적극적으로 수집하여 UX 개선에 반영하지 못한 부분도 개선이 필요합니다.
향후 계획
AI를 활용한 철봉 자동 탐지 기능과 운동 루틴 추천 시스템을 도입할 계획입니다. 또한 커뮤니티 기능을 강화하여 사용자들이 운동 정보를 더 활발히 공유할 수 있는 소셜 플랫폼으로 발전시키고 싶습니다.