티스토리 뷰
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 – Next.js 개요 및 특징
octo54 2025. 2. 27. 01:36🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 – Next.js 개요 및 특징
이번 글에서는 Next.js의 개념과 특징, 그리고 React와의 차이점을 설명합니다.
✅ Next.js가 무엇인지 이해하고, 기존 React와 비교하여 어떤 점이 다른지 살펴보겠습니다.
📌 1. Next.js란?
✅ Next.js 개념
Next.js는 React 기반의 프레임워크로, 서버 사이드 렌더링(SSR) 및 정적 사이트 생성(SSG)을 지원하는 것이 핵심 특징입니다.
Vercel에서 개발하였으며, SEO 최적화, 성능 개선, 개발 편의성을 강화한 React의 업그레이드 버전으로 볼 수 있습니다.
✅ Next.js의 주요 특징
- 서버 사이드 렌더링 (SSR) → 서버에서 데이터를 받아 페이지를 렌더링한 후 클라이언트에 전달
- 정적 사이트 생성 (SSG) → 빌드 시 미리 생성된 정적 HTML을 제공하여 빠른 응답 속도 제공
- API Routes 지원 → 백엔드 없이도 간단한 API를 Next.js에서 직접 구현 가능
- SEO 최적화 → SSR 및 SSG를 활용하여 검색 엔진에 친화적인 페이지 제공
- 이미지 최적화 (
next/image
) → 자동으로 WebP 변환 및 지연 로딩(Lazy Loading) 지원 - 자동 코드 분할 (Code Splitting) → 필요한 코드만 로드하여 성능 향상
- 파일 기반 라우팅 → 기존 React의
react-router-dom
없이,pages
디렉토리 구조만으로 자동 라우팅 제공
📌 2. Next.js vs React 차이점
✅ 2.1 React (CRA) vs. Next.js
비교 항목 | React (CRA) | Next.js |
---|---|---|
렌더링 방식 | CSR(클라이언트 사이드 렌더링) | CSR, SSR, SSG, ISR 모두 지원 |
라우팅 방식 | react-router-dom 필요 |
파일 기반 라우팅 |
SEO 지원 | 제한적 (CSR 기반) | 우수 (SSR 및 SSG 활용) |
API 엔드포인트 | 별도 백엔드 필요 | pages/api/ 에서 API 구현 가능 |
이미지 최적화 | 직접 처리해야 함 | next/image 지원 |
빌드 속도 | 상대적으로 느림 | 정적 빌드 (SSG)로 빠름 |
코드 스플리팅 | React.lazy() 사용 |
자동 코드 스플리팅 |
설정 복잡성 | 간단하지만 추가 설정 필요 | 설정 없이 기본 최적화 제공 |
✅ Next.js는 CSR(클라이언트 렌더링)뿐만 아니라 SSR, SSG 등 다양한 렌더링 방식을 제공하여 유연한 개발이 가능합니다.
📌 3. Next.js의 렌더링 방식
✅ 3.1 CSR (Client-Side Rendering, 클라이언트 사이드 렌더링)
- 브라우저에서 React 애플리케이션을 다운로드한 후, JavaScript가 실행되면서 페이지를 렌더링
- 초기 로딩 속도가 느리며, 검색 엔진 최적화(SEO)에 불리함
// React (CSR)
import { useState, useEffect } from "react";
export default function Page() {
const [data, setData] = useState(null);
useEffect(() => {
fetch("/api/data")
.then((res) => res.json())
.then((data) => setData(data));
}, []);
return <div>{data ? data.message : "Loading..."}</div>;
}
✅ 3.2 SSR (Server-Side Rendering, 서버 사이드 렌더링)
- 페이지 요청 시, 서버에서 데이터를 가져와 HTML을 생성 후 브라우저에 전달
- SEO 최적화에 유리하며, 초기 로딩 속도가 빠름
// Next.js (SSR)
export async function getServerSideProps() {
const res = await fetch("https://api.example.com/data");
const data = await res.json();
return {
props: { data },
};
}
export default function Page({ data }) {
return <div>{data.message}</div>;
}
✅ SSR은 매 요청마다 서버에서 HTML을 생성하므로, 실시간 데이터가 필요한 경우 적합합니다.
✅ 3.3 SSG (Static Site Generation, 정적 사이트 생성)
- 빌드 시점에 HTML을 미리 생성하여 제공
- 페이지 로딩 속도가 매우 빠르며, SEO 최적화에 최적
// Next.js (SSG)
export async function getStaticProps() {
const res = await fetch("https://api.example.com/data");
const data = await res.json();
return {
props: { data },
revalidate: 10, // 10초마다 새롭게 데이터를 가져옴
};
}
export default function Page({ data }) {
return <div>{data.message}</div>;
}
✅ SSG는 변경되지 않는 페이지(블로그, 문서 등)에 적합하며, 성능 최적화에 유리합니다.
✅ 3.4 ISR (Incremental Static Regeneration, 증분 정적 사이트 생성)
- 기존 SSG와 비슷하지만, 빌드 후에도 특정 시간마다 정적 페이지를 업데이트 가능
// Next.js (ISR)
export async function getStaticProps() {
const res = await fetch("https://api.example.com/data");
const data = await res.json();
return {
props: { data },
revalidate: 60, // 1분마다 데이터 업데이트
};
}
export default function Page({ data }) {
return <div>{data.message}</div>;
}
✅ ISR은 정적 페이지의 빠른 속도를 유지하면서도 최신 데이터를 주기적으로 업데이트할 수 있는 방법입니다.
📌 4. Next.js의 강력한 기능
✅ 4.1 파일 기반 라우팅
pages/
폴더 내 파일을 생성하면 자동으로 라우팅이 적용됨pages/index.tsx
→/
경로로 자동 매핑pages/about.tsx
→/about
경로로 자동 매핑
// pages/about.tsx
export default function About() {
return <h1>About Page</h1>;
}
✅ React의 react-router-dom
을 사용할 필요 없이 간단한 파일 구조만으로 라우팅이 가능
✅ 4.2 API Routes (백엔드 API 구현 가능)
- Next.js에서는
pages/api/
폴더에 파일을 생성하면 API 엔드포인트를 구현 가능 - FastAPI 없이도 간단한 API를 Next.js 내부에서 처리 가능
// pages/api/hello.ts
export default function handler(req, res) {
res.status(200).json({ message: "Hello from Next.js API!" });
}
✅ 클라이언트와 백엔드를 하나의 프로젝트에서 관리 가능 (Full-Stack 개발 가능)
📌 5. 결론 및 다음 단계
✅ Next.js는 React의 기능을 확장하여 SSR, SSG, ISR을 지원하는 강력한 프레임워크입니다.
✅ SEO 최적화, API Routes, 이미지 최적화 등의 기능을 활용하면 더 나은 성능을 제공할 수 있습니다.
✅ 이제 Next.js 개발 환경을 설정하고 프로젝트를 생성해 보겠습니다! 🚀
🚀 다음 글에서는 "3.1.2 Next.js 프로젝트 설정 및 필수 패키지 설치"를 진행합니다!
'project > 로컬 LLM + RAG 기반 AI 채팅봇 만들기' 카테고리의 다른 글
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 – Tailwind CSS 및 UI 라이브러리 설정 (DaisyUI + ShadCN 반영) (0) | 2025.02.27 |
---|---|
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 – 프로젝트 설정 및 필수 패키지 설치 (0) | 2025.02.27 |
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – 벡터 임베딩 저장 및 검색 구현 (0) | 2025.02.27 |
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – Docker를 활용한 PostgreSQL 및 pgvector 설정 (0) | 2025.02.27 |
🚀 FastAPI 기반 로컬 LLM + RAG 챗봇 만들기 – PostgreSQL 및 pgvector 개요 (0) | 2025.02.26 |
- Total
- Today
- Yesterday
- 프론트엔드
- Page
- Python
- 웹개발
- kotlin
- fastapi
- rag
- nodejs
- Next.js
- REACT
- 백엔드개발
- github
- AI챗봇
- 관리자
- llm
- til
- nextJS
- Ktor
- LangChain
- babel
- 로컬LLM
- 개발블로그
- Docker
- PostgreSQL
- 리액트
- Project
- 백엔드
- 페이지
- Webpack
- 챗봇개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |