k-pullup
카카오맵 API를 활용한 대한민국 철봉 지도
시스템 아키텍처
프로젝트 목적
운동을 좋아하는 사람들이 전국의 철봉 위치를 쉽게 찾고 공유할 수 있도록 도와주는 플랫폼을 제공합니다. 특히 맨몸운동을 즐기는 사람들이 어디서든 운동할 수 있는 철봉을 찾고, 새로운 철봉 정보를 커뮤니티와 공유할 수 있는 지도 기반 서비스입니다.
기술 스택
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를 활용한 철봉 자동 탐지 기능과 운동 루틴 추천 시스템을 도입할 계획입니다. 또한 커뮤니티 기능을 강화하여 사용자들이 운동 정보를 더 활발히 공유할 수 있는 소셜 플랫폼으로 발전시키고 싶습니다.