현재 프로젝트 구조
Django를 백엔드(API 서버)로, React를 프론트엔드(SPA)로 구분하면서도, Django 프로젝트 안에 React를 포함 시키는 구조
장점
- 초기 프로젝트 세팅이 간단함
- 단일 서버로 배포 가능
- 운영환경에서 Nginx 설정 없이 SPA 서빙이 가능
단점
- API와 프론트 간 경계가 모호해짐
- API와 프론트가 강결합
- Django가 static 파일까지 서빙하게 되면서 역할이 분리되지 않음
- 확장성과 보안 측면에서 손해
- 대규모 프로젝트에서 React는 CDN 또는 별도의 정적 서버(Nginx 등)로 서빙하는 게 일반적
- Django가 정적 파일까지 책임지면, 보안/성능 관점에서 병목 가능성 있음
FE와 BE를 완전히 분리한 구조
장점
- 역할이 명확: Django는 API만, React는 UI만 담당
- 배포 독립성: React만 빌드/배포할 수도 있고, 백엔드만 따로 배포 가능
- 성능/보안 최적화: 정적 파일은 CDN이나 Nginx에서 캐시, Django는 DB/비즈니스 로직에 집중
- 대규모 팀에 적합: 프론트/백 각자 Git repo로 나눠도 좋고, CI/CD 독립 설정 가능
결론
프론트엔드와 백엔드를 완전히 분리한 구조가 좋다.
| 구조 | 장점 | 단점 |
|---|---|---|
| Django 내부에 React 포함 | 배포 간편, 빠른 MVP 구축 | 유지보수 어려움, 확장성 낮음 |
| 완전 분리 구조 (추천) | 확장성/독립성 높음, 보안/성능 최적화 | 초기 세팅/배포에 약간 복잡함 |