Skip to content

mseo39/Commercial-Area-Analysis

Repository files navigation

상권분석 빅데이터 시스템 (2023.09 ~ 2023.10)

개인 프로젝트 | Full-Stack 개발 | MongoDB, Django REST Framework, Celery, Docker, RabbitMQ

🧠 프로젝트 개요

  • 전세계를 대상으로 하는 상권분석 서비스를 가정
  • 기존 상권분석 서비스에서는 지도로 원하는 지역을 클릭해도 행정구역을 다시 선택해야 하는 불편함
  • 또한 상권 관련 데이터는 대용량이기 때문에, 단일 서버 환경에서는 처리 효율에 한계 존재

이 문제를 해결하기 위해:

  • 사용자 UI를 직관적으로 개선
  • MongoDB 기반 수평 확장형 분산 데이터베이스 도입
  • Celery를 활용한 비동기 분산 작업 시스템 구축

🔧 기술 스택 및 아키텍처

영역 사용 기술
Backend Python 3.9, Django REST Framework, Celery
DB MongoDB, MySQL
Infra Docker, RabbitMQ, Flower
기타 REST API, Linux 기반 환경

📦 시스템 구성도

  • 전체 흐름
image
  • Docker에서의 분산 시스템 구성
image
  • Docker에서의 분산 데이터베이스 구성
image

🚀 주요 기능 요약

✅ 파일 업로드

  • 국가 및 도시 정보와 함께 분석 데이터 업로드
  • 대용량 파일 처리: Celery 비동기 큐 사용

⏱️ 성능 비교

기존: 3188.03초 → 개선: 1851.39초 (⏬ 41.98% 시간 단축) → Celery를 이용해 세 개의 파일을 병렬 작업으로 나눠 처리함으로써, 전체 처리 시간을 약 42% 단축했습니다.

image

✅ 상권 영역 데이터 조회

  • 지도 기반 UI로 원하는 행정동 클릭
  • Hover 시 상권명/코드 정보 표시
  • 분석 요청 시 REST API로 서버 통신
  • 매출, 인구 등 데이터를 그래프로 시각화
image

📚 프로젝트를 통해 배운 점

  • 수평 확장의 개념과 MongoDB 샤딩 구조에 대한 실습 경험
  • Celery 기반의 비동기 작업 처리 구조 설계
  • Docker를 활용한 컨테이너 환경에서의 분산 시스템 구성 실습

⚙️ 실행환경 및 버전 정보

Python==3.9.6
Django==4.1.7
MongoDB==7.0.2
Celery==5.3.4
Mysql==8.1.0
RabbitMQ==3.12.6
Flower==2.0.1

📎 기타 자료


👀 마무리

이 프로젝트는 상권 분석보다는 분산 시스템 설계 및 대용량 데이터 처리에 초점을 맞췄습니다.

단순한 기능 구현을 넘어서 실제 환경에서의 병목문제를 해결해본 경험이 핵심입니다.

About

유동인구, 매출, 상점 데이터를 이용한 상권분석

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published