싸피에서의 지난 6개월간 웹 개발을 할 때 Python, Vue.js, Django를 사용했다. 그런데 이번 프로젝트에서는 Java와 React 기반으로 진행하게 되었다. 프론트엔드 팀원들이 React와 Next.js 중 어떤 걸로 할지 의견을 나누는데, 그 사이에서 난 "두 가지가 차이가 뭐길래?"라는 궁금증이 생겼다.
이번 프로젝트에서는 백엔드를 주로 담당하지만, 전체적인 기술 구조도 이해하면서 프론트엔드도 참여해 보고 싶었기에 이 부분은 풀고 가야 할 문제다. 이 문제의 해결을 위해 CSR과 SSR을 공부해오라는 숙제(?)를 받았고, 공부하면서 이해한 내용을 정리해보려고 한다.
React와 Next.js를 비교할 때 가장 먼저 알아야 할 것은 두 도구의 '성격'이다.
React는 'UI를 만들기 위한 도구' 이다.
레고 블록 같은 컴포넌트 기반 개발이기 때문에, 재사용성과 복잡한 코드의 단순화와 같은 장점이 있다.
하지만 라우팅(React Router), 상태 관리(Redux/Recoil), 빌드 설정(Webpack/Vite) 등을 개발자가 직접 선택하고 조합해야 한다는 한계점이 있다. 자유도가 높지만 설정 책임도 개발자에게 있다는 것이다.
이에 비해 Next.js는 React를 기반으로 한 '풀스택 프레임워크' 이다.
React의 한계를 보완하면서, 정해진 폴더 구조를 따르면 라우팅이 자동으로 되고, SSR(서버사이드 렌더링)/SSG(정적 사이트 생성)/ISR(증분 정적 재생성) 등 다양한 렌더링 전략을 기본 제공한다.
그래서 특히 SEO(검색 엔진 최적화)와 초기 로딩 속도 최적화에 강점을 가지고 있다.
그렇다면 두 도구를 선택하는 가장 큰 기준은 무엇일까? 바로 '화면을 어디서 그리는가?' 에 있다.
index.html과 JS 파일만 보낸다. 브라우저가 JS를 실행해 DOM을 그린다.| 구분 | React | Next.js |
|---|---|---|
| 렌더링 방식 | Client Side | Server Side / Static / Client (혼합) |
| SEO | 불리함 (별도 작업 필요) | 매우 유리함 |
| 라우팅 | React Router 설치 필요 | 파일 시스템 기반 (자동) |
| 초기 로딩 | 상대적으로 느림 (JS 로드 대기) | 매우 빠름 (HTML 즉시 렌더링) |
| 주요 활용 | 대시보드, 개인화 앱, 관리자 페이지 | 이커머스, 블로그, 마케팅 페이지 |
내가 느낀 두 방식의 결정적 차이는 인프라 아키텍처의 변화이다.
결국 "React냐 Next.js냐"의 선택은 우리가 만드는 서비스가 '사용자 인터랙션이 중심인 서비스인가?(React)' 또는 '초기 로딩 속도가 중요한가?(Next.js) 에 달려 있다.
백엔드 개발자로서도 프론트엔드가 데이터를 가져가는 방식을 이해하니 전체적인 시스템 아키텍처를 설계하는 데 큰 도움이 된 공부였다. 이제 이 개념을 바탕으로 본격적인 프로젝트 세팅에 들어가 보자!
잘 읽었습니다. SSR과 CSR의 차이를 명확하게 알 수 있겠는데요.