๐ญ ๋ค์ด๊ฐ๋ฉฐ
“React๋ฅผ ์ ์ธ๊น์? ๊ทธ๋ฅ ์๋ฒ์์ HTML ๋ง๋ค์ด์ ๋์ ธ์ฃผ๋ฉด ๋๋ ๊ฑฐ ์๋์์?” ๋ฉด์ ์์ ๋ฐ์๋ ์ง๋ฌธ์ด๋ค.
๋น์์ CS ์ง์์ด ๋ถ์กฑํ๊ณ , ํ๋ก ํธ์๋์ ์น ์ ๋ฐ์ ๋ํ ์ดํด๋ ๊น์ง ์์ ์ ๋๋ก ๋ตํ์ง ๋ชปํ๋ค. ํ๋ก์ ํธ์์ ์ ์ ๋ฒ์ด๋ ์ฌ์ ๊ฐ ์๊ธด ์์ ์, ๊ทธ๋์ ๋คํธ์ํฌ ๊ฐ์์ ๊ณต๋ถ๋ฅผ ํตํด ๋ฐฐ์ด ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ ์ ํท๊ฐ๋ ธ๋ ๊ฐ๋ ๋ค์ ๋ค์ ์ ๋ฆฌํด ๋ณด๋ ค ํ๋ค.
โ ์น ์๋น์ค ๊ตฌ์กฐ

์ ๊ทธ๋ฆผ์ ๋๋ํ ๊ฐ๋ฐ์๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ์ฐธ๊ณ ํด ์ ๋ฆฌํ ๊ฒ์ด๋ค.
โถ Web Server
- ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์์ฒญ์ ๋ฐ์ ์ ์ ๋ฆฌ์์ค(HTML, CSS, JS, ์ด๋ฏธ์ง ๋ฑ)๋ฅผ ์๋ตํ๋ค.
- ๋จ์ํ ํ์ผ์ ๋ด๋ ค์ฃผ๋ ์ญํ ๋ง ํ๋ฉฐ, DB ์ฐ๊ฒฐ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ์ง ์๋๋ค.
- ๋ํ์ ์ธ ์์๋ก Apache, Nginx, AWS S3 ๋ฑ์ด ์๋ค.
โถ WAS (Web Application Server)
- DB์ ์ฐ๋ํ๊ณ , ์์ฒญ์ ๋ฐ๋ผ ๋์ ์ผ๋ก HTML์ด๋ JSON์ ์์ฑํ๋ค.
- Web Server์ ๋ฌ๋ฆฌ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ค.
- ๋ํ์ ์ธ ์์๋ก Tomcat, Jetty ๋ฑ์ด ์๋ค.
โถ ์ Web Server์ WAS๋ฅผ ๋ถ๋ฆฌํ ๊น?
- WAS๋ DB ์กฐํ ๋ฑ ๋์ ํ์ด์ง ์์ฑ์ ์ํ ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋จ์ํ ์ ์ ์ฝํ ์ธ ๊น์ง WAS๊ฐ ์ ๊ณตํ๋ฉด ๋ฆฌ์์ค๋ ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์๋ต ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์ ์ ํ์ผ์ Web Server๊ฐ, ๋น์ฆ๋์ค ๋ก์ง์ WAS๊ฐ ์ฒ๋ฆฌํ๋๋ก ๋ถ๋ฆฌํ๋ค.
- ์ ์ ๋ฆฌ์์ค ์์ฒญ์ด ๋ง๋ค๋ฉด Web Server๋ฅผ, ๋น์ฆ๋์ค ๋ก์ง ๋ถํ๊ฐ ํฌ๋ค๋ฉด WAS๋ฅผ ๊ฐ๊ฐ ํ์ฅํ ์ ์์ด ํธ๋ํฝ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๋ ๋ฆฝ์ ์ผ๋ก ์ค์ผ์ผ๋ง์ด ๊ฐ๋ฅํ๋ค.
- Web Server๋ ๋จ์ ์ ์ ํ์ผ๋ง ์ ๊ณตํ๋ฏ๋ก ์์ ์ ์ด๋ฉฐ, WAS๊ฐ ์ฅ์ ๋ก ์ค๋จ๋๋๋ผ๋ ์ค๋ฅ ํ์ด์ง ์ ๊ณต ๋ฑ ์ต์ํ์ ๋์์ด ๊ฐ๋ฅํ๋ค.
โ SSR, CSR
โถ SSR (Server-Side Rendering)

SSR(Server-Side Rendering)์ ์๋ฒ์์ HTML์ ๋ง๋ค์ด ํด๋ผ์ด์ธํธ๋ก ๋ด๋ ค์ฃผ๋ ๋ฐฉ์์ด๋ค. ๋ชจ๋ ์์ฒญ๋ง๋ค ์๋ก์ด HTML์ ๋ง๋ค์ด์ผ ํ๋ค.
๐ฝ ์์ฒญ ํ๋ฆ
- ํด๋ผ์ด์ธํธ๊ฐ ํน์ URL์ ์์ฒญํ๋ค.
- ์๋ฒ(WAS)๊ฐ ์์ฒญ์ ๋ฐ๋๋ค.
- DB ์กฐํ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ค.
- ์๋ฒ์์ HTML ํ ํ๋ฆฟ์ ๋ ๋๋งํ๋ค. (์์ฑ๋ HTML์ ์์ฑ)
- ์์ฑ๋ HTML์ ํด๋ผ์ด์ธํธ์ ์๋ตํ๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ์ฆ์ ๋ ๋๋งํ๋ค.
โถ CSR (Client-Side Rendering)

CSR(Client-Side Rendering)์ ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด ํ๋ฉด์ ์ง์ ๋ ๋๋งํ๋ ๋ฐฉ์์ด๋ค.
๐ฝ ์์ฒญ ํ๋ฆ (React)
- ์ฒซ ์์ฒญ ์ ์๋ฒ๋ก๋ถํฐ ๋น HTML(div id="root")์ ์ ๋ฌ๋ฐ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ JS ๋ฒ๋ค ํ์ผ์ ๋ค์ด๋ก๋ํ๋ค.
- JS ๋ฒ๋ค์ ์คํํ์ฌ ํ๋ฉด์ ๋ ๋๋งํ๋ค.
- ์ดํ ํ์ด์ง ์ ํ ์์๋ React Router ๋ฑ์ ํตํด ํ์ํ ๋ฐ์ดํฐ๋ง fetchํ๊ณ , ์ ์ฒด HTML์ ๋ค์ ์์ฒญํ์ง ์์ผ๋ฉฐ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ๊ฐฑ์ ํ๋ค.
๐ฝ ์ฐธ๊ณ - ๋ฐฑ์๋ ๊ด์ ์์ ์๊ฒ ์ดํดํ ๋ฒ๋ค๊ณผ DOM
์ฌ๋ฌ ๊ฐ์ JS ์ปดํฌ๋ํธ ํ์ผ์ ํ๋๋ก ํฉ์น๋ ๊ณผ์ ์ ๋ฒ๋ค๋ง(bundling)์ด๋ผ ํ๋ฉฐ, ๊ทธ ๊ฒฐ๊ณผ๋ก ์์ฑ๋ ํ์ผ์ ๋ฒ๋ค(bundle)์ด๋ผ๊ณ ํ๋ค. ๋ธ๋ผ์ฐ์ ์์ง์ ์ด ๋ฒ๋ค์ ์คํ์ํค๊ณ (๋ง์น JVM์ด ์ปดํ์ผ๋ .class ํ์ผ์ ์ฝ์ด ์คํํ๋ ๊ฒ์ฒ๋ผ ์ดํดํจ), DOM(Document Object Model)์ ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๊ฐ์ฒด ํธ๋ฆฌ ํํ๋ก ํํํ ๊ตฌ์กฐ๋ก, JS๊ฐ ์ด DOM์ ์กฐ์ํจ์ผ๋ก์จ HTML๊ณผ ๋์ ์ผ๋ก ์ํธ์์ฉํ ์ ์๊ฒ ๋๋ค.
โ ์๋ฌธ์
โถ CSR์ด SSR๋ณด๋ค ์ด๊ธฐ ์๋๊ฐ ๋๋ฆฐ ์ด์
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ์ด๊ธฐ ํ๋ฉด์ ์ง์ ํ๋ฉด ์ ์ ํธ์คํ ๋ ์๋น์ค์์๋ ์๋ฅผ ๋ค์ด, “/” ๊ฒฝ๋ก๋ก ์ ๊ทผํ ๋ index.html๋ก ๋ฆฌ๋ค์ด๋ ํธ๋๋ค. ์ด index.html ํ์ผ์๋ CSS์ JS ํ์ผ์ ๊ฒฝ๋ก๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋ธ๋ผ์ฐ์ ๋ HTML์ ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ฑํ๋ฉฐ DOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค. ์ด ๊ณผ์ ์์ ๋ฒ๋ค JS๋ฅผ ๋ง๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฅผ ์คํํด์ผ ํ๋ค๊ณ ํ๋จํ๊ณ , S3์ ๊ฐ์ ์ ์ ์๋ฒ์์ ํด๋น JS ํ์ผ์ ์์ฒญํด ๋ค์ด๋ก๋ํ๋ค. ์ด ๋๋ฌธ์ ์ด๊ธฐ ๋ก๋ฉ ์์ ์๋ JS ํ์ผ ๋ค์ด๋ก๋์ ์คํ ๊ณผ์ ์ด ์ถ๊ฐ๋์ด ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
๐ฝ ์ฐธ๊ณ
๋ค๋ง, ์ด๋ ๊ฒ ๋ก๋๋ JS ํ์ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์์ ๋ก์ปฌ ๋์คํฌ์ ์บ์ ํํ๋ก ์ ์ฅ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์ฌ์ฉ์๊ฐ ์ฌ์ ์ํ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ ๋ค์ ์์ฒญํ์ง ์๊ณ ์บ์๋ JS ํ์ผ์ ์ฌ์ฌ์ฉํ์ฌ ํจ์ฌ ๋น ๋ฅด๊ฒ ํ์ด์ง๋ฅผ ๋ก๋ํ ์ ์๋ค.
โถ CSR๋ ๊ฒฐ๊ตญ API๋ฅผ ์์ฒญํด์ผ ํ์ง ์๋๊ฐ?
CSR์ ํต์ฌ ์ด์ ์ HTML์ ๋ฏธ๋ฆฌ ์์ฑํ์ง ์์๋ ๋๋ค๋ ์ ์ด๋ค. ํ์ํ ์์ ์ API๋ฅผ ํตํด ํ์ํ ๋ฐ์ดํฐ๋ง fetchํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์กฐ๋ฆฝ(rendering)ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์, ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ณ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ต์ํํ ์ ์์ผ๋ฉฐ, ๋์์ ๋น ๋ฅธ ํ๋ฉด ์ ํ๊ณผ ์ ์ฐํ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ ๊ณตํ ์ ์๋ค.
โถ React๋ฅผ ์ฌ์ฉํ๋ ์ด์
“๊ทธ๋ฅ ์๋ฒ์์ HTML ๋ง๋ค์ด์ ๋์ ธ์ฃผ๋ฉด ๋๋ ๊ฑฐ ์๋์์?”
- ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ ๊ฒฝ์ฐ
- ๋งค ์์ฒญ๋ง๋ค DB ์กฐํ๋ฅผ ์ํํ๊ณ HTML์ ์๋ก ์์ฑํด ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๋ค. ์ด ๊ณผ์ ์์ ์๋ฒ ์์์ด ๋ง์ด ์๋ชจ๋๋ฉฐ, ํ์ด์ง ์ ํ ์๋ง๋ค HTML์ ๋ค์ ๋ฐ์์ผ ํ๋ฏ๋ก ํ๋ฉด ์ ํ ์๋๊ฐ ๋๋ ค์ง ์ ์๋ค.
- ๋งค ์์ฒญ๋ง๋ค ์ ์ฒด HTML์ ์๋ก ๋ด๋ ค์ผ ํ๋ฏ๋ก ํ์ด๋ก๋๊ฐ ์ปค์ง ์ ์์ด ๋คํธ์ํฌ ๋น์ฉ์ด ๋์์ง๊ณ , ์์ฒญ์ด ๋ฐ๋ณต๋ ์๋ก ํธ๋ํฝ ๋ถํ๋ ๋์ด๋๋ค.
- ์ฌ์ฉ์๋ณ, ์ํ๋ณ๋ก HTML์ด ๋ฌ๋ผ ์บ์ฑ์ด ์ด๋ ต๋ค. ์ฆ, CDN์ด๋ ๋ธ๋ผ์ฐ์ ์บ์๊ฐ ํจ์จ์ ์ผ๋ก ๋์ํ์ง ์์ ๋๊ท๋ชจ ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ์ ํ๊ณ๊ฐ ์๋ค.
- ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ ๋๋ง(CSR)์ ๊ฒฝ์ฐ
- React๋ HTML์ ๋ฏธ๋ฆฌ ์์ฑํ์ง ์๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ง API๋ก ๋ฐ์ ๋ธ๋ผ์ฐ์ ์์ ์กฐ๋ฆฝํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๋ถํ๋ฅผ ์ค์ด๊ณ ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ต์ํํ ์ ์๋ค.
- ๋ํ, ์ฌ์ฉ์ ๊ฒฝํ(UX)์ด ์ค์ํด์ง ํ๋ ์น ํ๊ฒฝ์์ ๋น ๋ฅธ ํ๋ฉด ์ ํ๊ณผ ๋์ ์ธํฐ๋์ ์ ๊ตฌํํ๊ธฐ์ ์ ํฉํ๋ค.
โถ ์์ฆ ๋ค์ SSR์ด ์ฃผ๋ชฉ๋ฐ๋ ์ด์
์ต๊ทผ ๋ค์ด SSR(Server-Side Rendering)์ด ๋ค์ ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ค. ๊ทธ์ค ๊ฐ์ฅ ํฐ ์ด์ ๋ SEO(๊ฒ์ ์์ง ์ต์ ํ) ๋๋ฌธ์ด๋ค.
- CSR์ ๊ฒฝ์ฐ, ์ฒซ ์๋ต ์ ๋ธ๋ผ์ฐ์ ๋ ๋น์ด ์๋ HTML์ ๋ฐ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ํฌ๋กค๋ฌ๊ฐ ์ค์ ์ฝํ ์ธ ๋ฅผ ์ ๋๋ก ์ฝ์ง ๋ชปํ๋ค. ๋ฐ๋ผ์ ํ์ด์ง๊ฐ ๊ฒ์ ์์ง์ ๋ ธ์ถ๋๋ ๋ฐ ํ๊ณ๊ฐ ์๋ค.
- ๋ฐ๋ฉด SSR์ ์๋ฒ์์ ์ด๋ฏธ ์์ฑ๋ HTML์ ์์ฑํด ์ ๋ฌํ๋ฏ๋ก, ๊ฒ์ ํฌ๋กค๋ฌ๊ฐ ์ฝํ ์ธ ๋ฅผ ์ง์ ์ฝ์ ์ ์์ด ๊ฒ์ ์์ง์ ๋ ธ์ถ๋๋ ๋ฐ ์ ๋ฆฌํ๋ค.
โถ ๊ทธ๋์ ๋ฑ์ฅํ Hybrid ๋ชจ๋ธ (Next.js ๋ฑ)
์ต๊ทผ ํ๋ ์์ํฌ๋ค์ SSR๊ณผ CSR์ ์ฅ์ ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ๋ ๋๋ง ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ๋ค.
- ์ด๊ธฐ ์์ฒญ ์์๋ SSR์ ํตํด HTML์ ์์ฑํ์ฌ SEO์ ์ด๊ธฐ ๋ก๋ฉ ์๋๋ฅผ ํ๋ณดํ๊ณ ,
- ์ดํ ํ์ด์ง ์ด๋ ์์๋ CSR ๋ฐฉ์์ ํ์ฉํด ๋น ๋ฅธ ์ ํ๊ณผ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ ์งํ๋ค.
๐ฝ ์ฐธ๊ณ
๊ทธ๋ ๋ค๋ฉด SSR์ ๋จ์ ์ค ํ๋์ธ ์บ์ฑ ๋นํจ์จ์ฑ์ ์ด๋ป๊ฒ ๋ณด์๋์๊น? Next.js๋ SSR๊ณผ CSR๋ฟ ์๋๋ผ SSG(Static Site Generation)๊ณผ ISR(Incremental Static Regeneration)๋ ํจ๊ป ์ง์ํ๋ค. ํนํ SSG๋ ๋น๋ ์์ ์ HTML์ ๋ฏธ๋ฆฌ ์์ฑํด ๋๋ ๋ฐฉ์์ผ๋ก, ์ ์ ํ์ด์ง๋ฅผ CDN์ ์บ์ฑํ ์ ์์ด SSR์ ์บ์ฑ ํ๊ณ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด์ํ๋ค.
โ ๊ฒฐ๋ก
๋ ๋๋ง ๋ฐฉ์์ ์ ๋ต์ ์๋ค. ์๋น์ค์ ๋ชฉ์ ๊ณผ ํน์ฑ์ ๋ฐ๋ผ ์ ์ ํ ๋ฐฉ์์ ์ ํํด์ผ ํ๋ค.
- SSR: SEO๊ฐ ์ค์ํ๊ณ ์ด๊ธฐ ๋ก๋ฉ ์๋๊ฐ ํต์ฌ์ธ ํ์ด์ง (์: ํ๋ณด์ฉ ํ์ด์ง, ๋๋ฉ ํ์ด์ง)
- CSR: ๋ฐ์ดํฐ ์ค์ฌ์ด๋ฉฐ ์ฌ์ฉ์ ์ธํฐ๋์ ์ด ๋ง์ ํ์ด์ง (์: ๋์๋ณด๋, ์ปค๋ฎค๋ํฐ, ์ค์๊ฐ ์๋น์ค)
- ํ์ด๋ธ๋ฆฌ๋: SEO์ ์ธํฐ๋์ ๋ชจ๋ ์ค์ํ ์๋น์ค (์: ๋ด์ค ํ๋ซํผ, ์ด์ปค๋จธ์ค, ๋๊ท๋ชจ ์น์ฑ)
๐ ์ฐธ๊ณ ์๋ฃ
'CS > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Network] Namespace๋ ๋ฌด์์ผ๊น (1) | 2026.01.19 |
|---|---|
| [Network] HTTP ์บ์ฑ(Caching) (0) | 2025.10.13 |
| [Network] XSS, CSRF (1) | 2024.08.27 |
| [Network] ๋ฉํฐํ๋ ์ฑ, ๋๋ฉํฐํ๋ ์ฑ (0) | 2024.08.26 |
| [Network] ์๋ธ๋ท ๋ง์คํฌ, ๊ฒ์ดํธ์จ์ด (1) | 2024.08.26 |