์๋ ๋ด์ฉ์ ์ฐ์ํํ ํฌ: [10๋ถ ํ ์ฝํก] ๐จ ์ ์ธํํ์ CSR&SSR ์์์ ์ฐธ๊ณ ํ ๊ธ์ ๋๋ค. ์ ์ตํ ๋ด์ฉ ๋ฐํํด์ฃผ์ ์ ์ธํํ ๋๊ป ๊ฐ์ฌ๋ฅผ ํํ๋ฉฐ, ์์์ ํตํด ํ์ตํ ๋ด์ฉ์ ์๋์ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค.
1. SPA์ MPA์ ์ฐจ์ด์ ๋ถํฐ ์ง์ด๋ณด๊ธฐ
๋ณธ๊ฒฉ์ ์ผ๋ก CSR๊ณผ SSR ๊ฐ๋ ์ ๋ค๋ฃจ๊ธฐ ์ ์, SPA์ MPA์ ๋ํด ์ง์ด๋ณด์. ์ค๋๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ค๊ณ ํ๋ฉด ๋๋ถ๋ถ React, Angular, Vue์ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํด SPA๋ฅผ ๊ฐ๋ฐํ๋ค.
โ๏ธ SPA
์ฌ๊ธฐ์ SPA๋, Single Page Application์ ์ฝ์๋ก, ํ๋์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ค. SPA๋ก ๊ฐ๋ฐ๋ ์น์ฌ์ดํธ์์๋ ์นดํ ๊ณ ๋ฆฌ์ ์๋ ๊ฐ ๋ฉ๋ด๋ฅผ ์ ํํ๋ฉด ๋ณดํต ํค๋๋ ๊ณ ์ ๋์ด ์๋ ์ํ๋ก ๋ฉ์ธํ๋ฉด ํน์ ํด๋ฆญํ ๋ถ๋ถ๋ง ๋ฐ๋๋ค.
โ๏ธ MPA
๋ฐ๋ฉด MPA๋, Multi Page Application์ ์ฝ์๋ก, ํญ์ ์ด๋ํ ๋๋ง๋ค ์๋ฒ๋ก๋ถํฐ ์๋ก์ด HTML์ ์๋ก ๋ฐ์์์ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋ง ํ๋ ์ ํต์ ์ธ ์น ํ์ด์ง ๊ตฌ์ฑ ๋ฐฉ์์ด๋ค.
2. CSR๊ณผ SSR์ ๊ฐ๋ ํบ์๋ณด๊ธฐ
โ๏ธ ์ผ๋ฐ์ ์ผ๋ก๋
SPA์์๋ CSR๋ก ๋ ๋๋งํ๊ณ , MPA์์๋ SSR๋ก ๋ ๋๋ง ํ๋ค.
SPA๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ์ ์ ๋ฆฌ์์ค๋ฅผ ํ๊บผ๋ฒ์ ๋ชจ๋ ๋ค์ด๋ก๋ํ๊ณ , ์ดํ ์๋ก์ด ํ์ด์ง ์์ฒญ์ด ์์ ๋ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ๋ฌ๋ฐ์์ ํด๋ผ์ด์ธํธ์์ ํ์ํ ํ์ด์ง๋ฅผ ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ CSR๋ก ๋ ๋๋ง ํ๋ค.
๋ฐ๋ฉด MPA๋ ์๋ก์ด ์์ฒญ์ด ์์ ๋๋ง๋ค ์๋ฒ์์ ์ด๋ฏธ ๋ ๋๋ง ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ SSR๋ก ๋ ๋๋ง ํ๋ค.
๋ค๋ง, ์ด๋ฌํ ํน์ง ๋๋ฌธ์ SPA === CSR, MPA === SSR์ด๋ผ๋ ์คํด๊ฐ ์๊ธฐ๊ธด ํ๋, ์ด ๋ ๊ฐ๋ ์ ํ์ด์ง์ ๊ฐ์์ ๋ ๋๋ง์ ์ด๋์ ํ๋์ง ๋ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ๋ ์ด๋ผ๋ ์ ์ ์์ง ๋ง์.
โ๏ธ CSR๊ณผ SSR์ ์ฐจ์ด์
CSR์ Client Side Rendering์ ์ฝ์๋ก, ํด๋ผ์ด์ธํธ ์ธก์์ ๋ ๋๋ง ํ๋ ๋ฐฉ์์ด๊ณ , SSR์ Server Side Rendering์ ์ฝ์๋ก, ์๋ฒ ์ธก์์ ๋ ๋๋ง ํ๋ ๋ฐฉ์์ด๋ค. ๋ง ๊ทธ๋๋ก ์ด๋ Side์์ ๋ ๋๋ง์ ์ค๋นํ๋๋์ ๋ฐ๋ผ ๋๋๋ ๊ฐ๋ ์ด๋ค.
โ๏ธ SSR๊ณผ SSG์ ์ฐจ์ด์
์ด ๋ ๊ฐ์ง ๊ฐ๋ ์ ๊ณต๋ถํ ๋ ์์ฃผ ์ธ๊ธ๋๋ SSG๋ผ๋ ๊ฒ๋ ์๋๋ฐ, SSG๋ Static Site Generation์ ์ฝ์๋ก, Static Rendering ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ๋ฐฉ์์ด๋ค. ์๋ฒ์์ HTML์ ๋ณด๋ด์ค๋ค๋ ์ฐจ์์์๋ SSR๊ณผ ์ ์ฌํ๋, '์ธ์ ' ๋ง๋ค์ด์ฃผ๋์ง์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฒ์ด๋ค.
SSR์ ์์ฒญ ์ ์๋ฒ์์ ์ฆ์ HTML์ ๋ง๋ค์ด ์๋ตํ๊ธฐ์ ๋ฐ์ดํฐ๊ฐ ๋ฌ๋ผ์ง๊ฑฐ๋ ์์ฃผ ๋ฐ๋์ด์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๊ธฐ ์ด๋ ค์ด ํ์ด์ง์ ์ ํฉํ๊ณ , SSG๋ ํ์ด์ง๋ค์ ์๋ฒ์ ๋ชจ๋ ๋ง๋ค์ด ๋ ํ์ ์์ฒญ ์ ํด๋น ํ์ด์ง๋ฅผ ์๋ตํ๋ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋ ์ผ์ด ๊ฑฐ์ ์์ด ์บ์ฑํด ๋๋ฉด ์ข์ ํ์ด์ง์ ์ฌ์ฉํ๋ฉด ์ ํฉํ๋ค.
3. CSR๊ณผ SSR์ ์ฐจ์ด์ ์์๋ณด๊ธฐ
โ๏ธ CSR์ ๋์ ๊ณผ์
1. ์ ์ ๊ฐ ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๋ค.
2. ์ด์ ์๋ฒ๋ ๋น ๋ผ๋๋ง ์๋ HTML์ ์๋ต์ผ๋ก ๋ณด๋ด์ค๋ค.
3. ๋ธ๋ผ์ฐ์ ๊ฐ ์ฐ๊ฒฐ๋ JavaScript ๋งํฌ๋ฅผ ํตํด ์๋ฒ๋ก๋ถํฐ ๋ค์ JavaScript ํ์ผ์ ๋ค์ด๋ก๋ํ๋ค.
4. JavaScript๋ฅผ ํตํด ๋์ ์ผ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋ธ๋ผ์ฐ์ ์ ๋์์ค๋ค.
โ๏ธ CSR์ ์ฅ๋จ์
์ฌ๊ธฐ์ 4๋ฒ์ ์ฃผ๋ชฉํ๋ฉด ์ข์๋ฐ, CSR์ ๋ธ๋ผ์ฐ์ ๊ฐ JavaScript ํ์ผ์ ๋ค์ด๋ก๋ํ๊ณ , ๋์ ์ผ๋ก DOM์ ์์ฑํ๋ ์๊ฐ์ ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๊ฒ์ด ๋จ์ ์ด๋ค. ํ์ง๋ง ์ด๊ธฐ ๋ก๋ฉ ์ดํ์ ํ์ด์ง ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ ๋๋ ์๋ฒ์์ ํด๋น ๋ฐ์ดํฐ๋ง ์์ฒญํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์ดํ ๊ตฌ๋ ์๋๋ ๋น ๋ฅด๋ค๋ ํน์ง์ด ์๋ค.
๋๋ถ์ด, ์๋ฒ๋ ๋น ๋ผ๋๋ง ์๋ HTML์ ๋๊ฒจ์ฃผ๋ ์ญํ ๋ง ์ํํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ ์ธก์ ๋ถํ๊ฐ ์ ์๋ฐ, ๋ฟ๋ง ์๋๋ผ ํด๋ผ์ด์ธํธ ์ธก์์ ์ฐ์ฐ, ๋ผ์ฐํ ๋ฑ์ ๋ชจ๋ ์ง์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ฐ์์๋๊ฐ ๋น ๋ฅด๊ณ UX๋ ์ฐ์ํ๋ค๋ ์ฅ์ ์ด ์๋ค.
ํํธ, ๋ธ๋ผ์ฐ์ ๋ค์ด ๊ฐ์ง๋ ์น ํฌ๋กค๋ฌ๋ HTML์ ์ฝ์ด ๊ฒ์ ๊ฐ๋ฅํ ์์ธ์ ๋ง๋ค์ด ๋ด๋๋ฐ, ์น ํฌ๋กค๋ฌ ๋ด ์ ์ฅ์์๋ HTML์ด ํ ํ ๋น์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ ์์ธํ ๋งํ ์ฝํ ์ธ ๊ฐ ์กด์ฌํ์ง ์๊ธฐ์, SEO(๊ฒ์์์ง ์ต์ ํ)์ ๋ถ๋ฆฌํ๋ค๋ ๋จ์ ์ด ์๋ค. ์ด์ฌํ ์๋น์ค๋ฅผ ๋ง๋ค์๋๋ฐ ๊ฒ์ ์ฌ์ดํธ์ ๋ ธ์ถ์ด ์ ๋์ง ์๋ ์ฌํ ์ผ์ด ์์ ์๋ ์๋ค๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๊ตฌ๊ธ์ ํฌ๋กค๋ฌ ๋ด์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ค ์๊ธฐ์ CSR ์น ํฌ๋กค๋ง๋ ๊ฐ๋ฅํ๋ค๊ณ ํ๋, ์์ง ์๋ฒฝํ ๋จ๊ณ๊ฐ ์๋๊ธฐ์ ๊ตฌ๊ธ ์ธก์์๋ ์ฌ์ ํ SSR์ ๊ณ ๋ คํ๋ผ๋ ๋ง์ ๋ง๋ถ์ด๊ณ ์๋ค๊ณ ํ๋ค.
โ๏ธ SSR์ ๋์ ๊ณผ์
1. ์ ์ ๊ฐ ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ๋ฉด, ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ฝํ ์ธ ๋ฅผ ์์ฒญํ๋ค.
2. ์ด์ ์๋ฒ๋ ํ์ด์ง์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ์ป์ด์ ๋ชจ๋ ์ฝ์ ํ๊ณ , CSS๊น์ง ๋ชจ๋ ์ ์ฉํด ๋ ๋๋ง ์ค๋น๋ฅผ ๋ง์น HTML๊ณผ JavaScript์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์ ์๋ต์ผ๋ก ์ ๋ฌํ๋ค.
3. ๋ธ๋ผ์ฐ์ ์์๋ JavaScript์ฝ๋๋ฅผ ๋ค์ด๋ก๋ํ๊ณ HTML์ JavaScript๋ก์ง์ ์ฐ๊ฒฐํ๋ค.
โ๏ธ SSR์ ์ฅ๋จ์
์ฌ๊ธฐ์ 2๋ฒ์ ์ฃผ๋ชฉํ๋ฉด ์ข์๋ฐ, SSR์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ HTML์ ๋ด๊ธด ์ฑ๋ก ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ SEO์ ์ ๋ฆฌํ๋ค. ํฌ๋กค๋ฌ ๋ด์ด HTML์ ๋ฌด๋ฆฌ ์์ด ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋๋ถ์ด, ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ๋ค์ด๋ก๋ ๋ฐ๊ณ , ์คํํ๊ธฐ ์ ์ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ HTML์ด ๋ ๋๋ง ๋ ํ๋ฉด์ ๋ณผ ์ ์๋ค. ์ด๋ ๋ฏ JavaScript ๋ค์ด๋ก๋๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ CSR ๋ณด๋ค ์ด๊ธฐ ๊ตฌ๋ ์๋๊ฐ ๋น ๋ฅผ ์๋ฐ์ ์๋ค.
ํ์ง๋ง ํด๋น ์์ ์์๋ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ์ด๋ํ๋ ค๊ณ ํ ๋ ์๋ฌด ๋ฐ์์ด ์์ ์ ์๋ค. interaction์ด ๊ฐ๋ฅํ ํ์ด์ง์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ๋ด์ฉ๊ณผ ์คํ์ผ์ด ์ ํ์ง ๊ป๋ฐ๊ธฐ์ ๋ถ๊ณผํ๊ณ ์ค์ ๋ก๋ ํด๋ผ์ด์ธํธ ์ธก JavaScript๊ฐ ์คํ๋๊ณ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ฒจ๋ถ๋ JavaScript ๋ก์ง์ด ๋ชจ๋ ์ฐ๊ฒฐ๋ ๋๊น์ง ์ฌ์ฉ์์ ์ ๋ ฅ์ ์๋ตํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ ๋ฏ, SSR์๋ TTV(Time to View)์ TTI(Time to Interact) ๊ฐ์ ์๊ฐ ๊ฐ๊ฒฉ์ด ์กด์ฌํ๋ค๋ ๊ฒ์ด ๋จ์ ์ด๋ค. ๋ฐ๋ฉด์ CSR์ JavaScript๊ฐ ๋์ ์ผ๋ก DOM์ ์์ฑํ๊ธฐ ๋๋ฌธ์ HTML์ JavaScript ๋ก์ง์ด ๋ชจ๋ ์์ ํ ์ฐ๊ฒฐ๋ ์ํ๋ผ ์ฌ์ฉ์๊ฐ ๋ณด๋ ์์ ๊ณผ ์ด์ฉํ ์ ์๋ ์์ ์ด ๋์ผํ๋ค.
โ๏ธ CSR๊ณผ SSR์ ์ฅ๋จ์ ํ๋์ ์ ๋ฆฌํ๊ธฐ
CSR | SSR | |
์ฅ์ | - ํ๋ฉด ๊น๋นก์์ด ์์ - ์ด๊ธฐ ๋ก๋ฉ ์ดํ ๊ตฌ๋ ์๋๊ฐ ๋น ๋ฆ - TTV์ TTI ์ฌ์ด ๊ฐ๊ทน์ด ์์ - ์๋ฒ ๋ถํ ๋ถ์ฐ |
- ์ด๊ธฐ ๊ตฌ๋ ์๋๊ฐ ๋น ๋ฆ - SEO์ ์ ๋ฆฌ |
๋จ์ | - ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ๋๋ฆผ - SEO์ ๋ถ๋ฆฌ |
- ํ๋ฉด ๊น๋นก์์ด ์์ - TTV์ TTI ์ฌ์ด ๊ฐ๊ทน์ด ์์ - ์๋ฒ ๋ถํ๊ฐ ์์ |
4. ๋ด๊ฐ ๋ง๋๋ ์๋น์ค๋ ๋ฌด์์ ์จ์ผ ํ ๊น?
โ๏ธ CSR
- ์ ์ ์ ์ํธ์์ฉ์ด ๋ง๋ค
- ๋๋ถ๋ถ์ด ๊ณ ๊ฐ์ ๊ฐ์ธ์ ๋ณด๋ก ์ด๋ฃจ์ด์ง ํ์ด์ง๋ค์ด๋ผ ๊ฒ์์์ง์ ๋ ธ์ถ๋ ํ์๋ ์๋ค
โ๏ธ SSR
- ํ์ฌ ํํ์ด์ง์ฌ์ ํ๋ณด๋ ์์๋ ธ์ถ์ด ํ์ํ๋ค
- ๋๊ตฌ์๊ฒ๋ ํญ์ ๊ฐ์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค
- ์ ๋ฐ์ดํธ๊ฐ ๋น๋ฒํด ํด๋น ํ์ด์ง ๋ฐ์ดํฐ๊ฐ ์์ฃผ ๋ฐ๋๋ค
โ๏ธ SSG
- ํ์ฌ ํํ์ด์ง์ฌ์ ํ๋ณด๋ ์์๋ ธ์ถ์ด ํ์ํ๋ค
- ๋๊ตฌ์๊ฒ๋ ํญ์ ๊ฐ์ ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค
- ์ ๋ฐ์ดํธ๋ฅผ ๊ฑฐ์ ํ์ง ์๋๋ค
โ๏ธ Universal Rendering (์ด๊ธฐ ๋ ๋๋ง์ผ๋ก๋ SSR + ์ดํ CSR)
- ์ฌ์ฉ์์ ๋ฐ๋ผ ํ์ด์ง ๋ด์ฉ์ด ๋ฌ๋ผ์ง๋ค
- ๋น ๋ฅธ interaction๊ณผ ํ๋ฉด ๊น๋นก์์ด ์์ด์ผ ํ๋ค
- SEO๋ฅผ ํฌ๊ธฐํ ์ ์์ด ์์๋ ธ์ถ์ด ๋๋ฉด ์ข๊ฒ ๋ค
๊ฐ๋ฅํ๋ค๋ฉด CSR, SSR์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ฅ์ ์ ์ด๋ฆฐ Universal Rendering์ ์ฌ์ฉํ๋ฉด ์ข์ ๋ฏํ๋ค.
5. References
- Youtube ์ฐ์ํํ ํฌ: [10๋ถ ํ ์ฝํก] ๐จ ์ ์ธํํ์ CSR&SSR
๋๊ธ