대부분의 사람들은 실제로 Next.js를 백엔드로 사용하지 않는다
Source: Dev.to

논쟁을 일으킨 LinkedIn 포스트
한 달 전, 저는 “Most People Don’t Actually Use Next.js as a Backend.” 라는 제목의 포스트를 LinkedIn에 공유했습니다.
이 포스트는 예상보다 훨씬 많은 관심을 받았으며, Reddit에서도 500표가 넘는 투표를 받은 토론이 진행되었습니다:
https://www.reddit.com/r/webdev/comments/1pqrqfv/i_guess_ive_been_using_nextjs_the_wrong_way/
왜 이 패턴이 문제인가
- 많은 개발자들이 Next.js 로 풀스택 애플리케이션을 만든다고 주장하지만, 실제 데이터 페칭은 모두 클라이언트 측에서 이루어집니다.
- 모든 요청이 브라우저에서 직접 외부 API 로 향하기 때문에 서버‑사이드 로직이 없고, 백엔드 책임이 없으며, Next.js 의 백엔드 기능을 실제로 사용하지 않는 것입니다.
이렇게 되면 사실상 라우팅이 더 좋은 React 를 사용하는 셈이며, Next.js 가 제공하는 백엔드 기능을 활용하지 못하게 됩니다.
보안 측면
- 클라이언트‑사이드 직접 호출은 API 엔드포인트, 요청 패턴, 경우에 따라 환경 변수 누출이나 설정 오류로 인해 비밀 정보까지 노출될 수 있습니다.
- Next.js 는 외부 서비스를 서버 라우트 뒤에 숨겨 비밀이 브라우저에 전달되지 않도록 설계되어 공격 표면을 줄여줍니다.
성능 및 제어
- 요청을 Next.js 를 통해 라우팅하면 캐싱, 레이트 리밋, 응답 형태 등을 더 잘 제어할 수 있습니다.
- 이 레이어를 건너뛰면 보안, 성능, 제어 를 포기하는 셈이 됩니다.
언제 Express 를 사용해야 할까
Express 가 여전히 의미가 있는 경우:
- 규모가 크고 여러 클라이언트가 공유하는 API.
- 웹 프론트엔드와 별도로 전용 API 레이어가 필요한 상황.
애플리케이션이 웹 전용 이고 이미 Next.js 를 선택했다면, CRA 스타일 아키텍처로 되돌아가는 것은 보안과 단순성을 모두 손상시킵니다.
요약
Next.js 앱이 외부 API 를 클라이언트에 직접 노출한다면, 프레임워크를 의도한 대로 사용하고 있는 것이 아닙니다.
올바른 도구를 선택하고, 더 중요한 것은 올바르게 사용하는 것입니다. 👍
추가 링크
- LinkedIn 포스트: https://www.linkedin.com/in/kenneth-nnabuife-a7a63812a