왜 나는 Django에서 React 대신 HTML, CSS, HTMX를 먼저 골랐는가
한 줄 결론
나는 React를 무조건 싫어해서 피한 것이 아니다. Django, Modular Monolith, Vertical Slice라는 내가 선택한 전체 구조 안에서는 HTML, CSS, HTMX가 더 자연스럽게 맞아떨어졌기 때문에 먼저 선택했다.
다만 이것이 “React를 완전히 버렸다”는 뜻은 아니다. 한국 개발 업계에서 React가 사실상 표준이라는 점도 알고 있고, 팀 프로젝트에서는 충분히 사용할 수 있다. 지금도 그 지점을 계속 고민하고 있다.
왜 Django에 React가 늘 자연스럽지는 않았나
React는 훌륭한 도구다. 하지만 Django와 조합할 때는 종종 프론트엔드와 백엔드가 한 제품 안에서 두 개의 시스템처럼 느껴진다.
예를 들면 이런 일이 생긴다.
- Django는 API 서버 역할로 축소된다
- 인증, 상태 관리, 폼 처리, 라우팅이 프론트 쪽에서 다시 별도 문제로 생긴다
- 한 기능을 수정할 때 Python 코드와 React 코드베이스를 같이 건드려야 한다
- 제품이 작은데도 구조는 이미 분리 비용을 떠안게 된다
이건 React가 나빠서가 아니라, 내가 만들던 제품의 크기와 구조에 비해 분리 비용이 너무 빨리 커졌기 때문이다.
Modular Monolith와 맞는 쪽은 무엇이었나
내가 선호하는 구조는 기본적으로 Modular Monolith다.
- 배포 단위는 하나
- 도메인 경계는 내부 모듈로 나눈다
- 기능 단위 응집도를 강하게 유지한다
이 구조에서는 프론트도 가능하면 같은 제품 안에서 더 가깝게 붙어 있는 편이 유리했다.
React를 넣는 순간, 프론트는 사실상 독립 애플리케이션처럼 움직이기 시작한다. 그러면 Modular Monolith의 장점 중 하나였던 단일 제품 응집도가 약해진다.
반면 Django 템플릿 + HTMX는 기능을 훨씬 더 로컬하게 유지할 수 있었다.
Vertical Slice 관점에서는 왜 HTMX가 더 잘 맞았나
Vertical Slice를 쓰면 한 기능 안에 가능한 많은 것을 같이 두고 싶어진다.
예를 들면 보충제 비교 기능 하나를 본다면:
- query logic
- schema
- service
- view
- template partial
이렇게 같은 기능 단위 안에서 가까이 유지하는 편이 수정 범위가 작고 이해도 빠르다.
HTMX는 이 방식과 잘 맞는다. 서버가 HTML 조각을 반환하고, 기능별 partial이 slice 내부와 가까운 위치에 남는다.
React는 대체로 다음을 요구한다.
- 별도 component tree
- 별도 state 관리
- API 계약 중심 구조
- 프론트 번들링과 빌드 체인
큰 제품에서는 이게 강점이 될 수 있다. 하지만 내가 만들던 초기 제품에서는 기능 응집도를 높이기보다 프론트 레이어를 따로 키우는 방향으로 느껴졌다.
왜 HTML, CSS, HTMX를 선택할 수밖에 없었나
여기서 “수밖에 없었다”는 말은 기술적으로 강제되었다는 뜻이 아니라, 내가 중요하게 본 기준을 모두 합치면 그 선택이 가장 자연스러웠다는 뜻이다.
내 기준은 이랬다.
- 빠르게 만들 수 있어야 한다
- Django의 관리자, ORM, 폼, 서버 중심 흐름을 그대로 활용하고 싶다
- 기능 하나의 변경 범위를 최대한 좁히고 싶다
- AI-assisted coding에서도 코드가 쉽게 흩어지지 않아야 한다
- 배포 단위와 제품 구조를 단순하게 유지하고 싶다
이 조건에서는 React보다 HTML, CSS, HTMX가 더 잘 맞았다.
그렇다고 React를 버린 것은 아니다
중요한 점은 여기다.
나는 React를 “절대 쓰지 않는 기술”로 보지 않는다.
오히려 한국 개발 업계에서는 React가 사실상 표준에 가깝다. 팀 프로젝트나 채용 시장을 생각하면 React를 완전히 외면하는 것도 현실적이지 않다.
그래서 내 입장은 더 현실적이다.
- 개인 제품과 Django 중심 제품에서는 HTMX를 우선 선택한다
- 팀 프로젝트나 프론트 분리가 이미 자연스러운 환경에서는 React를 사용할 수 있다
- 지금도 어디까지 React를 가져갈지 계속 고민 중이다
즉 이건 종교가 아니라 문맥에 따른 선택 문제다.
내 현재 입장
지금 내 기준은 명확하다.
- Django 기반 제품
- 작은 팀 혹은 개인 제품
- 빠른 반복과 응집도 유지가 중요함
이 조건이면 나는 여전히 HTMX 쪽을 먼저 본다.
하지만:
- 프론트엔드 팀 분리가 분명하고
- 복잡한 클라이언트 상태가 많고
- React 기반 협업이 당연한 조직
이면 React를 쓰는 것이 훨씬 자연스럽다.
마무리
나는 React를 반대하는 사람이 아니다. 내가 고른 아키텍처와 제품 조건 안에서, Django에는 HTMX가 더 자연스러웠다는 쪽에 가깝다.
그리고 그 판단은 지금도 유효하다. 다만 동시에, React가 한국 개발 시장과 팀 협업에서 가지는 현실적 무게도 충분히 알고 있다.
결국 중요한 것은 특정 프레임워크에 대한 충성심이 아니라, 내가 만드는 제품과 팀 맥락에 무엇이 가장 맞는가다.