June 12, 2021
๋ธ๋ก๊ทธ๋ฅผ ๋ง๋ค๋ฉด์ ์ฌ์ฉํ ์น ํธ์คํ ์๋น์ค Netlify์ ๊ดํด ์์๋ณด๋ ์ค JAMstack์ด๋ ํค์๋๊ฐ ๋์ ๋ค์ด์๋ค.
JAMstack๊ณผ ์ด์ ๊ด๋ จ๋ ๊ฐ๋ ๋ค์ ์ ๋ฆฌํด ๋ณด์๋ค.
๋์ ์น์ ์ฌ์ฉ์(ํด๋ผ์ด์ธํธ) ์์ฒญ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ค๋ฅธ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ์น ์ฌ์ดํธ๋ฅผ ๋งํ๋ค. ์ฌ์ฉ์๊ฐ URL์ ํตํด ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌํ๋ฉด, ์น ์๋ฒ๋ฅผ ๊ฑฐ์ณ ์น ์ฑ ์๋ฒ(WAS)๊น์ง ๊ฐ๋ฟ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์ฆ์์์ HTML ํ์ผ์ ์์ฑํด ๋ฐํํ๋ ๋ฐฉ์์ด๋ค. ๋์ ํ์ด์ง๋ ์์ ๋คํธ์ํฌ ๋๊ธ ์ฐฝ์ด๋ ์ผํ ๊ฒ์ ๊ฒฐ๊ณผ, ์ถ์ฒ ์ํ์ฒ๋ผ ์์๊ฐ๊ฐ์ผ๋ก ๋ด์ฉ์ด ๋ณํ ์ ์๋ ํ์ด์ง์ ์ฃผ๋ก ์ฐ์ธ๋ค.
์ ์ ์น์ ๋์ ์น์ ๋๋น๋๋ ๊ฐ๋ ์ผ๋ก ์ฌ์ฉ์์ ์์ฒญ์ ํญ์ ๊ฐ์ ๋ด์ฉ์ ๋ณด์ฌ์ฃผ๋ ์น ์ฌ์ดํธ๋ฅผ ๋งํ๋ค. HTTP ์ฃผ์๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ ์น ์๋ฒ์ ํ์ผ ์์คํ ์ด๋๊ฐ์์ HTML ํ์ผ์ ์ฐพ์ ๋ค์ด๋ฐ๊ณ ํด์ํด์ ์น ํ์ด์ง๋ฅผ ๋ง๋๋ ๊ตฌ์กฐ๋ค. ์ฌ์ฉ์(๋ธ๋ผ์ฐ์ )๊ฐ HTML ํ์ผ์ ์ฐพ๋ ์์ ์ ๊ฐ๋ฐ์๊ฐ ์์ฑํด์ ์๋ฒ์ ์ ๋ก๋ํ HTML ํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ค๊ณ ์ ์ ๊ฐ ๊น๋ฆฐ ๊ฒ์ด๋ค. ์ ์ ํ์ด์ง๋ ํ์ฌ ์๊ฐ๊ธ์ด๋, ๋ธ๋ก๊ทธ์ฒ๋ผ ๋ด์ฉ์ด ์ข์ฒ๋ผ ๋ณํ์ง ์๋ ์ฌ์ดํธ์ ์ฃผ๋ก ์ฐ์ธ๋ค.
์ ์ ์ฌ์ดํธ๋ ์คํ์ด ์น ์๋ฒ ์์ฒด์์ ์ผ์ด๋๋ ๊ฒ ์๋๊ธฐ ๋๋ฌธ์ DB๊น์ง ๊ฐ์ถ ์ด๊ณ ์ฑ๋ฅ ์น ํธ์คํธ๊ฐ ํ์ ์๋ค. ๋ง์ ์ ์ ์ฌ์ดํธ๋ CDN์ ๋ฐฐํฌ๋๋ค.
์ ์ ํ์ด์ง๋ ์น ์๋ฒ๋ง์ ํ์๋ก ํ์ง๋ง, ๋์ ํ์ด์ง๋ ์น ์๋ฒ์ WAS๊น์ง ํ์ํ๋ค.
์น ์๋ฒ๋ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์์ ์ ์ ํ์ด์ง(html, jpeg, css, js๋ฑ)๋ฅผ ๋ฐํํ๋ ์๋ฒ๋ค. WAS๋ HTML ๋ง์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ DB ์กฐํ๋ ๋ค์ํ ๋ก์ง์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์๋ฒ๋ค.
์ผ์คํ ์ด์ ์ LAMP, MEAN ์คํ์ด ์์๋ค. LAMP ์คํ์ Linux ์ด์์ฒด์ , Apache ์น ์๋ฒ, MySQL, PHP/Python์ ์ฝ์๋ฅผ ๋ด ์กฐํฉ์ด๋ค. ์ค๋ซ๋์ ๊ณต์ธ๋ ์ ํต์ ์ธ ์น ๊ตฌ์กฐ๋ผ๊ณ ํ ์ ์๋ค. ๋ธ๋ผ์ฐ์ ์์ LAMP ๊ธฐ๋ฐ ์น์ฌ์ดํธ๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด ์น ์๋ฒ๋ ์๋ฒ ์ธก ์ฝ๋๋ฅผ ์คํํ๊ณ , ์ด ์ฝ๋๊ฐ ํ์์ ๋ฐ๋ผ MySQL์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์น ํ์ด์ง๋ฅผ ์ฆ์์์ ์์ฑํ๋ ๊ตฌ์กฐ๋ค. MEAN ์คํ์ MongoDB, ExpressJS, AngularJS, NodeJS๋ผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ ์น ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ค. Frontend/Backend ์ธ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํต์ผํ์ฌ ํธ์์ฑ์ ์ถ๊ตฌํ ์ผ์ด์ค๋ค.
LAMP ์คํ๊ณผ MEAN ์คํ์ผ๋ก ์ด๋ฃจ์ด์ง legacy web์ ๋์ ์ด๊ณ ์ธํฐ๋ํฐ๋ธํ ์น์ฌ์ดํธ๋ฅผ ์์ฑํ ์ ์์ง๋ง 24์๊ฐ ์์ฃผํ๋ ์น ์๋ฒ๋ฅผ ํ์๋ก ํ๋ฉฐ, ๋ณต์กํ ๊ตฌ์กฐ ๋งํผ์ด๋ ๋ณด์์ ์ ๊ฒฝ์ ์จ์ผํ๋ค๋ ๋จ์ ์ด ์๋ค. ๋์ฑ์ด ๋์ ์น ํ์ด์ง๋ฅผ ๋น๋ํ๊ณ ๋ก๋ํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค. ์ด๊ฐ์ ์ง์ฐ์๊ฐ์ ๋ฉ๋ํ ์ ์๋ ์ฌ์ฉ์๋ค์ด ๋ง์์ง์ ๋ฐ๋ผ ์ ์ ํ์ด์ง๋ก ๊ตฌ์ฑ๋๋ ์น ํ์ด์ง๊ฐ ๋ง์์ง๋ ์ถ์ธ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ถ์ธ์ ๋๋ถ์ด JAMstack๋ ์ฑํํ๊ณ ์๋ค. JAMstack์ ์ ์ ์น์ ํ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ผ์คํ์ด๋ Javascript, APIs, Markup์ ์ฝ์๋ก, ์ผ์ข
์ ์น ์ฌ์ดํธ ๊ตฌํ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
ํด๋ผ์ด์ธํธ ๊ด๋ จ ์ฒ๋ฆฌ๋ Javascript๊ฐ ๋ด๋นํ๊ณ , DB๋ ์๋ฒ ๊ด๋ จ ๊ธฐ๋ฅ์ API๋ก ๋์ฒดํ๊ณ , SSG(Static Site Generator)๋ก Markup์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๋ ๊ฐ๋
์ ๋งํ๋ค.
์ผ์คํ์ 2018๋
ํด๋ผ์ฐ๋ ๋ฐ ์น ํธ์คํ
์
์ฒด์ธ Netlify์์ ์ ์ ์น
์ถ์ธ์ ๋ง์ถฐ ์ ์ํ ์น ๊ฐ๋ฐ ํจ๋ฌ๋ค์์ด๋ค. (โ์ ์ ์นโ์ด ๊ฐ์ง ๋ถ์ ์ ์ธ ์ด๊ฐ์ ํผํ๊ธฐ ์ํด ์ผ์คํ์ด๋ผ๋ ์ฉ์ด๋ฅผ ๊ณ ์ํ๋ค๊ณ ํ๋ค.)
์ผ์คํ์ ๋น๋ ์๊ฐ ๋จ์ถ์ ํตํ ์น ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ์๋ ํฅ์๊ณผ ์นํ์ด์ง ๋ค์ด๋ก๋ ์๊ฐ ๋จ์ถ(์ฌ์ฉ์ ๊ด์ ์์)์ ๋ชฉํ๋ก ํ๋ค.
์ผ์คํ ๊ธฐ๋ฐ์ ์น ํ์ด์ง๋ ํ์ค ๋งํฌ์
์ธ์ด๋ก ๊ตฌ์ฑ๋๋ฏ๋ก ์ฑ ์๋ฒ๋ ์๋ฒ ์ธก ๊ธฐ์ (Node.js ๋ฑ)์ ๋ํ ์ข
์์ฑ ์์ด ์ด๋์๋ ๋น๋ํ๊ณ ํ
์คํธํ ์ ์๋ค.
2010๋ ๋ ์ค๋ฐ ์ ์ ์น ์ธ๊ธฐ์ ํ์ ์ด ์ ํฌ(Jeckyll), ํด๊ณ (Hugo), ๊ฐ์ธ ๋น(Gatsby), Next.js์ ๊ฐ์ ์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ(SSG)๊ฐ ์๊ฒจ๋๊ธฐ ์์ํ๋ค. SSG์ ๋ถํฅ์ ์ผ์คํ์ ๋ถํฅ๊ณผ ๊ฐ๋ค. ์ผ์คํ ์ํคํ ์ฒ๋ ๋์ ์น์ด ์๋ ์ ์ ์น์ ์ ํฉํ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค์ํ ๊ธฐ๋ฅ, ์๊ตฌ์ฌํญ์ ํ์๋ก ํ๋ ๋์ ํ์ด์ง ์ค์ฌ์ ์ฌ์ดํธ์ ๋ฐฑ์๋ ์ธ์ด์ ์์กดํ๋ ์ฑ์ ์ผ์คํ ๋์ ์ด ์ด๋ ต๋ค.
Gatsby SSG์ netlify ์น ํธ์คํ ์๋น์ค๋ฅผ ์ด์ฉํ๋ฉด ์์ฃผ ์ฝ๊ฒ ์ผ์คํ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํด๋ณผ ์ ์๋ค.
netlify ์๋น์ค๋ ์ผ์คํ ์ฒ ํ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๊ณ ์ ํ๋ ๊ณ ๊ฐ์๊ฒ ์ต์ ํ๋์ด ์๋ค.
์๋ฒ ์์ด(์ ํํ๋ ์๋ฒ๋ API๋ ํต์ ํ๊ณ ) ํ๋ก ํธ์๋ ์คํ์ผ๋ก๋ง ๊ตฌ์ฑ๋ ์ ์ ์น์ ๋ฐฐํฌํ๋ ์ฉ๋๋ก ์ต์ ํ๋ ์๋น์ค๋ค.
Github Repo์ ์ฐ๊ณํ์ฌ ์๋ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
์ ์ ์น ์ธ๊ธฐ์ ํ์ ์ด ์ ์ ์ฌ์ดํธ ์์ฑ๊ธฐ SSG๊ฐ ์๊ฒจ๋๊ธฐ ์์ํ๊ณ , SSG์ ์ธ๊ธฐ๊ฐ JAMstack ๊ฐ๋ฐ๋ก ์ ๋ฐ์ ์ผ๋ก ์ด์ด์ก๋ค๋ ์ฌ์ค์ ์ผ๋ํ์.
์ ์ /๋์ ์น์ด SPA/MPA, CSR/SSR๋ผ๋ ๊ฐ๋ ๊ณผ ์ด๋ค ์ฐ๊ด์ ๋งบ๊ณ ์๋ ๊ฑด ์๋๊ฐ ํ๋ ์๋ฌธ์ ํด์ํ์ง ๋ชปํ๋ค.
Netlify์ JAMstack์ ์์ธํ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ์ง ๋ชปํ๊ฒ๋ ์์ฝ๋ค. CDN์ ๋น๋กฏํ ๊ฐ๋ ๋ค์ด ์์ง ์ด๋ ต๋ค.
์คํ์์ค ๋ธ๋ก๊ทธ ๊ธฐ์ ์ ์ ๋ฐ๋! ์ ์ ํ์ด์ง๋?
์ผ์คํ, ์น ๊ฐ๋ฐ์ ๋ค์ง๋ ์ ์ ์น์ฌ์ดํธ ํ๋ช
์ ์ ํ์ด์ง์ ๋์ ํ์ด์ง