개발자
안녕하세요. 신입 프론트엔드 개발자로 취업한지 3주된 뉴비입니다. react만 써보다가 취업 후 next.js를 공부하고 있는데요, next.js를 공부한지 얼마 안돼서 아직 모르는게 많은데 본질적으로 궁금한게 있어서 질문드립니다. next.js가 서버 사이드 렌더링이 되는것 뿐만 아니라 next.js 프로젝트 내에서 다양한 백엔드 로직을 수행하는 api들도 정의할 수 있는(심지어 DB 접근까지) 풀스택 프레임워크라고 알고있어요. 그럼 next.js로 프론트엔드와 백엔드 로직 모두 다루면 백엔드 서버는 따로 만들 필요 없는건가요? 그리고 요즘 프론트엔드 기술을 next.js를 채택하고 있는 기업들이 굉장히 많은데, 이런 곳들도 사실상 모두 백엔드 개발자가 따로 있잖아요? DB 데이터 처리, 보안 등과 같은 중요한 백엔드 작업을 전문적으로 수행하는 백엔드 개발자가 따로 있으면 어차피 프론트엔드 개발자는 결국 React 등을 사용해서 개발할 때처럼 클라이언트단만 신경쓰면 될듯한데 왜 굳이 프론트를 풀스택 프레임워크인 next.js를 사용하는 경우가 그렇게 많은 것인지가 궁금합니다. 단지 서버 사이드 렌더링이 된다는게 그렇게 의미가 큰걸까요? 궁금합니다..!
답변 4
인기 답변
안녕하세요, 저도 아직 경험이 많지 않은 주니어 개발자이지만, 조금이라도 도움이 될 수 있을까 싶어 답변 남겨드립니다. 우선 리액트는 기본적으로 CSR 렌더링으로 화면을 구성합니다. 이러한 CSR 렌더링은 초기 렌더링 이후, 빠르게 화면 전환을 통해 컨텐츠를 제공하며 사용자 경험에 도움을 주고 있습니다. 빌드 파일에 index.html을 살펴보시면 껍데기만 있는 정적 html 파일과 번들 파일을 연결하여 자바스크립트 동작으로 화면을 구성합니다. 초기 렌더링에 사용자는 필요한 리소스를 모두 다운로드 받기 전까지는 빈 화면을 바라보게 된다는 단점이 있습니다. 따라서 SEO 검색 엔진 최적화에 적합하지 않을 수 있습니다. 이러한 문제는 SSR을 통해 서버에서 미리 화면을 그려낸 html을 제공하여 SEO 문제를 해결하고 초기 렌더링 문제를 해결할 수 있습니다. 리액트에서도 SSR을 충분히 구현할 수 있지만, 구현을 위한 설정 작업이 많고 복잡하기도 합니다. 위에서 말씀 드린 여러가지 문제들을 해결하기 위해 리액트 프레임워크인 Next.js 를 개발하게 되면서 SSR 렌더링 환경도 쉽게 구성할 수 있게 되었습니다. SSR 뿐만 아니라 CSR, SSR, SSG, ISR 등 다양한 렌더링 방식도 구성할 수 있기 때문에 필요한 렌더링 방식을 선택하여 화면을 구성할 수 있게 되었습니다. Next.js는 next/image, api router 등등 .. 강력한 기능도 많아 화면 개발에 있어 많은 도움을 얻을 수 있습니다. 이렇듯, 많은 장점을 가지고 있는 프레임워크라 필요에 따라 많은 기업이 쓰기도 합니다. 중요한 건 리액트와 Next.js에 대한 차이점을 이해하고, 개발하고자 하는 사이트의 특징을 잘 파악하여 기술을 선택해야 합니다. 예를 들어, SEO 최적화가 필요 없는 사이트의 경우 리액트를 선택하고 회사 홈페이지와 같이 SEO 최적화가 중요한 사이트는 Next.js를 선택할 수도 있을 거 같습니다. Next.js ISR ( Incremental Static Regeneration ) 렌더링과 같이 빌드 타임에 정적 파일을 생성하여 컨텐츠를 미리 생성한 화면을 제공하고 일정 시간마다 새롭게 빌드하여 새로운 데이터를 반영한 정적 파일을 제공하는 기능을 통해 데이터 변화가 많지 않은 블로그와 같은 사이트에도 활용할 수 있습니다. 저도 답변드리면서 헷갈리는 부분도 있었지만, 조금이라도 도움이 되었다면 좋겠습니다. 앞으로의 개발을 응원합니다!
익명
작성자
2024년 04월 25일
좋은 답변 감사합니다. 덕분에 많이 배우고 갑니다!
인기 답변
1) nextjs를 쓰면 백엔드 서버를 만들 필요 없는건가요? 네, 이론상 필요 없습니다. react나 vue는 화면단을 사용자에게 넘겨주는 서버만 필요합니다. 그러나 nextjs는 우리가 알고 있는 백엔드로써의 역할이 가능하고, 이러한 서버가 내장되어 있습니다. --------------------------- 2) 클라단만 신경쓰면 될듯한데 왜 프론트를 풀스택 프레임워크를 쓰나요? 이래서 일부 개발자들은 결국 nextjs는 과거 개발형태의 회귀라고 합니다. 그런데 자세히 보면 결국 CSR과 SSR의 양쪽 이득을 다 보려고 이 프레임워크를 쓰는겁니다. react 이전에는 모든 웹페이지가 SSR이었고 react 이후에는 CSR의 형태가 주류를 이루었고 nextjs나 remix는 SSR+CSR을 가지고 있는 형태로 이해하셔야 합니다. 이게 무슨 의미가 있나요?라면 대표적으로 SEO로 꼽습니다. 이론은 직접 찾아보시길 권장하고, CSR로만 만들면 검색 엔진들이 내가 만든 페이지가 있는지 없는지를 잘 몰라서 상위 검색어 오르는게 힘들다. 라고 이해하시면됩니다. 그래서 노출이 핵심인 웹 어플리케이션은 SSR의 중요도가 높아질 수 밖에 없습니다. SSR이 필요한데 react나 vue만 써서 SSR 가능하게 개발해보시면 이게 얼마나 그지 같은지 바로 체감옵니다. 실제로 react나 vue만으로는 SSR 개발 불가능합니다. 말 그대로 서버 사이드 렌더링이라 브라우저가 react 코드 받아서 렌더링 하던짓을 서버한테 시켜야 합니다. 이짓이 순수 SSR로 짜는것보다 3배 4배 어렵습니다. 이게 정형화 된 방법도 없고, 방법이 너무 복잡하다보니 순수 react로 SSR 구현하는 인강은 존재하지도 않습니다. 그런데 이게 프레임워크로 나와버리니까 이전과 비교도 안될 정도로 쉽게 react나 vue로 SSR이 되는겁니다. --------------------------- 3) SSR, 그게 그렇게 중요하면 SSR 가능한 예전 기술로 아예 만들면 되지 않나요? 예. 됩니다. 그런데 지금 우리 나라 공공사이트 한번 가보시면 느낌 팍 옵니다. 홈택스, 국민건강보험 등등... 사용감이 Next.js로 개발된 사이트 가보시면 체감이 될 정도로 다릅니다. 결론적으로 SSR이 주류였던 과거 웹개발에서 CSR로 사용자의 사용감을 끌어올렸고 CSR만으로는 포기해야할 것들이 있었는데 Next.js 쓰니 이전보다 쉽게 이게 해결이 되고 SSR+CSR을 쓸 수 있더라 로 해석하시면 됩니다. 그런데 Next.js를 백엔드로 쓰기에는 java나 .net 기타 백엔드 프레임워크에 비해서 지원하는 기능들이 성에 안찰 수준입니다. 그래서 Next.js로는 프론트개발만 하는 것이지요. 즉, 팀에서 허용한다면 간단한 백엔드 기능들은 Next.js에서 추가하셔도 무방하다는 생각입니다.
익명
작성자
2024년 07월 07일
그렇군요. 좋은 답변 감사합니다!
차재현
충북대학교 소프트웨어학과 • 2024년 12월 07일
이해가 너무 잘 되네요 ㅎㅎ 좋은 정보 감사합니다!!
인기 답변
클라이언트 그리고 서버 진영에서 발달해 온 프레임워크들은 각각 특화된 부분이 매우 다릅니다. (이 부분은 저도 그저 아티클 등으로 접했을 뿐 잘 아는 부분은 아닙니다.) 넥스트의 역할을 다루기 앞서 짚고 넘어가야 할 사실이 이미 풀스택을 지원하는 프레임워크들은 이전부터 있어왔습니다. 전통의 php+라라벨이 그러하고, 가장 지배적인 백엔드 프레임워크로 알려진 스프링조차도 풀스택을 지원한다고 합니다. 빠른 시장 검증을 위한 mvp개발엔 넥스트 만으로 웹 서비스를 만드는 게 매우 효율적일 수도 있습니다. 하지만 서버 진영에서 전통적으로 잘 처리해온 것들(대규모 트래픽 처리, 동시성 제어 등)은 당연히 넥스트보단 다른 백엔드 프레임워크들을 이용하면 더 잘 다룰 수 있겠죠. 넥스트로 모든 백엔드의 역할을 대체하기는 어렵습니다. 한편 넥스트의 의의가 단순히 풀스택 프레임워크에 국한되지는 않습니다. 파일 기반 라우팅 및 api 라우팅, 미들웨어 등 유용한 기능들이 많이 있죠. 당연히 csr, ssg, ssr 등을 상황에 맞게 취사 선택해서 사용할 수 있다는 것도 매우 큰 장점입니다. 프로그래밍 영역이 으레 그렇듯 어느 때나 정답인 실버불릿은 없고 상황에 맞게 적절한 도구를 사용하면 됩니다. 각자 장단점이 있고 트레이드오프가 있습니다. 추가적으로 웹 및 웹 프레임워크들의 발전사 등을 찾아서 공부해보시면 지금 갖는 의문들을 해결하는데 도움이 될 거 같습니다!
익명
작성자
2024년 04월 21일
그렇군요. 궁금증이 많이 해소되었습니다. 웹과 웹 프레임워크들의 역사도 개발자로서 알아볼 필요가 있을 것 같네요. 좋은 답변 감사합니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 04월 21일
Next.js를 사용하는 것의 의미는 다양하고, 여러 가지 이유가 있을 수 있습니다. 1. **서버 사이드 렌더링 (SSR)**: Next.js의 가장 큰 매력 중 하나는 SSR입니다. 기본적으로 React는 클라이언트 사이드에서 렌더링이 되는데, 이 경우 검색엔진 최적화(SEO)에 문제가 생길 수 있습니다. 그래서 React로 만든 앱에 SEO가 필요한 페이지가 있다면 Next.js를 쓰는 게 좋습니다. 2. **API Routes**: Next.js는 API Routes 기능을 통해 백엔드 로직도 처리할 수 있다는 장점이 있습니다. 하지만 실무에서 중요한 세션 관리나 DB처리등은 보통 별도의 백엔드 시스템에 위임하게 됩니다. 3. **자동 코드 분할**: 타 페이지 방문시 해당 페이지의 자바스크립트만 로딩하여 성능을 개선합니다. 4. **정적 사이트 생성**: 따로 서버 없이 html 파일들을 미리 생성해두어 웹 서버 없이 배포할 수 있는 정적 프로젝트를 만들어줍니다. 5. **TypeScript 지원, 경로 별칭 지원 등**: 설정 없이 사용 가능한 TypeScript 지원, tsconfig.json에서 경로 별칭 설정 같은 개발 편의성 즉, Next.js는 React 기반의 프레임워크이지만, SSR과 정적 사이트 생성과 같은 고급 기능을 포함하며, 백엔드 로직을 처리할 수 있는 API Routes를 제공합니다. 이런 이유로 많은 개발자들에게 선호되고 있습니다. 하지만 대부분의 경우, 백엔드 로직은 별도의 백엔드 서버에서 처리하고, 프론트엔드는 주로 화면 인터페이스와 사용자 경험에 집중하는 것이 일반적입니다. Next.js의 API Routes는 간단한 백엔드 기능을 첨가할 수 있으니 편리하지만, 상용화 된 서비스를 위해서는 별도의 백엔드 시스템이 필요합니다. 따라서 Next.js를 사용하는 가장 큰 이유는 SSR과 같은 확장된 기능과 개발 편의성 때문일 것입니다. 고맙습니다!
지금 가입하면 모든 질문의 답변을 볼 수 있어요!