React.js 를 배워보자/7. 서버 사이드 렌더링 (SSR)

서버 사이드 렌더링 (SSR) Next.js 소개

_Blue_Sky_ 2024. 10. 3. 15:03
728x90
728x90

서버 사이드 렌더링(SSR), Next.js: 심층 탐구 블로그 글

서론: 현대 웹 개발의 핵심, React와 서버 사이드 렌더링

웹 개발 환경은 날이 갈수록 복잡해지고, 사용자들은 더욱 빠르고 매끄러운 웹 경험을 요구합니다. 이러한 요구에 부응하기 위해 등장한 React는 유연하고 효율적인 사용자 인터페이스 개발을 가능하게 하여 웹 개발의 판도를 바꾸었습니다. 하지만 React만으로는 모든 문제를 해결할 수 없으며, 특히 초기 로딩 속도와 검색 엔진 최적화(SEO) 측면에서 한계를 드러내기도 합니다. 이러한 문제점을 해결하기 위해 등장한 것이 바로 **서버 사이드 렌더링(SSR)**입니다. SSR은 서버에서 HTML을 미리 생성하여 클라이언트에 전달하는 방식으로, 초기 로딩 속도를 향상시키고 SEO에 유리한 환경을 제공합니다.

이 글에서는 React와 SSR의 개념을 자세히 살펴보고, SSR을 효과적으로 구현할 수 있는 프레임워크인 Next.js를 소개하며, 실제 개발 환경에서 어떻게 활용할 수 있는지에 대해 알아보겠습니다.

1. React: 유연하고 효율적인 UI 개발

React는 Facebook에서 개발한 JavaScript 라이브러리로, 컴포넌트 기반의 아키텍처를 통해 복잡한 사용자 인터페이스를 효율적으로 관리할 수 있도록 돕습니다. React의 주요 특징은 다음과 같습니다.

  • 가상 DOM: 실제 DOM을 조작하는 대신 가상 DOM을 사용하여 불필요한 재렌더링을 최소화하고 성능을 향상시킵니다.
  • JSX: JavaScript와 HTML을 혼합하여 사용할 수 있는 문법으로, 컴포넌트를 직관적으로 작성할 수 있도록 지원합니다.
  • 단방향 데이터 흐름: 부모 컴포넌트에서 자식 컴포넌트로 데이터가 한 방향으로 흐르도록 설계되어 데이터 관리를 간소화합니다.

2. 서버 사이드 렌더링(SSR): 빠른 초기 로딩과 SEO를 위한 해결책

SSR은 서버에서 완전한 HTML 문서를 생성하여 클라이언트에 전달하는 방식입니다. 이는 다음과 같은 장점을 제공합니다.

  • 빠른 초기 로딩: 브라우저에서 JavaScript가 실행되기 전에 이미 완성된 HTML을 받아볼 수 있으므로 페이지가 더 빠르게 표시됩니다.
  • SEO 향상: 검색 엔진 크롤러는 JavaScript 실행 환경 없이 HTML을 직접 파싱하므로, SSR을 통해 생성된 페이지는 검색 엔진에서 더 잘 인식될 수 있습니다.
  • 사용자 경험 개선: 초기 화면이 빠르게 로딩되면 사용자는 더욱 쾌적한 경험을 할 수 있습니다.
728x90

3. Next.js: React 기반 SSR 프레임워크

Next.js는 React 기반의 오픈 소스 프레임워크로, SSR을 간편하게 구현할 수 있도록 다양한 기능을 제공합니다. Next.js의 주요 특징은 다음과 같습니다.

  • 파일 시스템 기반 라우팅: 파일 구조를 따라 자동으로 라우팅을 설정할 수 있어 개발 생산성을 높입니다.
  • 정적 사이트 생성(SSG): 미리 빌드된 HTML 파일을 생성하여 빠른 배포와 호스팅이 가능합니다.
  • API 루트: 서버에서 데이터를 가져오거나 다른 서버로 요청을 보내는 등의 작업을 수행할 수 있는 API 엔드포인트를 간편하게 생성할 수 있습니다.
  • 데이터 페칭: getStaticProps와 getServerSideProps 함수를 통해 데이터를 페칭하고 페이지를 렌더링할 수 있습니다.

4. Next.js를 이용한 SSR 구현 예시

// pages/index.js
import Head from 'next/head';

export async function getServerSideProps() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();

  return {
    props: {
      data,
    },
  };
}

export default function Home({ data }) {
  return (
    <div>
      <Head>
        <title>My Next.js App</title>
        <meta name="description" content="Generated by create-next-app" />
      </Head>

      <h1>Hello, world!</h1>
      <p>This is a Next.js application.</p>
      <ul>
        {data.map((item) => (
          <li key={item.id}>{item.name}</li>
        ))}
      </ul>
    </div>
  );
}
 

위 코드는 Next.js에서 SSR을 구현하는 간단한 예시입니다. getServerSideProps 함수에서 서버에서 데이터를 가져와 props 객체에 담아 컴포넌트에 전달합니다. 컴포넌트에서는 받은 데이터를 이용하여 HTML을 생성합니다.

결론: React, SSR, Next.js를 활용한 효율적인 웹 개발

React, SSR, Next.js는 현대 웹 개발에서 필수적인 기술 스택입니다. 이들을 효과적으로 활용하면 빠르고 안정적인 웹 애플리케이션을 개발할 수 있습니다. 특히 Next.js는 React 개발자에게 친숙한 환경에서 SSR을 구현할 수 있도록 지원하여 개발 생산성을 향상시킵니다.

 

728x90
728x90