[TIL] CSR vs SSR 🌍

devSony (Bamboo Tree πŸŽ‹)Β·2022λ…„ 11μ›” 23일
1

πŸ’‘ TIL

λͺ©λ‘ 보기
2/2

πŸ–₯️ λ Œλ”λ§

λ Œλ”λ§μ€ μ„œλ²„λ‘œλΆ€ν„° μš”μ²­ν•΄μ„œ 받은 λ‚΄μš©μ„ λΈŒλΌμš°μ € 화면에 ν‘œμ‹œν•΄μ£ΌλŠ” 것이닀.


πŸ“‘ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)

ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ λ Œλ”λ§(CSR)은 μ‰½κ²Œ λ§ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λͺ¨λ‘ μ²˜λ¦¬ν•˜λŠ” 것이닀. (ex. React)

μ„œλ²„μ—μ„œ 전체 νŽ˜μ΄μ§€λ₯Ό ν•œλ²ˆ λ Œλ”λ§ ν•˜μ—¬ 보여주고, κ·Έν›„ μ‚¬μš©μžκ°€ μš”μ²­ν•  λ•Œλ§ˆλ‹€
λ¦¬μ†ŒμŠ€λ₯Ό μ„œλ²„μ—μ„œ μ œκ³΅λ°›μ•„ ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄μ„ν•˜κ³  λ Œλ”λ§ ν•˜λŠ” 방식이닀.

μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§κ³Ό 달리 μ„œλ²„μ— HTML λ¬Έμ„œλ₯Ό μš”μ²­ν•˜λŠ” 것이 μ•„λ‹ˆλΌ,
λΈŒλΌμš°μ €μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ μ½˜ν…μΈ λ₯Ό λ Œλ”λ§ ν•˜λŠ” 것이닀.
λ”°λΌμ„œ 처음 λ‹€μš΄λ‘œλ“œ 받을 λ•Œ κ½€λ‚˜ μ‹œκ°„μ΄ μ†Œμš”λ  수 μžˆλ‹€.

λ˜ν•œ μΆ”κ°€μ μœΌλ‘œ 데이터가 ν•„μš”ν•˜λ©΄ μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό λ°›μ•„μ™€μ„œ,
ν΄λΌμ΄μ–ΈνŠΈ μͺ½μ—μ„œ μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ ν•¨κ»˜ λ™μ μœΌλ‘œ 화면을 κ΅¬μ„±ν•˜μ—¬
μ‚¬μš©μžμ—κ²Œ μ΅œμ’…μ μœΌλ‘œ 화면을 λ³΄μ—¬μ£Όκ²Œ λœλ‹€.

πŸ’‘ CSR μž‘λ™ 방식

λΈŒλΌμš°μ € -> ν”„λ‘ νŠΈ μ„œλ²„ -> λΈŒλΌμš°μ € -> λ°±μ—”λ“œ μ„œλ²„ -> λΈŒλΌμš°μ €


⚑️ μž₯점

1) μ‚¬μš©μžμ˜ UXκ°€ λ›°μ–΄λ‚˜λ‹€.

2) μ„œλ²„μ— μš”μ²­ν•˜λŠ” νšŸμˆ˜κ°€ 훨씬 적기 λ•Œλ¬Έμ— μ„œλ²„μ˜ λΆ€λ‹΄ λ˜ν•œ λœν•˜λ‹€.

⚑️ 단점

1) μ‚¬μš©μžκ°€ 첫 화면을 λ³΄κΈ°κΉŒμ§€μ˜ μ‹œκ°„μ΄ 였래 걸릴 수 μžˆλ‹€.

2) 썩 쒋지 μ•Šμ€ SEO(Search Engine Optimization)

μ΄λŸ¬ν•œ λ¬Έμ œμ λ“€ λ•Œλ¬Έμ—, μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)을 λ„μž….

πŸ’‘ SEO

검색 엔진 μ΅œμ ν™”(search engine optimization)λŠ” 검색 μ—”μ§„μœΌλ‘œλΆ€ν„° μ›Ήμ‚¬μ΄νŠΈλ‚˜ μ›ΉνŽ˜μ΄μ§€μ— λŒ€ν•œ μ›Ήμ‚¬μ΄νŠΈ νŠΈλž˜ν”½μ˜ ν’ˆμ§ˆκ³Ό 양을 κ°œμ„ ν•˜λŠ” 과정이닀.

μ›Ή νŽ˜μ΄μ§€ 검색엔진이 자료λ₯Ό μˆ˜μ§‘ν•˜κ³  μˆœμœ„λ₯Ό λ§€κΈ°λŠ” 방식에 맞게 μ›Ή νŽ˜μ΄μ§€λ₯Ό κ΅¬μ„±ν•΄μ„œ
검색 결과의 μƒμœ„μ— λ‚˜μ˜¬ 수 있게 ν•œλ‹€. μ›Ή νŽ˜μ΄μ§€μ™€ κ΄€λ ¨λœ κ²€μƒ‰μ–΄λ‘œ κ²€μƒ‰ν•œ 검색 κ²°κ³Ό μƒμœ„μ— λ‚˜μ˜€κ²Œ λœλ‹€λ©΄ λ°©λ¬Έ νŠΈλž˜ν”½μ΄ λŠ˜μ–΄λ‚˜κΈ° λ•Œλ¬Έμ— 효과적인 인터넷 λ§ˆμΌ€νŒ… 방법 μ€‘μ˜ ν•˜λ‚˜μ΄λ©° λΉ„μš©μ²˜λ¦¬ μ—†λŠ” λ§ˆμΌ€νŒ…μ΄λΌκ³  ν•  수 μžˆλ‹€.

ꡬ글과 넀이버와 같은 검색 엔진듀은 μ„œλ²„μ— λ“±λ‘λœ μ›Ήμ‚¬μ΄νŠΈλ₯Ό λŒμ•„λ‹€λ‹ˆλ©΄μ„œ
μ›Ήμ‚¬μ΄νŠΈμ˜ HTML λ¬Έμ„œλ₯Ό λΆ„μ„ν•΄μ„œ μš°λ¦¬κ°€ 검색할 λ•Œ μ›Ήμ‚¬μ΄νŠΈλ₯Ό λΉ λ₯΄κ²Œ 검색할 수 μžˆλ„λ‘ 도와쀀닀.

ν•˜μ§€λ§Œ CSRμ—μ„œ μ‚¬μš©λ˜μ–΄μ§€λŠ” HTML의 λ°”λ””λŠ” μ•žμ„  예제처럼 λŒ€λΆ€λΆ„ ν……ν…… λΉ„μ–΄μžˆκΈ° λ•Œλ¬Έμ—
검색엔진듀이 CSR둜 μž‘μ„±λœ μ›ΉνŽ˜μ΄μ§€λ₯Ό λΆ„μ„ν•˜λŠ”λ° λ§Žμ€ 어렀움을 κ²ͺκ³  μžˆλ‹€.


πŸ“‘ μ„œλ²„ μ‚¬μ΄λ“œ λ Œλ”λ§(SSR)

SSR은 ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ λͺ¨λ“  것을 μ²˜λ¦¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

μ›Ή μ‚¬μ΄νŠΈμ— μ ‘μ†ν•˜λ©΄ μ„œλ²„μ—μ„œ ν•„μš”ν•œ 데이터λ₯Ό λͺ¨λ‘ κ°€μ Έμ™€μ„œ HTML νŒŒμΌμ„ λ§Œλ“€κ²Œ 되고,
λ§Œλ“€μ–΄μ§„ HTMLκ³Ό HTML νŒŒμΌμ„ λ™μ μœΌλ‘œ 쑰금 μ œμ–΄ν•  수 μžˆλŠ” μ†ŒμŠ€μ½”λ“œμ™€ ν•¨κ»˜ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 보낸닀.

그리고 ν΄λΌμ΄μ–ΈνŠΈλŠ” 잘 λ§Œλ“€μ–΄μ§„ HTML λ¬Έμ„œλ₯Ό μ‚¬μš©μžμ—κ²Œ λ°”λ‘œ λ³΄μ—¬μ£Όκ²Œ λœλ‹€. (ex. Next JS)

πŸ’‘ SSR μž‘λ™ 방식

λΈŒλΌμš°μ € -> ν”„λ‘ νŠΈ μ„œλ²„ -> λ°±μ—”λ“œ μ„œλ²„ -> DB -> λ°±μ—”λ“œ μ„œλ²„ -> ν”„λ‘ νŠΈ μ„œλ²„ -> λΈŒλΌμš°μ €


⚑️ μž₯점

1) νŽ˜μ΄μ§€ λ‘œλ”©μ΄ λΉ λ₯΄λ‹€.

2) CSRκ³Ό 달리 λͺ¨λ“  컨텐츠가 HTML에 λ‹΄κ²¨μžˆκΈ° λ•Œλ¬Έμ— 효율적인 SEOκ°€ κ°€λŠ₯ν•˜λ‹€.

즉, μ•žμ„œ CSR의 단점인 느린 νŽ˜μ΄μ§€ λ‘œλ”©κ³Ό 쒋지 μ•Šμ€ SEO μ„±λŠ₯을 ν•΄κ²°ν•œ 것이닀.

⚑️ 단점

1) Blinking Issue

: μ‚¬μš©μžκ°€ μƒˆλ‘œκ³ μΉ¨μ„ ν•˜κ²Œ 되면 전체 μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ‹€μ‹œ μ„œλ²„μ—μ„œ 받아와야 ν•˜κΈ° λ•Œλ¬Έμ— 화면이 μ—†μ–΄μ‘Œλ‹€κ°€ λ‚˜νƒ€λ‚˜λŠ” ν˜„μƒ

2) μ„œλ²„ κ³ΌλΆ€ν•˜

: μ‚¬μš©μžκ°€ λ§Žμ€ μ œν’ˆμΌμˆ˜λ‘ μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•˜λŠ” νšŸμˆ˜κ°€ λ§Žμ•„μ§€κ³ ,
κ·Έλ•Œλ§ˆλ‹€ μ„œλ²„μ— 맀번 μš”μ²­μ„ ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ˜ 뢀담이 컀진닀.

3) TTV와 TVI의 κ³΅λ°±μ‹œκ°„

SSR λ°©μ‹μ—μ„œλŠ” μ„œλ²„μ—μ„œ λ§Œλ“€μ–΄μ§„ HTML νŒŒμΌμ„ κ°€μ Έμ˜€κ²Œ 되고 μ‚¬μš©μžλŠ” λ°”λ‘œ μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ³Ό 수 μžˆλ‹€.
ν•˜μ§€λ§Œ μ›Ή μ‚¬μ΄νŠΈλ₯Ό λ™μ μœΌλ‘œ μ œμ–΄ν•  수 μžˆλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ€ 아직 λ°›μ•„μ˜€μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ—
μ‚¬μš©μžκ°€ 클릭을 해도 μ•„λ¬΄λŸ° 것도 μ²˜λ¦¬ν•  μˆ˜κ°€ μ—†λŠ” μƒνƒœκ°€ λœλ‹€.
μ΅œμ’…μ μœΌλ‘œ μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ 받아와야 μ‚¬μš©μžκ°€ μ›ν•˜λŠ” 것을 μ²˜λ¦¬ν•  수 μžˆλŠ” μΈν„°λž™μ…˜μ΄ κ°€λŠ₯해진닀.

κ·Έλž˜μ„œ SSR은 μ‚¬μš©μžκ°€ μ‚¬μ΄νŠΈλ₯Ό λ³Ό 수 μžˆλŠ” μ‹œκ°„(TTV)κ³Ό
μ‹€μ œλ‘œ μΈν„°λž™μ…˜μ΄ κ°€λŠ₯ν•œ μ‹œκ°„(TTI)의 κ³΅λ°±μ‹œκ°„μ΄ κ½€ κΈΈλ‹€
λŠ” 단점이 μ‘΄μž¬ν•œλ‹€.

λ°˜λŒ€λ‘œ CSR은 HTML만 받아왔을 λ•ŒλŠ” 아무것도 보여지지 μ•Šκ³ 
λ§ν¬λ˜μ–΄ μžˆλŠ” λͺ¨λ“  λ‘œμ§μ„ μ²˜λ¦¬ν•˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„ λ°›μ•„μ˜€κ²Œ 되면
μ›Ή μ‚¬μ΄νŠΈκ°€ λ³΄μ—¬μ§€λŠ” λ™μ‹œμ— μΈν„°λž™μ…˜μ΄ κ°€λŠ₯해진닀. 즉 TTV와 TTI의 κ³΅λ°±μ‹œκ°„μ΄ μ—†λŠ” 것이닀.

πŸ’‘ TTV

Time To View : μ‚¬μš©μžκ°€ μ›ΉλΈŒλΌμš°μ €μ—μ„œ λ‚΄μš©μ„ λ³Ό 수 μžˆλŠ” μ‹œμ 

πŸ’‘ TTI

Time To Interact : μ‚¬μš©μžκ°€ μ›ΉλΈŒλΌμš°μ €μ—μ„œ μΈν„°λž™μ…˜ ν•  수 μžˆλŠ” μ‹œμ 


πŸ“‘ μš”μ•½

μš°λ¦¬κ°€ μ›ΉλΈŒλΌμš°μ €μ— μ ‘μ†ν•˜λ©΄ λ³΄μ΄λŠ” 화면은 HTML이닀.
μ΄λ•Œ, 이λ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 μ„œλ²„λ‹¨μ—μ„œ 이루어진닀면 SSR 방식이고,
λΈŒλΌμš°μ €μ—μ„œ 이루어진닀면 CSR 방식인 것이닀.

λ§Œμ•½, λͺ¨λ“  κ²€μƒ‰μ—”μ§„μ˜ SEOκ°€ μ€‘μš”ν•˜κ³ , μ›Ήμ‚¬μ΄νŠΈμ˜ λΉ λ₯Έ 초기 λ‘œλ”©μ΄ ν•„μš”ν•˜λ©°,
μ›Ήμ‚¬μ΄νŠΈ μ½˜ν…μΈ κ°€ λ§Žμ€ μƒν˜Έμž‘μš©μ΄ ν•„μš”ν•˜μ§€ μ•Šλ‹€λ©΄ SSR 방식을 μ‚¬μš©ν•˜λŠ” 것이 효율적일 것이닀.

반면 SEOκ°€ μ΅œμš°μ„ μ΄ μ•„λ‹ˆκ³ , μ›Ήμ‚¬μ΄νŠΈμ˜ μ½˜ν…μΈ κ°€ λ§Žμ€ μƒν˜Έμž‘μš©μ„ ν•„μš”λ‘œ ν•˜λ©°,
μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬μΆ•ν–ˆλ‹€λ©΄ CSR 방식을 μ‚¬μš©ν•˜λŠ” 것이 쒋을 것이닀.

πŸ›Ή κ²°λ‘ 

CSR을 잘 μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ΅œμ’…μ μœΌλ‘œ λ²ˆλ“€λ§ ν•΄μ„œ μ‚¬μš©μžμ—κ²Œ λ³΄λ‚΄μ£ΌλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ νŒŒμΌμ„
μ–΄λ–»κ²Œ ν•˜λ©΄ 효율적으둜 많이 λΆ„ν• ν•΄μ„œ 첫 번째둜 μ‚¬μš©μžκ°€ μ‚¬μ΄νŠΈλ₯Ό 보기 μœ„ν•΄μ„œ ν•„μš”ν•œ
ν•„μˆ˜μ μΈ μš”μ†Œλ“€λ§Œ 보낼 수 μžˆμ„μ§€ 고민해봐야 ν•œλ‹€.

SSR 같은 κ²½μš°λŠ” TTV와 TTI의 κ³΅λ°±μ‹œκ°„μ„ 쀄이기 μœ„ν•΄μ„œ μ–΄λ–€ λ…Έλ ₯을 ν•  수 μžˆμ„μ§€μ™€
μ–΄λ–»κ²Œ 쑰금 더 λ§€λ„λŸ¬μš΄ UI와 UXλ₯Ό μ œκ³΅ν•  수 μžˆμ„μ§€λ₯Ό 고민해보면 쒋을 것이닀.

❗️ μš”μ¦˜μ—λŠ” SSG(Static Site Generation)λΌλŠ” 방식도 쑴재

profile
πŸ‘» Superplate / πŸ’» Junior Developer / 🌐 Front-End

1개의 λŒ“κΈ€

comment-user-thumbnail
2022λ…„ 11μ›” 28일

#Superplate #devSony

λ‹΅κΈ€ 달기