From 2c6309d9e471a05c69de351896c88492bb8d5315 Mon Sep 17 00:00:00 2001 From: sunub Date: Mon, 12 Jan 2026 12:05:40 +0900 Subject: [PATCH] Remove SSR vs SSG discussion from README Removed section discussing reasons for using SSR over SSG in blog development. --- README.md | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/README.md b/README.md index 80fcd6d5..07e6ebcb 100755 --- a/README.md +++ b/README.md @@ -94,26 +94,6 @@ const [fileContent, _] = await Promise.all([ 특히 setTimeout을 이용한 최소 대기 시간 확보 결정은 중요한 교훈을 주었습니다. 모든 것을 순수하게 기술적인 관점에서만 해결하려는 집착을 버리고, 사용자 경험(UX)과 개발 경험(DX), 그리고 테스트 안정성 사이의 균형점을 찾는 것이 실용적인 엔지니어링이라는 것을 깨달았습니다. 테스트는 실제 사용자의 경험 흐름을 최대한 존중하며 설계되어야 한다는 것을 배울 수 있었습니다. - -## SSG가 아닌 SSR을 사용하여 블로그를 개발한 이유 - -![color-schema](https://github.com/user-attachments/assets/0dd91ba2-0db1-4582-a73b-365362e07666) - -1. 쿠키 기반 사용자 경험 개인화: SSG의 명백한 한계 - 사용자가 페이지를 요청하면, SSR(Server-Side Rendering) 서버는 즉시 요청 헤더의 쿠키를 읽어들입니다. 이 쿠키 정보를 바탕으로 해당 사용자의 테마가 완벽히 적용된 HTML을 처음부터 생성하여 전달합니다. 덕분에 클라이언트 단에서 테마가 바뀌면서 화면이 깜빡이는 플리커링(flickering) 현상 없이 매끄러운 사용자 경험을 제공할 수 있습니다. - -반면 **SSG(Static Site Generation)**는 빌드 시점에 모든 사용자를 위한 단일 버전의 정적 HTML을 생성합니다. 이 시점에는 미래에 접속할 특정 사용자의 쿠키 값을 전혀 알 수 없습니다. 따라서 서버에서 미리 테마를 적용하는 것이 원천적으로 불가능하며, 클라이언트 측에서만 테마 적용이 가능해 필연적으로 테마 깜빡임이 발생하게 됩니다. - -2. 서버 중심의 효율적인 데이터 처리 및 상태 관리 - SSR 환경에서는 서버 중심의 효율적인 데이터 처리와 상태 관리가 가능합니다. 예를 들어, Generator 함수를 통해 대용량의 포스트 목록도 요청 시 필요한 만큼만 순차적으로 평가하여 서버의 메모리 사용을 최소화할 수 있습니다. 이는 요청마다 자원을 효율적으로 사용해야 하는 SSR 환경에 최적화된 방식입니다. - -또한, 서버 컴포넌트에서 Promise 기반으로 데이터를 가져오고, 클라이언트에서는 Suspense로 로딩 상태를 처리하는 등, 데이터 페칭부터 UI 렌더링까지의 비동기 흐름을 자연스럽게 통합하여 관리할 수 있습니다. 하지만 SSG는 빌드 과정에서 데이터를 모두 처리하므로, 요청 시점의 동적인 서버 자원 최적화라는 개념이 적용되기 어렵습니다. - -3. SEO 최적화 및 사용자별 콘텐츠 제공 - SSR은 검색 엔진 크롤러에 최적화된, 내용이 모두 채워진 HTML을 제공하므로 SEO(검색 엔진 최적화)에 매우 유리합니다. 더 나아가, 서버는 각 사용자의 요청(쿠키, 세션 등)에 따라 개인화된 콘텐츠나 인증 상태에 따른 화면을 동적으로 구성할 수 있습니다. 이는 모든 사용자에게 동일한 페이지만 제공하는 정적 방식(SSG)의 한계를 극복하는 핵심적인 장점입니다. - -이러한 이유들로 인해 Static Site Generator가 아닌 SSR을 주로 활용하여 개인 블로그를 개발했습니다. 물론 SSG를 사용하는 방법이 블로그를 개발하는 데 있어서 더 간단하고 빠른 속도로 개발이 가능하다는 것을 알고 있었지만, 블로그를 직접 개발하며 다양한 경험을 하고 SSR을 어떻게 활용하고 개발해야 하는지를 경험하기 위해 이러한 선택을 내렸습니다. - ## 검색 기능 구현 ![searching](https://github.com/user-attachments/assets/f3420a82-7e61-442a-8d04-b3682b9491d7)