SvelteKit ์ผ๋ก ๋ง๋ Web ์ ๋ฌด๋ฃ๋ก ๋ฐฐํฌํ ์ ์๋์? ๋น ๋ฅด๊ณ ํธํ Netlify ๋ฅผ ์ ์ฉํด๋ด์! #5
ํด๋น ๊ฒ์๊ธ์
(1) Netlify ๊ฐ์
(2) Netlify ์ฐ๋ ๋ฐฉ๋ฒ (w/ SvelteKit, Github)
์ ๋ํ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค.
์ ๊ฐ ๋ง๋ Svelte Web ์ ์ ์ด๋ ๊ฒ ๋ชป์๊ฒผ๋์? DaisyUI ์ธ๊ณตํธํก๊ธฐ๋ฅผ ๋ถ์ฌ๋ด์! #4
ํด๋น ๊ฒ์๊ธ์ (1) DaisyUI ๊ฐ์ (2) DaisyUI ์ ์ฉ ๋ฐฉ๋ฒ ์ ๋ํ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค. ์ด์ ๊ฒ์๊ธ - SvelteKit ์ ์์ฆ ์ ์ผ ์ธ๊ธฐ๋ง๋ค๋ TailwindCSS ๋ฅผ ์ ์ฉํด๋ณผ๊น์? #3 SvelteKit ์ ์์ฆ ์ ์ผ ์ธ๊ธฐ๋ง๋ค๋ Tai
gngb-tech.tistory.com
ch1 - Netlify ๋?
Netlify ๊ฐ ๋ญ์์? ์ฌ์ฉํด๋ณธ ํ๊ธฐ ์๋ ค์ฃผ์ธ์!
์ ์ Website ํธ์คํ ์๋ฃจ์
Netlify ๋ ์ง์ ๋ง๋ Website ๋ฅผ ๋ฌด๋ฃ๋ก ํธ์คํ
ํ ์ ์๋ ์๋ฃจ์
์ด์ ํ๋ซํผ์
๋๋ค. ๋ค๋ง, ์ฌ์ฉ์์ ์์ฒญ์ ์ํด ๋ฐ์ดํฐ๊ฐ ๊ฐ๊ณต๋๊ณ ํํ๊ฐ ์ค์๊ฐ์ผ๋ก ๋ณํํ๋ ๋์ (Dynamic) Website ์ ๋ํ ํธ์คํ
์ด ์๋๋ผ, ๋ฏธ๋ฆฌ ์ ์ฅ๋ Html/CSS/Javascript ๋ฑ์ ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ์ ์ (Static) Website ์ ๋ํ ํธ์คํ
์ ๋์์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ธ ๊ฒฐ๊ณผ, ํ์ฌ Netlify ๋ ๋์ Website ํธ์คํ
๋ ๊ฐ๋ฅํ๋ค๊ณ ํฉ๋๋ค.
์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด, Local ํ๊ฒฝ์์์ Web ๊ฐ๋ฐ ์ฐ์ถ๋ฌผ์ด ์ ์ ํ Netlify ์ธํ ์ ๋ง์น๋ฉด Public ํ๊ฒฝ์ ํธ์คํ ๋๊ณ ์ง์ ๋ URL ์ ๊ธฐ๋ฐ์ผ๋ก ๋๊ตฌ๋ ์ ๊ทผ๊ฐ๋ฅํ Web ์ด ๋ฐฐํฌ๋ฉ๋๋ค. ์ด์ ์ ์ฌํ ํธ์คํ ์๋ฃจ์ ์๋น์ค๋ก๋ Vercel, Heroku ๋ฑ์ด ์กด์ฌํฉ๋๋ค.
์ฌ์ฉ ํ๊ธฐ
SvelteKit ์ ํตํ Web ๊ฐ๋ฐ์ Github ๊ธฐ๋ฐ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์์๋๋ฐ, ์ด๋ฌํ ํ๊ฒฝ์ Netlify ๋ฅผ ์ ์ฉํ๋ ๊ณผ์ ์์ ๊ต์ฅํ ๊ธ์ ์ ์ธ ์ฌ์ฉ ๊ฒฝํ์ ๊ฐ์ง๊ฒ ๋์์ต๋๋ค. SvelteKit ๊ณผ Netlify ์ ์ฐ๋ ๋ฐ Github ์ Netlify ์ฐ๋ ๊ณผ์ ์ ์ฝ๊ณ ์ง๊ด์ ์ด์๊ณ (๋๋ถ๋ถ์ ์ฐ๋ ๊ณผ์ ์ NoCode ํํ์ GUI ๋ก ์งํ๋ฉ๋๋ค.) CICD ๋ ๋ณ๋ค๋ฅธ ํ๊ฒฝ ์ธํ ์์ด ์ ์ฉ๋์์ต๋๋ค. ์ฆ, Github ์ Code ๋ฅผ Push ํ๊ธฐ๋ง ํด๋ ์๋ก์ด ๋ฒ์ ผ์ Code ๊ฐ ๋ฐ์๋ ์ ๊ท Web ์ด ์๋ ๋ฐฐํฌ๋์์ต๋๋ค. Netlify ์ ๊ฐ์ ํธ์คํ ์๋ฃจ์ ์๋น์ค๋ฅผ ์๊ธฐ ์ ๊น์ง Web ๊ฐ๋ฐ์ ๋ํ ์๋ํ ํ์ดํ๋ผ์ธ์ GitAction ์ผ๋ก ์ง์ CICD ๋ฅผ ๊ตฌ์ถํด์ผ ํ๋ค๋ ์๋ชป๋ ์ธ์์ ๊ฐ์ง๊ณ ์์๋ ์ ์ฅ์ผ๋ก์, ์ด์ ๊ด๋ จ๋ ๊ฐ๋ฐ ์๊ฐ์ ํฌ๊ฒ ๋จ์ถํ์ฌ Web ๊ฐ๋ฐ์ ๋์ฑ ์ง์คํ ์ ์๋ค๋ ์ ์ด ํฐ ๋งค๋ ฅ์ผ๋ก ๋ค๊ฐ์์ต๋๋ค.
(ํน์ ์ฌ์ฉ๋๊น์ง๋) ๋ฌด๋ฃ์ธ ๊ฒ๋ ํฐ ์ฅ์ ์ ๋๋ค. ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฆฌ์์ค ์ฌ์ ๋ถ์ด ๊ฐ์ธ ํ๋ก์ ํธ๋ก ์ฌ์ฉํ๊ธฐ์ ๋ถ์กฑํจ์ด ์๋ ์์ค์ด๊ธฐ ๋๋ฌธ์, ์ฌ์ฉํ ๋ฆฌ์์ค๊ฐ ๋งค์ฐ ํฌ๋ค๋ ๊ฐ (100GB ์ด๊ณผ) ๋ณต์ก๋๊ฐ ๋์ ๋ํ ํ๋ก์ ํธ์ ๊ฐ์ ํน์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์๋ณด์ ๋๋ค. Backend ๊ฐ๋ฐ์ ์งํํ๋ฉด์ ์๋ฒ ๊ตฌ์ถ ๋ฐ ๊ด๋ฆฌ์ ๋ํ ๋ถ๋ด๊ฐ์ด Public Cloud ์ ์๋ฒ๋ฆฌ์ค (Serverless) ์๋น์ค (AWS Lambda, ECS Fargate ๋ฑ) ์ ์ํด ์๋น ๋ถ๋ถ ํด์๋์๋ ๊ธ์ ์ ์ธ ์ฌ์ฉ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ๊ฐ์ธ์ ์ผ๋ก Frontend ๊ฐ๋ฐ ์ธก๋ฉด์์ Netlify ๋ ๊ทธ๋ณด๋ค ๋ ์ข์ ์ฌ์ฉ ๊ฒฝํ์ ์ ๊ณตํด์ฃผ์์ต๋๋ค.
์๋์ ๊ฐ์ ์ฌํญ์ ํด๋น๋๋ค๋ฉด, ๋น์ฅ Netlify ๊ณต์ ํํ์ด์ง์ ๋ฐฉ๋ฌธํด ๋ณด๋ ๊ฒ์ ์ถ์ฒํด๋๋ฆฝ๋๋ค.
- ๊ฐ์ธ ํฌํธํด๋ฆฌ์ค๋ฅผ Website ๋ก ์ ๋ฆฌํ์ฌ ๊ด๋ฆฌํ๊ณ ์ถ๋ค.
- <์ฃผ๋ก ์คํํธ์ or ๊ท๋ชจ๊ฐ ์์ ํ> ํ ์๊ฐ Website ๋ฅผ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ณ ๊ณต์ ํ๊ณ ์ถ๋ค.
- Frontend ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ์์ํ๊ณ , ๋ฐฐํฌ (ํธ์คํ ) ๊ณผ์ ๊น์ง End to End ๋ก ๊ฒฝํํด๋ณด๊ณ ์ถ๋ค.
ch2 - SvelteKit (w/ Github) ํ๊ฒฝ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
Sveltekit ๊ฐ๋ฐ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ธ์!
SvelteKit ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ
Github ์ Repository ๋ฅผ ๋ง๋ค๊ณ ํด๋น ์ ์ฅ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก SvelteKit ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํฉ๋๋ค. Github ๊ฐ์ธ ๊ณ์ ์ด๋ผ๋ฉด Public ๋ฐ Private Repository ๋ชจ๋ ํ์ฉ ํ ์ ์์ต๋๋ค. (Netlify ๋ฅผ Public Repository ์ ํ์ ํ์ฌ ์ฐ๋ํ ์ ์๋ค๊ณ ์ฐฉ๊ฐํ์ฌ ๊ฐ๋ฐ ๊ณผ์ ์์ ์ค๊ฐ์ Private Repository ๋ก ์ด์ ํ ๊ฒฝํ์ ๊ฐ์ง๊ณ ์์ต๋๋คใ ใ ) ๋ค๋ง, Github ์กฐ์ง ๊ณ์ ์ด๋ผ๋ฉด ๋ฌด๋ฃ Plan ์์๋ Private Repository ๋ฅผ ์ฐ๋ ๋์์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. SvelteKit ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ ๊ณผ์ ์ ์๋์ ๊ด๋ จ ๊ฒ์๊ธ์ ์์ธํ ๊ธฐ์ฌ๋์ด ์์ต๋๋ค.
๊ด๋ จ ๊ฒ์๊ธ - ์ ์ ์ถ์๋ SvelteKit ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํด๋ณด๊ฒ ์ต๋๋ค! #2
์ ์ ์ถ์๋ SvelteKit ์ผ๋ก ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ฑํด๋ณด๊ฒ ์ต๋๋ค! #2
ํด๋น ๊ฒ์๊ธ์ (1) SvelteKit ๊ฐ์ (2) SvelteKit ์ค์น ๋ฐฉ๋ฒ ์ ๋ํ ๋ด์ฉ์ ๋ด๊ณ ์์ต๋๋ค. ์ด์ ๊ฒ์๊ธ - ์ ํํ Svelte ์์? ์ ๋ ๊ณต๋ถํด๋ณผ๊น์? #1 ์ ํํ Svelte ์์? ์ ๋ ๊ณต๋ถํด๋ณผ๊น์? #1 ํด๋น ๊ฒ์
gngb-tech.tistory.com
ํฐ๋ฏธ๋์์ ์๋์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด npm ์ ํตํด Svelte ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํ Netlify Adapter ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์ ์ ์์ต๋๋ค. (๊ธฐ๋ณธ์ ์ธ ์ ์ฉ๊ณผ์ ์ ๊ณต์ ๋ฌธ์์ ๊ฐ์ด๋๋ผ์ธ๊ณผ ๋์ผํฉ๋๋ค.)
npm install -D @sveltejs/adapter-netlify@next
๋ค์ด๋ก๋๊ฐ ์๋ฃ๋๋ฉด, svelte.config.cjs ์ ์๋์ ์ฝ๋๋ธ๋ญ๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
import adapter from '@sveltejs/adapter-netlify'; // ์ถ๊ฐ
import { vitePreprocess } from '@sveltejs/kit/vite';
/** @type {import('@sveltejs/kit').Config} */
const config = {
kit: {
adapter: adapter()
},
preprocess: vitePreprocess()
};
export default config;
netlify.toml ํ์ผ์ ์์ฑํ๊ณ ์๋์ ์ฝ๋๋ธ๋ญ์ ์ถ๊ฐํฉ๋๋ค.
[build]
command = "npm run build"
publish = "build"
์์ ๊ณผ์ ์ ํตํด, Netlify ์ฐ๋์ ์ํ SvelteKit ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ์ ์๋ฃ๋์์ต๋๋ค.
Netlify ์ฐ๋ (w/ Github)
Netlify ํํ์ด์ง์ ๋ฐฉ๋ฌธํ์ฌ ํ์๊ฐ์ ์ ๋ง์น๊ณ Starter (๋ฌด๋ฃ) ์๊ฒฉ์ผ๋ก Team ์ ์์ฑํฉ๋๋ค. Team Overview ๋ฉ๋ด์ ์ข์ธก ํ๋จ Sites ํญ์์ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด import from git ์ ํด๋ฆญํฉ๋๋ค. ์ดํ, ์ ํด์ง ํ๋ก์ธ์ค๋๋ก GUI ๋ฅผ ํตํด Github ๊ณ์ ๋ฐ Repository ์ฐ๋์ ์งํํฉ๋๋ค.
์ดํ, ํธ์คํ ์ด ์ ์ฉ๋ Branch (Deafult : Main) ๋ฅผ ์ง์ ํ๊ณ , Build ์ธํ ์ ์งํํฉ๋๋ค. ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด, Base Directory ๊ณต๋์ SvelteKit ์์ ์ฒ์์ ์ค์ ํ ํด๋ ๋ช ์นญ (App Name) ์ ์์ฑํ๊ณ Build Command ์ npm run build ๋ฅผ ์์ฑํฉ๋๋ค.
์ ์์ ์ผ๋ก ์ฐ๋ ์ธํ ์ด ์งํ๋์๋ค๋ฉด, Netlify ์ ์ํด ํ ๋น๋ฐ์ ์์์ URL ์ ๊ธฐ๋ฐ์ผ๋ก Website ๊ฐ ์์ฑ๋๊ณ , Public ํ๊ฒฝ์์ ํธ์คํ ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก, ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด General - Site Details ํญ์ ํ์ฉํ์ฌ ์์๋ก ํ ๋น๋ URL ๋์ ์ฌ์ฉ์๊ฐ ์ํ๋ Website ๋ช ์นญ์ผ๋ก ์์ ํ ์ ์์ต๋๋ค. (๋ณ๋์ Domain ์ธํ ์ ํ์ง ์๋๋ค๋ฉด .netlify.app Domain ์ฃผ์๋ ์ญ์ ํ ์ ์์ต๋๋ค.)
์์ ๊ณผ์ ์ ํตํด Github ์ ์ฐ๋๋ Netlify ์๋น์ค๋ฅผ ํตํด Website ๋ฅผ ํธ์คํ ํ๋ค๋ฉด, ์์ผ๋ก ํด๋น Website ๋ Github ์ ์๋ก์ด Code ๊ฐ Push ๋ ๋๋ง๋ค ํด๋น ๋ณ๊ฒฝ์ฌํญ์ ๋ฐํ์ผ๋ก (๋์ผํ URL ์) ์๋ก์ด ๋ฒ์ ผ์ Website ๋ก ์ ๋ฐ์ดํธ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋น์ ๊ณต์๊ฐ Svelte ๋ฅผ ๊ณต๋ถํ๋ ๊ณผ์ ์์ ๊ฒช๊ฒ ๋ ์ด๋ ค์๊ณผ ์ํ์ฐฉ์ค๋ฅผ ๋จผ์ ๊ฒฝํํ๊ณ , ์ด์ด์ง ๊ฒ์๊ธ์์ ์ต๋ํ ์ฝ๊ฒ ๊ณต์ ํด๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ์๋ชป๋ ๋ด์ฉ์ ๋ํ ์ง์ ์ฌํญ์ด๋ ๋ฌธ์์ฌํญ์ ์ธ์ ๋ ์ง ํธํ๊ฒ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค.
