๐Ÿธminzzi
Minzzi์•ผ
๐Ÿธminzzi
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (133)
    • ์˜ค๋ฅ˜ํ•ด๊ฒฐ (14)
    • FE (36)
      • Next.js (17)
      • React (4)
      • React Native (0)
      • TypeScript (1)
      • JavaScript (14)
    • BE (0)
      • Nest.js (0)
    • ๋ฐ๋ธŒ์ฝ”์Šค (7)
    • ์›น ํ”„๋กœ์ ํŠธ (5)
    • CS (28)
      • Algorithm (5)
      • Python (4)
      • C++ (2)
      • Operating System (4)
      • Computer Networking (3)
      • Data Structure (1)
      • Machine Learning (3)
      • Tip (6)
    • Github (4)
    • Flutter (3)
      • ํ”„๋กœ์ ํŠธ (3)
    • Private (3)
      • ํšŒ๊ณ  (7)
      • ๋ฉด์ ‘ (17)
    • ๊ฐœ๋ฐœ๋„์„œ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋ฉด์ ‘
  • SSR
  • ๋ ‰์‹œ์ปฌ
  • ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
  • ์‹คํ–‰์ปจํƒ์ŠคํŠธ
  • ์ด๋ฏธ์ง€ ์ตœ์ ํ™”
  • react
  • layout shift
  • ์˜ค๋ธ”์™„
  • ์‹คํ–‰์ปจํ…์ŠคํŠธ
  • ์ฝœ์Šคํƒ
  • next.js
  • reflow
  • ํ˜ธ์ด์ŠคํŒ…
  • ์›์‹œํƒ€์ž…
  • ๋ชจ๋˜๋ฆฌ์•กํŠธ๋”ฅ๋‹ค์ด๋ธŒ
  • ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  • ์ด๋ฒคํŠธ๋ฃจํ”„
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • ํž™์˜์—ญ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๐Ÿธminzzi

Minzzi์•ผ

๊ฐœ๋ฐœ๋„์„œ

[์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ ๋ฆฌ์•กํŠธ] 6. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ฆฌ์•กํŠธ - ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์˜ ํ•œ๊ณ„

2025. 7. 18. 22:03

ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(CSR)์˜ ํ•œ๊ณ„

CSR์€ HTML, CSS, JS ๋“ฑ์˜ ์ตœ์†Œ ๋ฆฌ์†Œ์Šค๋งŒ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๊ณ , ์‹ค์ œ ์ฝ˜ํ…์ธ ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ HTML ํŒŒ์‹ฑ๋ถ€ํ„ฐ JS๋ฅผ ์ฝ๋Š” ๊ฒƒ๊นŒ์ง€ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ๋ฌธ์„œ๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
2. ์„œ๋ฒ„๋Š” ๋นˆ HTML ๋ผˆ๋Œ€์™€ JavaScript ํŒŒ์ผ ๋งํฌ๋ฅผ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค.
3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ JavaScript ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ React ์•ฑ์ด ์ดˆ๊ธฐํ™”๋˜๋ฉฐ React๋Š” ๊ฐ€์ƒDOMํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ €์˜ DOM์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
4. CSS ํŒŒ์ผ์„ ๋งŒ๋‚˜๋ฉด ํŒŒ์‹ฑํ•˜์—ฌ CSSOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
5. DOM๊ณผ CSSOM์„ ํ•ฉ์ณ ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
6. ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ™”๋ฉด์— ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ•  ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ ˆ์ด์•„์›ƒ๊ณผ์ •์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
7. ๋งˆ์ง€๋ง‰์œผ๋กœ ํ”ฝ์…€๋‹จ์œ„๋กœ ํ™”๋ฉด์— ํŽ˜์ธํŒ…ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ CSR ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

1.1 ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์˜ ํ•œ๊ณ„

CSR์—์„œ์˜ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”์˜ ํ•œ๊ณ„๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ์— ์•ž์„œ, ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO)์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

1. ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(SEO, Search Engine Optimization)๋ž€?

์›น์‚ฌ์ดํŠธ๊ฐ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ƒ์œ„์— ๋…ธ์ถœ๋˜๋„๋ก ์ฝ˜ํ…์ธ ์™€ ๊ตฌ์กฐ๋ฅผ ์กฐ์ •ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰์–ด์— ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ๋” ์ž˜ ๋…ธ์ถœ์‹œํ‚ค๊ณ , ์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

2. ๊ฒ€์ƒ‰ ์—”์ง„์˜ ์ž‘๋™ ๋ฐฉ์‹

1. ํฌ๋กค๋ง - ๊ฒ€์ƒ‰ ์—”์ง„์˜ ํฌ๋กค๋Ÿฌ(bot)๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ HTML์„ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.

2. ์ธ๋ฑ์‹ฑ - ์ˆ˜์ง‘ํ•œ HTML ์ฝ˜ํ…์ธ ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ƒ‰์ธ(index)์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

3. ๋žญํ‚น - ์‚ฌ์šฉ์ž์˜ ๊ฒ€์ƒ‰์–ด์™€ ๊ด€๋ จ๋œ ์ฝ˜ํ…์ธ ๋ฅผ ์ฐพ์•„, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ˆœ์œ„๋กœ ์ •๋ ฌํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

 

3. CSR ๋ฐฉ์‹์˜ ํ•œ๊ณ„

CSR์€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ์ฝ˜ํ…์ธ ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ์—”์ง„ ํฌ๋กค๋Ÿฌ๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉด ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๋Œ€๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

 

3.1 ๋ฌธ์ œ์ 

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ผ๋ถ€ ๊ฒ€์ƒ‰ ์—”์ง„์€ ์ฝ˜ํ…์ธ ๋ฅผ ์•„์˜ˆ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํฌ๋กค๋Ÿฌ์˜ ๊ฒฝ์šฐ์—๋„ ํฌ๋กค๋ง ์‹œ์ ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ๋นˆ HTML๋กœ ์ธ์‹๋˜์–ด ์ฝ˜ํ…์ธ  ๋ˆ„๋ฝ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

- ํŠน์ • ์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํฌ๋กค๋ง ํ—ˆ์šฉ ๋ฒ”์œ„๋‚˜ ๋กœ๋ด‡ ์„ค์ • ๋“ฑ์— ์˜ํ•ด ์ฝ˜ํ…์ธ ๊ฐ€ ์ˆ˜์ง‘๋˜์ง€ ์•Š๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 

4. ์‹คํ—˜ ๋ฐ ํ™•์ธ๋œ ์‚ฌ์‹ค

2015๋…„๋ถ€ํ„ฐ Google๊ณผ Bing ๋“ฑ ์ฃผ์š” ๊ฒ€์ƒ‰ ์—”์ง„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•ด์„ํ•˜๊ณ  CSR ์ฝ˜ํ…์ธ  ์ผ๋ถ€ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐœ์ „ํ•ด์™”์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋‹ค์–‘ํ•œ ๊ตฌํ˜„ ๋ฐฉ์‹์„ ํ†ตํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ DOM๊นŒ์ง€ ์ฝ์–ด๋‚ด์–ด ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ‰์ธํ•  ์ˆ˜ ์žˆ์Œ์ด ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ CSR๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์‚ฌ์ดํŠธ์—์„œ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„์˜ ์ง€์›์ด ์™„๋ฒฝํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ๋ Œ๋”๋ง ํƒ€์ด๋ฐ์˜ ์˜ค์ฐจ๋กœ ์ธํ•ด ์ œ๋Œ€๋กœ ์ƒ‰์ธ๋˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

1.2 ์„ฑ๋Šฅ์˜ ํ•œ๊ณ„

1. ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฒช๋Š” ๊ฒฝ์šฐ

CSR์€ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1) ๋А๋ฆฐ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์—์„œ ์ทจ์•ฝ

   - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ด ํฌ๊ณ , ๋‹ค์šด๋กœ๋“œ/์‹คํ–‰๊นŒ์ง€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

2) ์ €์„ฑ๋Šฅ ๊ธฐ๊ธฐ์—์„œ ๋А๋ฆฐ ์ฒ˜๋ฆฌ ์†๋„

   - CPU๊ฐ€ ์•ฝํ•œ ๋ชจ๋ฐ”์ผ์ด๋‚˜ ์ €๊ฐ€ํ˜• ๋””๋ฐ”์ด์Šค์—์„œ ์‹คํ–‰ ์†๋„๊ฐ€ ๋А๋ฆผ

3) ๋ Œ๋”๋ง ์ง€์—ฐ

   - ์‚ฌ์šฉ์ž์—๊ฒŒ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ณด์ด๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง (TTI ์ฆ๊ฐ€)

4) ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ €ํ•˜

   - ์ดˆ๊ธฐ ๋กœ๋”ฉ์ด ๋А๋ ค ํŽ˜์ด์ง€ ์ดํƒˆ๋ฅ  ์ฆ๊ฐ€

   - SEO์—๋„ ๋ถ€์ •์  ์˜ํ–ฅ (๊ฒ€์ƒ‰ ์—”์ง„์€ ์ฝ˜ํ…์ธ ๊ฐ€ ๋Šฆ๊ฒŒ ๋ Œ๋”๋ง๋˜๋ฉด ์ธ์‹ํ•˜์ง€ ๋ชปํ•จ)

 

์ค‘์š”ํ•œ ์„ฑ๋Šฅ ์ง€ํ‘œ

- First Contentful Paint(FCP) : ์ฒซ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œ์‹œ๋˜๋Š” ์‹œ๊ฐ„

CSR์—์„œ๋Š” ๋‘ ์ง€ํ‘œ๊ฐ€ ๋А๋ฆฌ๊ฒŒ ๋‚˜ํƒ€๋‚  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

- Time To Interactive(TTI) : ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ์‹œ์ ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์œผ๋กœ, ํŽ˜์ด์ง€๊ฐ€ ์ฒ˜์Œ ๋กœ๋“œ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ์ˆœ๊ฐ„๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž์™€ ์™„์ „ํžˆ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„

 

  • HTML + CSS + JS ๋กœ๋”ฉ
  • ์ดˆ๊ธฐ ํ™”๋ฉด ์ฝ˜ํ…์ธ ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๊ทธ๋ ค์ง€๋Š” ์‹œ์  (First Paint, First Contentful Paint)
  • ํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญ, ์Šคํฌ๋กค, ์ž…๋ ฅ ๋“ฑ ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์— ์ง€์—ฐ ์—†์ด ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋Š” ์‹œ์ 

 

 

ํŽ˜์ด์ง€๊ฐ€ ๋ณด์ด๋Š” ์‹œ์ (FCP)๊ณผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ (TTI) ์‚ฌ์ด์— ๊ฒฉ์ฐจ๊ฐ€ ํด์ˆ˜๋ก ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ๋‚˜๋น ์ง‘๋‹ˆ๋‹ค.

 

2. SSR vs CSR : ๋„คํŠธ์›Œํฌ ํญํฌ ํšจ๊ณผ

 

CSR ๋ฐฉ์‹์˜ ๋„คํŠธ์›Œํฌ ํญํฌ ๋ฌธ์ œ

CSR์˜ ๊ฒฝ์šฐ, ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

HTML ๋กœ๋”ฉ (๋นˆ ํŽ˜์ด์ง€)
   -> ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋กœ๋”ฉ
      -> ์ดˆ๊ธฐ UI ๋ Œ๋”๋ง
         -> ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ(API ํ˜ธ์ถœ)
            -> UI ์—…๋ฐ์ดํŠธ

์œ„์™€ ๊ฐ™์€ ๊ตฌ์กฐ๋Š” ๋ชจ๋“  ์ž‘์—…์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, "๋„คํŠธ์›Œํฌ ํญํฌ(Network Waterfall)"ํ˜„์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด์–ด์ง€๊ธฐ ์ „๊นŒ์ง€ ์™„๋ฃŒ๋˜์–ด์•ผํ•˜๋ฏ€๋กœ ์ „์ฒด ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ  ์„ฑ๋Šฅ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

*๋„คํŠธ์›Œํฌ ํญํฌ๋ž€? ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํŽ˜์นญํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ์š”์ฒญ์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„์—์•ผ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ์‹œ์ž‘ํ•˜๋Š” ์ƒํ™ฉ

 

SSR์˜ ์žฅ์ ๊ณผ ํ๋ฆ„

HTML ๋กœ๋”ฉ(์ „์ฒด UI, ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ ํฌํ•จ)

- ์ดˆ๊ธฐ HTML์— ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด SEO ์ตœ์ ํ™”์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

- ์‚ฌ์šฉ์ž๋Š” ์ฆ‰์‹œ ์ฝ˜ํ…์ธ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์–ด TTI/FCP ๋ชจ๋‘ ๋น ๋ฆ…๋‹ˆ๋‹ค.

- ๋„คํŠธ์›Œํฌ ํญํฌ ์—†์ด, ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฒซ ์š”์ฒญ์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.3 ๋ณด์•ˆ์˜ ํ•œ๊ณ„

CSR์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ณด์•ˆ์ด ๋ฌธ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ CSRF๊ฐ™์€ ๊ณต๊ฒฉ์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1. CSRF๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์š”์ฒญ ์œ„์กฐ(CSFR, cross-site request forgery)๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ๋œ ์ƒํƒœ๋ผ๋Š” ์ ์„ ์•…์šฉํ•ด, ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜์ง€ ์•Š์€ ์š”์ฒญ์„ ์„œ๋ฒ„์— ๋Œ€์‹  ๋ณด๋‚ด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค.

"์ด๋ฒคํŠธ ๋‹น์ฒจ! ์—ฌ๊ธฐ์„œ ํ™•์ธํ•˜์„ธ์š” ๐Ÿ‘‰ http://evil.com"

์˜ˆ๋ฅผ ๋“ค์–ด, ์–ด๋–ค ์›น์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•ด ์žˆ๋Š” ์ƒํƒœ์—์„œ ์œ„์™€ ๊ฐ™์€ ๋ฉ”์„ธ์ง€๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ € ์•…์„ฑ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜๋ฉด, ๊ทธ ์•…์„ฑ ์‚ฌ์ดํŠธ๊ฐ€ ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธˆ์œต ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธ ์ค‘์ธ๋ฐ, ๋‹ค๋ฅธ ์•…์„ฑ ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ถœ๊ธˆ ์š”์ฒญ์ด ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

2. CSRF ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ 

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ฟ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ™์ด ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์—

- ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์‚ฌ์ดํŠธ์— ๋กœ๊ทธ์ธํ•˜๋ฉด, ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น ์‚ฌ์ดํŠธ์— ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ € ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ™์ด ๋ณด๋ƒ…๋‹ˆ๋‹ค. (์„œ๋ฒ„๋Š” ํ•ด๋‹น ์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ๋ณด๊ณ  ๋กœ๊ทธ์ธํ•œ ์ƒํƒœ๋ผ๊ณ  ์ธ์ง€ํ•ฉ๋‹ˆ๋‹ค)

- ์ด ๋™์ž‘์€ ์‚ฌ์ดํŠธ๊ฐ€ ๋‹ค๋ฅด๋”๋ผ๋„ ๋ฌด์กฐ๊ฑด ์ˆ˜ํ–‰๋˜๊ฒŒ ๋˜๋Š”๋ฐ์š”, CSFR ๋ฐฉ์–ด๋ฅผ ํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„๋Š” ์š”์ฒญ์ด ์–ด๋””์—์„œ ์™”๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•…์„ฑ ์‚ฌ์ดํŠธ์—์„œ ๋ณด๋‚ด๋Š” ์š”์ฒญ๋„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

3. CSR์ด CSRF์— ์ทจ์•ฝํ•œ ์ด์œ 

CSR ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์„œ๋ฒ„์— API ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์ฟ ํ‚ค๋ฅผ ์ž๋™ ํฌํ•จ์‹œ์ผœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ CSRF๊ฐ€ ์ž๋™์œผ๋กœ ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ์•…์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  CSR์€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง์ ‘ API ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ผ์šฐ์ € ๋ณด์•ˆ ์ •์ฑ…(์ž๋™ ์ฟ ํ‚ค ํฌํ•จ ๋“ฑ)์˜ ์˜ํ–ฅ์„ ์ง์ ‘์ ์œผ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์—์„œ ๋งŒ๋“ค์–ด์ง„ ์š”์ฒญ์ด์–ด๋„, ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์ด ์ „์†ก๋˜๋ฉด ์š”์ฒญ์ด ๋ฐ›์•„๋“ค์—ฌ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, ์„œ๋ฒ„๊ฐ€ CSRF ๋ฐฉ์–ด๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์„ ๋•Œ CSRF์— ์ทจ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก์—์„œ CSRF ๋ฐฉ์–ด๋ฅผ ๋ˆ„๋ฝํ•˜๋ฉด ๊ณต๊ฒฉ์— ๊ทธ๋Œ€๋กœ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.


<์ฑ…์— ๋‚˜์™”๋˜ ํ‘œํ˜„>

์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ณ  ํ”„๋ŸฐํŠธ์—”๋“œ ํด๋ผ์ด์–ธํŠธ ์ „์šฉ ์ฝ”๋“œ๋งŒ ์žˆ๋Š” ํŒ€์—์„œ git push๋ฅผ ํ†ตํ•ด ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์–ด๋”˜๊ฐ€์— ๋ฐฐํฌ๋˜๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด, CSRF ์œ„ํ—˜ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

-> ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ด๋‚˜ API ์„œ๋ฒ„๋Š” ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ, ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ๋งŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ

-> ์„œ๋ฒ„์— CSRF ๋ฐฉ์–ด ๋กœ์ง์„ ๋„ฃ์„ ์ˆ˜ ์—†์Œ

-> ์„œ๋ฒ„ ์ฝ”๋“œ์— ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , ํ”„๋ก ํŠธ ์ฝ”๋“œ๋งŒ ๋ฐฐํฌ

 

์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์›น์‚ฌ์ดํŠธ ๋˜๋Š” ์›น ์•ฑ์ด ํด๋ผ์ด์–ธํŠธ ์ „์šฉ์ด๋ผ๋ฉด CSRF ์œ„ํ˜‘์„ ์ƒ๋‹นํžˆ ์ž˜ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๊ณ  ๊ด€๋ จ๋œ ๋ณด์•ˆ ์œ„ํ—˜ ์š”์†Œ๋„ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

-> ์„œ๋ฒ„์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ด์„œ CSRF ๋ฐฉ์–ด ๋กœ์ง์„ ์ง์ ‘ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

 

์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ์›น์‚ฌ์ดํŠธ๋‚˜ ์›น ์•ฑ์ด ํด๋ผ์ด์–ธํŠธ ์ „์šฉ์ด๋ผ๋ฉด, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ฏผํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ํ†ตํ•ด ์•ž์„œ ๋‹ค๋ฃฌ SEO ๋˜๋Š” ์„ฑ๋Šฅ๊ณผ ๊ด€๋ จํ•œ ์ด์ ์ด ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

-> SSR์€ SEO์™€ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„ ์ธก๋ฉด์—์„œ ์ด์ ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— SSR์„ ๊ณ ๋ คํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ข‹์Œ

 


์ด๋ ‡๋“ฏ CSR์€ SEO, ์„ฑ๋Šฅ, ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ํ†ตํ•ด ์œ„ ํ•œ๊ณ„์ ์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๊ฐœ๋ฐœ๋„์„œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Study] ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(์ •์žฌ๋‚จ)  (11) 2025.06.08
[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] ๋ฆฌํŒฉํ„ฐ๋ง ์นดํƒˆ๋กœ๊ทธ ๋ณด๋Š” ๋ฒ•(ch5)  (0) 2025.05.01
[๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch4)  (0) 2025.04.30
[ํ•จ๊ป˜์ž๋ผ๊ธฐ] action point  (2) 2025.04.30
[๋ฆฌํŒฉํ† ๋ง 2ํŒ] action point(ch3)  (0) 2025.04.28
    '๊ฐœ๋ฐœ๋„์„œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Study] ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(์ •์žฌ๋‚จ)
    • [๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] ๋ฆฌํŒฉํ„ฐ๋ง ์นดํƒˆ๋กœ๊ทธ ๋ณด๋Š” ๋ฒ•(ch5)
    • [๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ] action point(ch4)
    • [ํ•จ๊ป˜์ž๋ผ๊ธฐ] action point
    ๐Ÿธminzzi
    ๐Ÿธminzzi

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”