# [[CSR vs SSR vs SSG|CSR vs SSR vs SSG]] ## πŸ“Œ Brief Summary CSR(ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§), SSR(μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§), SSG(정적 μ‚¬μ΄νŠΈ 생성)λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ HTML μ½˜ν…μΈ κ°€ μ–Έμ œ, μ–΄λ””μ„œ μƒμ„±λ˜μ–΄ μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ˜λŠ”μ§€λ₯Ό κ²°μ •ν•˜λŠ” 핡심적인 μ›Ή λ Œλ”λ§ μ „λž΅μž…λ‹ˆλ‹€ [1-3]. CSR은 λΈŒλΌμš°μ €μ—μ„œ [[JavaScript|JavaScript]]λ₯Ό 톡해 λ™μ μœΌλ‘œ UIλ₯Ό κ΅¬μΆ•ν•˜λ©°, SSR은 μ‚¬μš©μžμ˜ μš”μ²­λ§ˆλ‹€ μ„œλ²„μ—μ„œ 전체 HTML을 μ‹€μ‹œκ°„μœΌλ‘œ μƒμ„±ν•©λ‹ˆλ‹€ [2]. 반면 SSGλŠ” 배포 μ „ λΉŒλ“œ μ‹œμ μ— λͺ¨λ“  HTML νŽ˜μ΄μ§€λ₯Ό 미리 μƒμ„±ν•˜μ—¬ CDN을 톡해 정적 파일둜 μ œκ³΅ν•©λ‹ˆλ‹€ [2]. 각 λ Œλ”λ§ 방식은 초기 λ‘œλ“œ 속도, SEO(검색 μ—”μ§„ μ΅œμ ν™”), μ„œλ²„ λΆ€ν•˜, 그리고 μƒν˜Έμž‘μš©μ„± μΈ‘λ©΄μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ μž₯단점과 졜적의 μ‚¬μš© 사둀λ₯Ό κ°€μ§‘λ‹ˆλ‹€ [4-6]. ## πŸ“– Core Content **ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§ (CSR, Client-Side Rendering)** * **μž‘λ™ 원리**: μ„œλ²„λŠ” μ΅œμ†Œν•œμ˜ 빈 HTML λΌˆλŒ€μ™€ ν•¨κ»˜ 전체 JavaScript λ²ˆλ“€μ„ λΈŒλΌμš°μ €μ— μ „μ†‘ν•©λ‹ˆλ‹€ [4, 7, 8]. λΈŒλΌμš°μ €κ°€ 이 JavaScriptλ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•˜μ—¬ 데이터λ₯Ό κ°€μ Έμ˜€κ³  DOM을 λ™μ μœΌλ‘œ κ΅¬μΆ•ν•©λ‹ˆλ‹€ [4, 8, 9]. * **μž₯점**: 초기 λ‘œλ“œκ°€ μ™„λ£Œλœ ν›„μ—λŠ” νŽ˜μ΄μ§€ μƒˆλ‘œκ³ μΉ¨ 없이 즉각적인 ν™”λ©΄ μ „ν™˜μ΄ κ°€λŠ₯ν•˜μ—¬ λ§€λ„λŸ½κ³  μƒν˜Έμž‘μš©μ΄ ν’λΆ€ν•œ μ•±κ³Ό 같은 μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€ [7, 10, 11]. λ Œλ”λ§μ˜ 무거운 μž‘μ—…μ„ λΈŒλΌμš°μ €κ°€ μ²˜λ¦¬ν•˜λ―€λ‘œ μ„œλ²„ λΆ€ν•˜μ™€ ν˜ΈμŠ€νŒ… λΉ„μš©μ„ 쀄일 수 μžˆμŠ΅λ‹ˆλ‹€ [10, 12]. * **단점**: λΈŒλΌμš°μ €κ°€ 큰 JavaScript λ²ˆλ“€μ„ λͺ¨λ‘ μ‹€ν–‰ν•˜κΈ° μ „κΉŒμ§€λŠ” 빈 화면이 ν‘œμ‹œλ  수 μžˆμ–΄ 초기 λ‘œλ“œ 속도(First Contentful Paint)κ°€ λŠλ¦½λ‹ˆλ‹€ [7, 10, 13]. λ˜ν•œ 검색 μ—”μ§„ ν¬λ‘€λŸ¬κ°€ μ΄ˆκΈ°μ— 빈 νŽ˜μ΄μ§€λ₯Ό 보게 λ˜λ―€λ‘œ SEO에 λΆˆλ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [7, 14, 15]. * **μ ν•©ν•œ μ‚¬μš© 사둀**: SEOκ°€ μ€‘μš”ν•˜μ§€ μ•ŠμœΌλ©° κ³ λ„μ˜ μƒν˜Έμž‘μš©μ΄ ν•„μš”ν•œ 둜그인 기반의 λ‚΄λΆ€ λŒ€μ‹œλ³΄λ“œ, [[SaaS|SaaS]] ν”Œλž«νΌ, μ‹±κΈ€ νŽ˜μ΄μ§€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜(SPA) 등에 μ ν•©ν•©λ‹ˆλ‹€ [4, 10, 16, 17]. **μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§ (SSR, Server-Side Rendering)** * **μž‘λ™ 원리**: μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•  λ•Œλ§ˆλ‹€ μ„œλ²„μ—μ„œ 데이터λ₯Ό 가져와 μ™„μ „νžˆ λ Œλ”λ§λœ HTML λ¬Έμ„œλ₯Ό μƒμ„±ν•˜μ—¬ λΈŒλΌμš°μ €μ— μ „μ†‘ν•©λ‹ˆλ‹€ [18-20]. λΈŒλΌμš°μ €λŠ” 이 HTML을 μ¦‰μ‹œ ν‘œμ‹œν•˜μ§€λ§Œ, μƒν˜Έμž‘μš©μ„ μœ„ν•΄μ„œλŠ” μΆ”κ°€λ‘œ JavaScriptλ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ HTML에 μ—°κ²°ν•˜λŠ” 'ν•˜μ΄λ“œλ ˆμ΄μ…˜([[Hydration|Hydration]])' 과정을 거쳐야 ν•©λ‹ˆλ‹€ [18, 19, 21-23]. * **μž₯점**: 검색 엔진이 μ™„μ„±λœ HTML μ½˜ν…μΈ λ₯Ό μ¦‰μ‹œ 크둀링할 수 μžˆμ–΄ SEO에 맀우 μœ λ¦¬ν•©λ‹ˆλ‹€ [18, 24, 25]. μ‚¬μš©μžκ°€ 의미 μžˆλŠ” μ½˜ν…μΈ λ₯Ό λΉ λ₯΄κ²Œ λ³Ό 수 있으며(λΉ λ₯Έ FCP), 항상 μ΅œμ‹  μƒνƒœμ˜ 동적 데이터λ₯Ό λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [18, 24, 25]. * **단점**: λͺ¨λ“  μš”μ²­λ§ˆλ‹€ μ„œλ²„μ—μ„œ λ Œλ”λ§ λ‘œμ§μ„ μ‹€ν–‰ν•΄μ•Ό ν•˜λ―€λ‘œ νŠΈλž˜ν”½μ΄ 급증할 λ•Œ μ„œλ²„ λΆ€ν•˜μ™€ 인프라 관리 λ³΅μž‘μ„±μ΄ μ»€μ§‘λ‹ˆλ‹€ [18, 21, 26, 27]. λ˜ν•œ, ν•˜μ΄λ“œλ ˆμ΄μ…˜ 과정이 μ™„λ£Œλ˜κΈ° μ „κΉŒμ§€λŠ” μ‚¬μš©μžκ°€ λ²„νŠΌμ„ 클릭해도 λ°˜μ‘ν•˜μ§€ μ•ŠλŠ” λ“± μƒν˜Έμž‘μš© μ§€μ—°(Time to Interactive) ν˜„μƒμ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ [18, 21, 23]. * **μ ν•©ν•œ μ‚¬μš© 사둀**: μ‹€μ‹œκ°„ 데이터 μ—…λ°μ΄νŠΈμ™€ μš°μˆ˜ν•œ SEO μ΅œμ ν™”κ°€ λ™μ‹œμ— ν•„μš”ν•œ λ‰΄μŠ€ μ‚¬μ΄νŠΈ, μ½˜ν…μΈ  μœ„μ£Όμ˜ μ›Ήμ‚¬μ΄νŠΈ, μ „μžμƒκ±°λž˜ μ œν’ˆ νŽ˜μ΄μ§€ 등에 μ΄μƒμ μž…λ‹ˆλ‹€ [24, 28, 29]. **정적 μ‚¬μ΄νŠΈ 생성 (SSG, Static Site Generation)** * **μž‘λ™ 원리**: μ‚¬μš©μžμ˜ μš”μ²­ μ‹œμ μ΄ μ•„λ‹ˆλΌ, μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λΉŒλ“œ κ³Όμ •μ—μ„œ λͺ¨λ“  HTML νŽ˜μ΄μ§€λ₯Ό 미리 생성(Pre-build)ν•΄ λ‘‘λ‹ˆλ‹€ [30-32]. μƒμ„±λœ 정적 νŒŒμΌμ€ CDN을 톡해 λ°°ν¬λ˜μ–΄ μ „ 세계 μ‚¬μš©μžμ—κ²Œ μ¦‰κ°μ μœΌλ‘œ μ œκ³΅λ©λ‹ˆλ‹€ [30, 33, 34]. * **μž₯점**: μ„œλ²„ μΈ‘ μ—°μ‚° 과정이 μ—†μœΌλ―€λ‘œ κ°€μž₯ λΉ λ₯΄κ³  압도적인 νŽ˜μ΄μ§€ λ‘œλ“œ 속도λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€ [30, 32, 34]. 미리 λ Œλ”λ§λœ μ™„λ²½ν•œ HTML을 μ œκ³΅ν•˜λ―€λ‘œ SEO μ„±λŠ₯이 νƒμ›”ν•˜λ©°, λŒ€κ·œλͺ¨ νŠΈλž˜ν”½μ—λ„ 맀우 μ €λ ΄ν•˜κ³  효율적으둜 ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [31, 33, 35, 36]. * **단점**: μ½˜ν…μΈ λ₯Ό μ—…λ°μ΄νŠΈν•˜λ €λ©΄ μ‚¬μ΄νŠΈ 전체λ₯Ό λ‹€μ‹œ λΉŒλ“œν•˜κ³  배포해야 ν•˜λ―€λ‘œ 데이터가 μ‰½κ²Œ ꡬ식이 될 수 μžˆμŠ΅λ‹ˆλ‹€ [33, 37]. 자주 λ³€κ²½λ˜λŠ” μ‹€μ‹œκ°„ λ°μ΄ν„°λ‚˜ μ‚¬μš©μžλ³„ 맞좀 μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜λŠ” λ°λŠ” ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€ [33, 37]. * **μ ν•©ν•œ μ‚¬μš© 사둀**: μ½˜ν…μΈ  변동이 적고 방문자 λͺ¨λ‘μ—κ²Œ λ™μΌν•œ 정보λ₯Ό μ œκ³΅ν•˜λŠ” λ§ˆμΌ€νŒ… λžœλ”© νŽ˜μ΄μ§€, λΈ”λ‘œκ·Έ, 기술 λ¬Έμ„œ μ‚¬μ΄νŠΈ 등에 κ°€μž₯ μ™„λ²½ν•œ λ°©μ‹μž…λ‹ˆλ‹€ [31, 38]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Hydration|Hydration]], Single-Page Application (SPA), Incremental Static Regeneration (ISR), Time to Interactive (TTI), [[First Contentful Paint (FCP)|First Contentful Paint (FCP]] - **Projects/Contexts:** [[Next.js|Next.js]], Nuxt, SvelteKit 등은 ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ νŽ˜μ΄μ§€ λ‹¨μœ„λ‘œ SSR, SSG, CSR μ „λž΅μ„ ν˜Όν•©(Hybrid)ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” λŒ€ν‘œμ μΈ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€ [39-41]. - **Contradictions/Notes:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (제곡된 μ†ŒμŠ€λ“€ 간에 CSR, SSR, SSG의 μ •μ˜λ‚˜ μ„±λŠ₯적 μž₯단점 평가에 μžˆμ–΄ μƒμΆ©ν•˜κ±°λ‚˜ λͺ¨μˆœλ˜λŠ” λ‚΄μš©μ€ ν™•μΈλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) --- *Last updated: 2026-04-25*