회사에서 진행했던 프로젝트: 데이터 관리 플랫폼 구축
📝 프로젝트 개요
사내 여러 팀이 공통으로 사용하는 OCR 학습 데이터를 효율적으로 관리하기 위해 온프레미스 파일 서버의 파일 및 디렉토리를 데이터베이스화하여 검색, 관리, 동기화를 원활하게 수행하기 위한 웹 기반 파일 관리 시스템을 기획·설계·구현했습니다.
2024년 초부터 2025년 중순까지 총 2인으로 진행되었고, 그 중 9개월은 1인 풀스택으로 진행하였습니다.
🔨 아키텍쳐 & 기술
기술스택
| 구분 | 기술 |
|---|---|
| Backend | Django 4.x + Django REST Framework |
| Frontend | React 18, Redux |
| Database | PostgreSQL 16 |
| Cache/Broker | Redis |
| Task Queue | Celery + Celery Beat |
| Search Engine | Meilisearch (선택적 사용 가능) |
| Container | Docker / Docker Compose |
| Web Server | Nginx |
| Authentication | JWT + Session |
아키텍쳐
flowchart TB
subgraph Client["🖥️ Client"]
Browser["Web Browser"]
end
subgraph Nginx["🌐 Nginx"]
Proxy["Reverse Proxy<br/>Static Files / SSL"]
end
subgraph Frontend["⚛️ Frontend"]
React["React 18<br/>Redux"]
end
subgraph Backend["🐍 Backend"]
Django["Django 4.x<br/>REST Framework"]
end
subgraph Database["🗄️ Database"]
PostgreSQL["PostgreSQL 16"]
end
subgraph Cache["⚡ Cache & Broker"]
Redis["Redis"]
end
subgraph Search["🔍 Search Engine"]
Meilisearch["Meilisearch<br/>(Optional)"]
end
subgraph TaskQueue["⚙️ Task Queue"]
CeleryWorker["Celery Worker"]
CeleryBeat["Celery Beat<br/>Scheduler"]
end
subgraph Storage["📁 File Storage"]
FileServer["File Server<br/>(Mount)"]
end
Browser --> Proxy
Proxy --> React
Proxy --> Django
React <-->|REST API| Django
Django <--> PostgreSQL
Django <--> Redis
Django <--> Meilisearch
Django --> FileServer
Redis --> CeleryWorker
Redis --> CeleryBeat
CeleryWorker --> PostgreSQL
CeleryWorker --> FileServer
CeleryBeat --> Redis
📍 주요 업무
1. Backend API 설계 및 개발
- Django REST Framework 기반 RESTful API 구현
- JWT 인증 및 권한 관리 시스템 구축 (최고관리자/관리자/일반유저 3단계 권한)
- Swagger/OpenAPI 문서 자동화 (drf-yasg)
2. 비동기 작업 처리 시스템 구축
- Celery 기반 12개 작업 큐 설계 (업로드, 다운로드, 삭제, 복사, 이동, 압축, 스캐너, 썸네일 등)
- Celery Beat 스케줄러를 통한 주기적 작업 자동화
- 분산 락(Resource Lock) 시스템 구현으로 동시 작업 충돌 방지
3. 파일 시스템 스캐너 개발
- 증분/전체 스캔 기능 구현
- DB-파일 시스템 간 동기화 로직 개발
- 마운트 상태 모니터링 및 파일 존재 검증
4. 검색 시스템 구현
- Meilisearch 연동 전문 검색
- PostgreSQL Fallback 검색 구현
5. 관리자 대시보드 개발
- Django Admin 커스터마이징
- 시스템 모니터링 대시보드 (CPU, 메모리, 디스크, 프로세스)
- 스캐너 모니터링 및 수동 실행 기능
6. 인프라 구성 및 Docker화
- 개발/테스트/운영 환경 Docker Compose 구성
- Nginx 리버스 프록시 및 SSL 설정
7. Frontend 개발
- React 18 기반 SPA 구현
- Redux를 활용한 전역 상태 관리
- 파일/폴더 관리 UI 개발
- 검색 및 조회 UI 개발
📊 기능
파일/폴더 관리
- 업로드: 청크 업로드 지원 (대용량 파일 분할 전송, 무결성 검증), 폴더 구조 유지 업로드
- 다운로드: 단일/다중 파일·폴더 ZIP 압축 다운로드
- 파일/폴더 작업: 이동, 복사, 이름 변경 (일괄처리 가능), 압축
- 휴지통: 임시 삭제 → 복구 가능 → 영구 삭제 3단계 관리
검색 및 조회
- 통합 검색: 파일명, 설명, 확장자 기반 검색
- 필터링: 파일 타입, 크기 범위, 날짜, 특정 폴더
- 정렬: 이름, 크기, 업로드일, 수정일, 파일 타입
이미지 처리
- 썸네일 생성: Small(150px) / Medium(300px) / Large(800px)
- Redis 캐싱: 썸네일 이미지 캐시 저장
- EXIF 정보 추출: 카메라 정보, 이미지 크기 정보 자동으로 DB에 저장
자동화 (Celery Beat)
- 증분 스캔: 매시간
- 전체 스캔: 주 1회 (일요일 06:00)
- 마운트 상태 확인: 30분마다
- 검색 인덱스 업데이트: 매시간
- 만료 세션/청크/캐시 정리: 자동
관리자 기능
- Django Admin 커스터마이징
- 유저별 권한 관리
- 시스템 대시보드 (CPU, 메모리, 디스크)
- 스캐너 모니터링
- 파일 중복 제거 (해시 기반)
부가 기능
- 스마트폰 대여 관리: 기기 등록, 대여/반납 처리, 사용 리포트 CSV 내보내기
✅ 성과
- 사내 테스트 서버 배포
- 팀 내 테스트 환경 구축 및 테스트 진행