웹 페이지 렌더링 방식에서 본 Next.js 쓰는 이유
Next.js를 왜 써야할까?🤔
웹 페이지 렌더 방식인 SSG, CSR, SSR, ISR에 대해 알아보고, SPA, MPA가 뭔지도 알아봅시다
✨Next.js란?
Next.js는 풀스택 웹 애플리케이션을 만들기 위한 리액트 프레임워크입니다.
React에 필요한 번들링, 컴파일 등의 필요한 도구들을 추상화하고 자동으로 구성화하여 이를 통해 구성 설정에 시간을 할애하지 않고 애플리케이션 구축에 효율적으로 집중할 수 있게 합니다.
✨Next.js의 주요 특징은 무엇일까?
- 파일 시스템 기반으로 라우터 설정이 가능합니다.
- 클라이언트 컴포넌트, 서버 컴포넌트로 CSR, SSR이 가능해집니다.
- 서버 컴포넌트에서 async, await으로 데이터 fetching이 간소화되며, 요청 메모이제이션, 데이터 캐싱 및 재검증을 위한 확장된 fetch API가 제공됩니다.
- CSS Modules, Tailwind CSS, CSS-in-JS를 지원합니다.
- 이미지, 폰트, 스크립트 최적화를 제공합니다.
- 타입스크립트를 지원합니다.
✨ 웹 페이지 렌더링 방식에서 바라본 Next.js
우리는 여기에서 SSG, CSR, SSR, ISR 관점에서 집중하여 next.js의 주요 장점을 알아보려고 합니다.
우선 SSG, CSR, SSR, ISR가 뭔지 개념부터 간단하게 짚고 넘어가봅시다.
렌더링 방식 | 특징 | 렌더링 주체 | 실시간성 | SEO 가능 여부 | 초기 로딩 속도 | 이후 로딩 속도 |
---|---|---|---|---|---|---|
SSG (Static Site Generation) | 미리 생성된 HTML 제공 | 서버가 빌드 (렌더가 아님 생성임.) | ❌ | ✅ | 🚀 빠름 | 🚀 빠름 |
CSR (Client Side Rendering) | 클라이언트에서 JS로 렌더링 | 클라이언트 | ✅ | ❌ | 🐢 느림 | 🚀 빠름 |
SSR (Server Side Rendering) | 요청 시 서버에서 HTML 생성 | 서버 (요청 시) | ✅ | ✅ | ⚡ 적당히 빠름 | ⚡ 적당히 빠름 |
웹 크롤러를 기준으로 그림을 이해하면 각 방식이 SEO가 어떻게 이루어지는지 이해하기 쉬울 것입니다.(애런쌤 좋은 설명 감사해요...!!)
SSG(Static Site Generation)
- S3같은 별개 저장소 사용 시 서버가 불필요 합니다.( 셀프 호스팅이 유용합니다.)
- 서버가 가지고 있는 정적 웹페이지를 반환만 하면 되기 때문에 매우 빠른 웹 페이지 반환속도를 경험할 수 있습니다.
CSR(Client Side Rendering)
- CSR(Client Side Rendering) = SPA(Single Page App)
- 웹 브라우저 내 html과 무거운 js + js반환을 위한 웹서버 or 저장소(S3)
- 모든 화면 전환이 서버를 거쳐오지 않고 웹 브라우저에서 일어납니다.
SSR(Server Side Rendering)
- SSR(Server Side Rendering) = MPA(Multi Page App)
- 1000명의 유저 정보 페이지 = 1개의 유저 정보 페이지 템플릿(HTML) + 1000명 유저 정보 데이터베이스
- 서버가 동적 웹 페이지를 생성하여 반환하기 때문에 반복되는 템플릿과 실시간 정보를 분리했다고 볼 수 있습니다.
- DB 조회속도와 웹 페이지 생성 속도에 의존하게 됩니다.
- 웹 서버의 CPU, 메모리 자원이 사용된기 때문에 AWS같은 클라우드 사용 시 비용이 부담됩니다.
ISR(Incremental Static Regeneration)
- SSG(Static Site Generation)의 장점(빠른 로딩속도, SEO최적화)를 유지하면서도 정적 페이지를 주기적으로 갱신할 수 있도록 만든 기술입니다.
- 간단하게 얘기해서, 빌드 시 생성된 정적 페이지를 일정 주기로 다시 생성하는 기술
- 이렇게만 얘기하면 SSR이랑 다른점이 뭐냐고 생각할 수 있습니다. ISR은 정적 페이지처럼 빠르지만, 일정 주기로 최신 데이터가 반영되는 방식이며 SSR은 매 요청마다 새로운 데이터를 반영하는 방식이라고 생각하면 됩니다.