μμ½
- SSR?
- κ° νμ΄μ§ μμ²λ§λ€ μλ²μμ HTMLμ μμ±νμ¬ ν΄λΌμ΄μΈνΈμ μ μ‘νλ λ λλ§ λ°©μ
- μ₯μ
- SEO μ΅μ ν
- λΉ λ₯Έ μ΄κΈ° λ‘λ© μλ
- λ¨μ
- μλ² λΆν μ¦κ°
- νΈμ€ν λΉμ© μμΉ
- κ°λ° 볡μ‘μ± μ¦κ°
- μν(Hydration) κ³Όμ μμ βμ£½μ μκ°β 1 λ°μ κ°λ₯
- SEOκ° μ€μν νΌλΈλ¦ μΉμ¬μ΄νΈμ μ ν©ν λ°©μ
μλ² μΈ‘ λ λλ§(SSR)μ΄λ?
Server-Side Rendering
κ° νμ΄μ§ μμ²λ§λ€ μλ²μμ HTMLμ μμ±, ν΄λΌμ΄μΈνΈμ μ μ‘νλ λ λλ§ λ°©μ
SSR λ¨κ³
- μ¬μ©μκ° μΉνμ΄μ§μ μ κ·Ό
- μλ²λ μμ ν λ λλ§λ HTML νμ΄μ§λ₯Ό μμ±, ν΄λΌμ΄μΈνΈμ μ μ‘
- ν΄λΌμ΄μΈνΈμ JavaScriptκ° ν΄λΉ νμ΄μ§λ₯Ό μΈν°λν°λΈνκ² λ§λλ μν(Hydration) κ³Όμ
μν(Hydration) κ³Όμ
μλ²μμ λ λλ§λ μ μ HTMLμ JavaScript μ΄λ²€νΈ νΈλ€λ¬μ μν κ΄λ¦¬λ₯Ό μ°κ²°νμ¬ Interactiveνκ² λ§λλ κ³Όμ
Hydration κ³Όμ μ λ¨κ³
- μλ² λ λλ§
- μλ²μμ μμ ν λ λλ§λ HTMLμ ν΄λΌμ΄μΈνΈμ μ μ‘
- JavaScript λ‘λ©
- ν΄λΌμ΄μΈνΈμμ JavaScript λ²λ€μ λ€μ΄λ‘λνκ³ μ€ν
- DOM μ°κ²°
- κΈ°μ‘΄ DOM μμμ μ΄λ²€νΈ νΈλ€λ¬μ μνλ₯Ό μ°κ²°
- μν 볡μ
- μ ν리μΌμ΄μ μνλ₯Ό ν΄λΌμ΄μΈνΈμμ 볡μ
- Interactive μλ£
- μ¬μ©μκ° νμ΄μ§μ μμ ν μνΈμμ©ν μ μλ μν λλ¬
TTI (Time-to-Interactive)
μ¬μ©μκ° νμ΄μ§λ₯Ό 보기 μμνλ μμ κ³Ό μ€μ λ‘ μνΈμμ©ν μ μλ μμ μ¬μ΄μ μκ°
- SSRμμλ μν κ³Όμ μΌλ‘ μΈνμ¬ μ΄ μκ°μ΄ κΈΈμ΄μ§ μ μμ
- 3.8μ΄ μ΄νλ‘ μ μ§νλ κ²μ΄ κΆμ₯λ¨ 2
SSRμ μ₯μ
1. SEO μ΅μ ν
κ²μ μμ§μ΄ μμ ν λ λλ§λ νμ΄μ§λ₯Ό μμ , μ½ν μΈ λ₯Ό μ½κ² μμΈνν μ μμ
- Google
- JavaScript μ ν리μΌμ΄μ μ ν¨κ³Όμ μΌλ‘ λ λλ§νκ³ μΈλ±μ±ν μ μμ§λ§, λ λλ§ ν λκΈ° μκ° μ‘΄μ¬
- 15MB ν¬λ‘€λ§ μ ν μ μ©, λμ©λ JavaScript λ²λ€μ μμ ν μ²λ¦¬λμ§ μμ μ μμ
- Bing
- λΆλΆμ JavaScript μ§μ
- Yandex
- μ νμ μ§μ
SSRμ SEO μ΄μ :
- μ¦μ ν¬λ‘€λ§ κ°λ₯ν HTML μ 곡
- λ©ν νκ·Έμ ꡬ쑰νλ λ°μ΄ν°μ νμ€ν μ λ¬
- μμ λ―Έλμ΄ κ³΅μ μ, μ νν ν리뷰 μ 곡
2. μ±λ₯
SSRμ μ΄κΈ° μ½ν μΈ λ₯Ό μλ²μμ μ μ‘νλ―λ‘, μΉ μ¬μ΄νΈμ λ‘λ© μλκ° λΉ¨λΌμ§
2.1. μ΄κΈ° λ‘λ© μ±λ₯
- λΉ λ₯Έ 첫 νλ©΄ νμ
- μλ²μμ μμ ν HTMLμ μ μ‘, μ¦μ μ½ν μΈ νμΈ κ°λ₯
- μ΄λ λ μ’μ μ¬μ©μ κ²½νμ μ 곡 β μ΄νλ₯ κ°μ
- λ€νΈμν¬ μ΅μ ν
- μ΄κΈ° JavaScript λ€μ΄λ‘λ μμ΄λ μ½ν μΈ νμ
- μ μ¬μ λλ°μ΄μ€ μ§μ
- ν΄λΌμ΄μΈνΈ μΈ‘ λ λλ§ λΆλ΄ κ°μ
2.2. Core Web Vitals
SSRμ Googleμ Core Web Vitals μ§νμμ μ°μν μ±λ₯μ 보μ
- LCP (Largest Contentful Paint): 2.5μ΄ μ΄ν λ¬μ± μ©μ΄
- INP (Interaction to Next Paint): 200ms μ΄ν λͺ©ν λ¬μ±
- CLS (Cumulative Layout Shift): 0.1 μ΄ν μ μ§ κ°λ₯
3. κ΄κ³ μλΉμ€ νΈνμ±
- Google AdSense
- AdSenseλ ν¬λ‘€λ¬λ₯Ό μ¬μ©, μ¬μ΄νΈμ μ½ν μΈ λ₯Ό μ½κ³ κ΄λ ¨ κ΄κ³ λ₯Ό μ 곡νλ μμ€ν
- SSRμ μ¬μ©νλ©΄, ν¬λ‘€λ¬κ° μ¬μ΄νΈμ λͺ¨λ 컨ν μΈ λ₯Ό μ½κ³ μ¬μ©μμκ² λ κ΄λ ¨μ± λμ κ΄κ³ μ 곡 κ°λ₯ β ν΄λ¦λ₯ κ³Ό κ΄κ³ μμ΅μ μ¦κ°λ‘ μ΄μ΄μ§ μ μμ
SSRμ λ¨μ
1. μλ² λΆν λ° λΉμ©
- λμ CPU/λ©λͺ¨λ¦¬ μ¬μ©λ
- λ§€ μμ²λ§λ€ μλ²μμ λ λλ§ μν
- νΈμ€ν
λΉμ© μ¦κ°
- μλ² λ¦¬μμ€ μꡬλ μ¦κ°λ‘ μΈν μ΄μλΉ μμΉ
- νμ₯μ± μ μ½
- λμ νΈλν½ μν©μμ μλ² νμ₯μ μ΄λ €μ
2. κ°λ° 볡μ‘μ±
- μλ²/ν΄λΌμ΄μΈνΈ μ½λ λκΈ°ν
- μμͺ½ νκ²½μμ λμνλ μ½λ μμ± νμ
- μν κ΄λ¦¬ 볡μ‘μ±
- μλ² μνμ ν΄λΌμ΄μΈνΈ μνμ μΌμΉμ± μ μ§
- λλ²κΉ
μ΄λ €μ
- μλ²μ ν΄λΌμ΄μΈνΈ νκ²½μ μ°¨μ΄λ‘ μΈν λ¬Έμ ν΄κ²° 볡μ‘
3. UX μ΄μ
- μΈν°λμ
μ§μ°
- μν(Hydration) κ³Όμ μλ£κΉμ§ μΌλΆ κΈ°λ₯ μ¬μ© λΆκ°
- βμ£½μ μκ°β
- νμ΄μ§κ° 보μ΄μ§λ§ ν΄λ¦μ΄λ μ λ ₯μ΄ λ°μνμ§ μλ κ΅¬κ° μ‘΄μ¬
- λΆμΌμΉ μ€λ₯
- μλ²μ ν΄λΌμ΄μΈνΈ λ λλ§ κ²°κ³Όκ° λ€λ₯Ό κ²½μ° λ°μνλ hydration mismatch
SSRμ΄ μ ν©ν κ²½μ°
- SEOκ° μ€μν μ¬μ΄νΈ
- λΈλ‘κ·Έ, λ΄μ€ μ¬μ΄νΈ, μ ν νμ΄μ§, λ§μΌν λλ©νμ΄μ§
- μ΄κΈ° λ‘λ© μλ μ°μ
- μ¬μ©μ μ μ μ΄ μ€μν νΌλΈλ¦ μΉμ¬μ΄νΈ
- λ€μν λλ°μ΄μ€ μ§μ
- μ μ¬μ λλ°μ΄μ€λ λλ¦° λ€νΈμν¬ νκ²½ κ³ λ € νμ
- μμ
λ―Έλμ΄ κ³΅μ
-
μ νν λ©νλ°μ΄ν°μ νλ¦¬λ·°κ° μ€μν μ½ν μΈ
-
μ΅μ ν μ λ΅
1. μ±λ₯ μ΅μ ν
- μ½λ μ€ν리ν
- νμν μ½λλ§ λ‘λνμ¬ λ²λ€ ν¬κΈ° μ΅μν
- μΊμ± μ λ΅
- μλ² λ λλ§ κ²°κ³Όλ₯Ό μ μ ν μΊμνμ¬ λΆν κ°μ
- CDN νμ©
- μ μ μμ°μ CDNμΌλ‘ λΆμ° μ²λ¦¬
2. κ°λ° μ΅μ ν
- λν(Isomorphic) μ½λ
- μλ²μ ν΄λΌμ΄μΈνΈμμ λμΌνκ² μλνλ μ½λ μμ±
- νκ²½ λΆλ¦¬
- μλ² μ μ© μ½λμ ν΄λΌμ΄μΈνΈ μ μ© μ½λμ λͺ νν ꡬλΆ
- ν
μ€νΈ μ λ΅
- μλ²μ ν΄λΌμ΄μΈνΈ νκ²½ λͺ¨λμμμ ν μ€νΈ μν
Footnotes
-
μ¬μ©μκ° νμ΄μ§λ₯Ό λ³Ό μλ μμ§λ§ μνΈμμ©ν μ μλ μκ° β©