React 애플리케이션을 만들다 보면 "이걸 서버에서 렌더링할 수는 없을까?"라는 생각을 한 번쯤은 하게 됩니다. 특히 검색엔진 최적화(SEO), 첫 로딩 속도, 소셜 미디어 미리보기 등을 고려하다 보면 클라이언트에서만 렌더링하는 방식으로는 부족함을 느끼게 됩니다.
이럴 때 우리가 사용할 수 있는 기법 중 하나가 바로 SSR, 즉
Server-Side Rendering
입니다. 이번 시리즈에서는 SSR에 대해 깊이 있게 다루며, React 개발자 입장에서 SSR이 어떻게 동작하는지, 언제 사용하면 좋은지, 어떤 한계가 있는지를 단계별로 알아보겠습니다.
SSR의 개념과 SSR이 필요한 이유, 그리고 SSR이 실제로 어떻게 동작하는지를 차근차근 정리해보겠습니다. 또한, 이제 React 18에서 추가된 *스트리밍 렌더링(Streaming Rendering)*의 개념과 함께, 실제로 SSR이 어떻게 개선되었는지를 알아보겠습니다.
입니다.
보통 React 같은 SPA(Single Page Application)는 클라이언트에서 JavaScript가 실행된 이후에야 콘텐츠가 나타나지만, SSR을 사용하면 서버에서 미리 HTML을 렌더링해서 클라이언트에게 보내줄 수 있습니다.
이렇게 하면 사용자는 화면을 더 빨리 볼 수 있고, 검색 엔진도 HTML을 바로 읽을 수 있어 SEO에도 유리합니다.
: 검색 엔진은 JavaScript를 완벽히 실행하지 못하는 경우가 있기 때문에, HTML 형태로 콘텐츠를 제공하는 SSR이 유리합니다.
초기 로딩 속도가 중요한 서비스
: 서버에서 미리 렌더링된 HTML을 보내기 때문에 첫 화면이 더 빨리 보입니다.
소셜 미디어 공유
: 페이스북이나 트위터 같은 서비스는 링크를 공유할 때 HTML의 메타 태그를 기준으로 미리보기를 생성하는데, SSR을 사용하면 이 정보도 정확히 전달할 수 있습니다.
예를 들어, 블로그 서비스에서 SSR을 도입하면 사용자 경험과 검색 노출 모두를 향상시킬 수 있습니다.
이 구조에서 <Header />와 <Footer />는 바로 렌더링이 가능하지만 <MainContent />는 서버에서 데이터를 불러오는 데 시간이 걸린다고 가정해보겠습니다.
React 18의 스트리밍 SSR을 사용하면 Header와 Footer는 먼저 클라이언트에 전송되어 화면에 표시되고, MainContent는 준비가 되는 순간 나중에 채워지는 방식으로 동작합니다. 이렇게 하면 사용자 입장에서는 페이지가 점진적으로 빨리 보이기 때문에 더 쾌적하게 느낍니다.
SSR의 개념과 필요성, 그리고 SSR이 기본적으로 어떻게 동작하는지를 알아보았습니다.React 18에서 새롭게 도입된 스트리밍 SSR의 핵심 기능인 renderToPipeableStream과 Suspense의 연동 방식에 대해 알아보았습니다. SSR은 단순히 서버에서 HTML을 렌더링해주는 기능을 넘어서, 사용자 경험과 SEO, 퍼포먼스 모두를 향상시키는 중요한 기술입니다.
이 방식은 사용자에게 더 빠르게 콘텐츠를 보여주기 위한 중요한 기술이며, 특히 데이터 로딩이 많은 페이지에서 유용하게 활용될 수 있습니다.
다음 파트에서는 SSR과 관련된 hydration, 서버 컴포넌트, 캐싱 전략 등에 대해 더 자세히 알아보겠습니다.