๐ ๏ธ [๊ฐ๋ฐ๊ธฐ] ํ์ด์ด๋ฒ ์ด์ค๋ก ๋ง๋๋ ๋๋ง์ ์ค๋งํธ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ: ๊ตฌ์ถ๋ถํฐ ํธ๋ฌ๋ธ์ํ ๊น์ง
๐ ๏ธ ํ์ด์ด๋ฒ ์ด์ค๋ก ๋ง๋๋ ๋๋ง์ ์ค๋งํธ ๋ฐฉ๋ฌธ์ ์นด์ดํฐ: ๊ตฌ์ถ๋ถํฐ ํธ๋ฌ๋ธ์ํ ๊น์ง
์๋ ํ์ธ์, ํ์ง **์ ๋ผ(Silla)**์ ๋๋ค! ๐๏ธ
๋ธ๋ก๊ทธ๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด โ๋ด ๊ธ์ ์ผ๋ง๋ ๋ง์ ์ฌ๋์ด ์ฝ์์๊น?โ ํ๋ ๊ถ๊ธ์ฆ์ด ์๊ธฐ๊ธฐ ๋ง๋ จ์ ๋๋ค. ์ฒ์์๋ ๋จ์ํ ์ธ๋ถ ์๋น์ค๋ฅผ ๋ถ์ฌ๋ณผ๊น๋ ์๊ฐํ์ง๋ง, ์๋น์ค์ ๋ถ์์ ์ฑ๊ณผ ๋ฐ์ดํฐ ์์ ๊ถ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐ๋ฆฌ ๋ธ๋ก๊ทธ๋ **ํ์ด์ด๋ฒ ์ด์ค(Firebase)**๋ฅผ ์ด์ฉํด โ์ธ์์ ๋จ ํ๋๋ฟ์ธ ์ค๋งํธ ์นด์ดํฐโ๋ฅผ ์ง์ ๊ตฌ์ถํ๊ธฐ๋ก ํ์ต๋๋ค.
์ด ๊ณผ์ ์์ ๊ฒช์๋ ์๋ง์ ์ํ์ฐฉ์ค์ ํด๊ฒฐ๋ฒ์ ์ ๋ฆฌํด ๋๋ฆฝ๋๋ค.
๐ง 1. ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค ๊ฒ์ธ๊ฐ? (3๊ฐ์ง ์ ํ์ง)
๋ธ๋ก๊ทธ ์นด์ดํฐ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 3๊ฐ์ง๊ฐ ์์์ต๋๋ค.
| ๋ฐฉ๋ฒ | ์ฅ์ | ๋จ์ |
|---|---|---|
| 1. ์ธ๋ถ ๊ฐํธ ์คํฌ๋ฆฝํธ | ์ค์น๊ฐ ๋งค์ฐ ๊ฐํธํจ | ์๋ฒ๊ฐ ์์ฃผ ์ฃฝ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ด๊ฐ ๊ด๋ฆฌํ ์ ์์ |
| 2. ์ธ๋ถ ์์ ฏ (Clustrmaps ๋ฑ) | ๋์์ธ์ด ๋ค์ํจ | ๋ก๋ฉ ์๋๊ฐ ๋๋ ค์ง๊ณ ๋์์ธ ํต์ผ๊ฐ์ด ๋จ์ด์ง |
| 3. Firebase (์ ํ!) | ๋ฐ์ดํฐ ์์ ๊ถ, ๋ฌด๋ฃ, ๋ฌดํํ ๋์์ธ ์์ ๋ | ์ด๊ธฐ ์ค์ ์ด ๋ณต์กํ๊ณ ์ฝ๋ฉ์ด ํ์ํจ |
์ฐ๋ฆฌ๋ ์ฅ๊ธฐ์ ์ธ ์์ ์ฑ๊ณผ ๋๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ธฐ ์ํด ๊ณผ๊ฐํ ํ์ด์ด๋ฒ ์ด์ค(Firebase) ๋ฐฉ์์ ์ ํํ์ต๋๋ค.
๐ ๏ธ 2. ํ์ด์ด๋ฒ ์ด์ค ์นด์ดํฐ ๊ตฌ์ถ ๊ณผ์
1๋จ๊ณ: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
ํ์ด์ด๋ฒ ์ด์ค์ Realtime Database๋ฅผ ์ฌ์ฉํ์ฌ ์ค์๊ฐ์ผ๋ก ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์์ต๋๋ค.
views/posts/{slug}: ๊ฐ ๊ฒ์๊ธ์ ์กฐํ์views/global/total: ๋ธ๋ก๊ทธ ์ ์ฒด ๋์ ๋ฐฉ๋ฌธ์views/global/daily/{date}: ์ผ์ผ ๋ฐฉ๋ฌธ์
2๋จ๊ณ: ๋๋ํ ์นด์ดํ ๋ก์ง (UV vs PV)
๋จ์ํ ์๋ก๊ณ ์นจํ ๋๋ง๋ค ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋ฉด ์ ๋ขฐ๋๊ฐ ๋จ์ด์ง๊ฒ ์ฃ ?
- ํด๊ฒฐ: ๋ธ๋ผ์ฐ์ ์ ์ฅ์(
localStorage)๋ฅผ ํ์ฉํ์ฌ, ํ ์ฌ๋์ด ํ๋ฃจ์ ๋จ ํ ๋ฒ๋ง ์ซ์๋ฅผ ์ฌ๋ฆฌ๋๋ก ์ค๊ณํ์ต๋๋ค.
๐ 3. ์์์น ๋ชปํ โ์๋ฌ์ ๋ชโ๊ณผ ํ์ถ๊ธฐ
๊ธฐ๋ฅ์ ๋ง๋๋ ๊ฒ๋ณด๋ค ๋ ํ๋ค์๋ ๊ฒ์ ๋ฐฐํฌ ๊ณผ์ ์์์ ์ธ์์ด์์ต๋๋ค. ํน์ ์ง์ ๊ตฌ์ถํ์๋ ค๋ ๋ถ๋ค์ ์๋ ๋ด์ฉ์ ๊ผญ ์ฐธ๊ณ ํ์ธ์!
๐จ ์๊ธฐ 1: โํ๋ฉด์ ์นด์ดํฐ๊ฐ ์ ๋์์!โ (CSP ๋ณด์ ์๋ฌ)
- ์์ธ: ๋ธ๋ผ์ฐ์ ๋ณด์ ์ ์ฑ (Content Security Policy)์ด ์ธ๋ถ ํ์ด์ด๋ฒ ์ด์ค ์๋ฒ์์ ์ฐ๊ฒฐ์ ์ฐจ๋จํ๊ณ ์์์ต๋๋ค.
- ํด๊ฒฐ:
vercel.json๊ณผastro.config.mjs์ค์ ํ์ผ์ ํ์ด์ด๋ฒ ์ด์ค ๋๋ฉ์ธ(*.firebaseio.com,*.googleapis.com)์ ํ์ฉ ๋ชฉ๋ก์ผ๋ก ์ถ๊ฐํ์ต๋๋ค.
๐จ ์๊ธฐ 2: โVercel ๋ฐฐํฌ๊ฐ ๋ฉ์ท์ด์!โ (์ค์ ํ์ผ ๋ฌธ๋ฒ ์๋ฌ)
- ์์ธ: ์ค์ ํ์ผ์ ์์ ํ๋ ์ค
"key"๋ผ๋ ํ์ ์์ฑ์ ๋น ๋จ๋ ค Vercel ์๋ฒ ์์ฒด๊ฐ ๋ป์ด๋ฒ๋ ธ์ต๋๋ค. - ํด๊ฒฐ: ๋ฌธ๋ฒ ์๋ฌ๋ฅผ ๊ณ ์น ๋ค, ๋ฉ์ถฐ๋ฒ๋ฆฐ Vercel์ ์จํต์ ํ์์ฃผ๊ธฐ ์ํด ๊นํ๋ธ ์ฐ๊ฒฐ์ ๋์๋ค๊ฐ ๋ค์ ์ฐ๊ฒฐ(Reconnect)ํ๊ณ โDeploy Hookโ์ผ๋ก ๊ฐ์ ๋ฐฐํฌ๋ฅผ ์คํํ์ต๋๋ค.
๐จ ์๊ธฐ 3: โํจํค์ง ๋ฒ์ ์ด ์ ๋ง์์!โ (pnpm ๋ฒ์ ์ถฉ๋)
- ์์ธ: ๋ด ์ปดํจํฐ์ ์ต์
pnpm 11๋ฒ์ ๊ณผ Vercel ์๋ฒ์ ๋ก์ ๋ฒ์ ์ด ์ถฉ๋ํ์ต๋๋ค. - ํด๊ฒฐ:
package.json์"packageManager": "pnpm@11.0.9"๋ฅผ ๋ช ์ํ์ฌ ์๋ฒ๊ฐ ์ต์ ๋ฒ์ ์ ๊ฐ์ ๋ก ์ฌ์ฉํ๋๋ก ๋ฉฑ์ด์ ์ก๊ณ ๋๊ณ ๊ฐ์ต๋๋ค.
๐ 4. ๊ฒฐ๊ณผ: ์ฐ๋ฆฌ ๋ธ๋ก๊ทธ๋ง์ โ์ง์งโ ํต๊ณ
์๋ง์ ์ฝ์ง ๋์ ๋๋์ด ์ฐ๋ฆฌ ๋ธ๋ก๊ทธ๋ **[์ค๋ 0๋ช | ๋์ 0ํ]**๋ผ๋ ์์ ์นด์ดํฐ๋ฅผ ๊ฐ๊ฒ ๋์์ต๋๋ค.
- ์ ํ์ฑ: ์๋ก๊ณ ์นจ ์ฐํ๋ฅผ ์๋ฒฝํ ๋ฐฉ์ดํฉ๋๋ค.
- ์๋: ์ ์ ์ฌ์ดํธ๋ต๊ฒ 0.1์ด ๋ง์ ๋ก๋ฉ๋ฉ๋๋ค.
- ์์ ์ฑ: ๊ตฌ๊ธ์ด ์ด์ํ๋ ํ์ด์ด๋ฒ ์ด์ค ๊ธฐ๋ฐ์ด๋ผ ์๋ฒ๊ฐ ์ฃฝ์ ๊ฑฑ์ ์ด ์์ต๋๋ค.
๐๏ธ ์ ๋ผ์ ๋ง๋ฌด๋ฆฌ ํ ๋ง๋
๋จ์ํ ์ซ์ ํ๋ ๋์ฐ๋ ์ผ์ด์์ง๋ง, ๊ทธ ๋ค์๋ ๋ณด์ ์ค์ ๋ถํฐ ์๋ฒ ๋๊ธฐํ๊น์ง ์๋ง์ ๊ธฐ์ ์ ๊ณ ๋ฏผ์ด ๋ น์ ์์์ต๋๋ค. ์ด ๊ธ์ด ์์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์คํ ์ฌ๊ธฐ๋ ๋ฏธ๋์ ๋ธ๋ก๊ฑฐ๋ถ๋ค์๊ฒ ์์ ๋์นจ๋ฐ์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๋งํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ธ์ ๋ โ์ ๋ผโ๋ฅผ ์ฐพ์์ฃผ์ธ์! ์ฌ๋ฌ๋ถ์ ๋์ ์ ์์ํฉ๋๋ค! ๐๏ธโจ
๐ ํ์ต ํฌ์ธํธ ์์ฝ
- Firebase Realtime Database๋ฅผ ํ์ฉํ ์ค์๊ฐ ํต๊ณ.
- LocalStorage๋ฅผ ์ด์ฉํ ํ๋ฃจ 1ํ ์นด์ดํ ๋ก์ง.
- CSP ์ค์ ์ ํตํ ๋ณด์ ๋ฌธ์ ํด๊ฒฐ.
- Vercel & GitHub ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ์ต์ ํ.
#ํ์ด์ด๋ฒ ์ด์ค #๋ธ๋ก๊ทธ์นด์ดํฐ #Astro๊ฐ๋ฐ #Vercel์๋ฌํด๊ฒฐ #์ ๋ผ์๊ฐ๋ฐ๋ก๊ทธ #๋๋ง์์น์ฌ์ดํธ
ํ์ง: ์ ๋ผ
๊ต์ก, ๋ ธ๋, ์ฌํ ์์คํ ์ ๋ฐ์ ๊ฑธ์น ๊ตฌ์กฐ์ ๋ณํ์ ์์คํ ๋ฆฌํฐ๋ฌ์์ ๊ด์ฌ์ด ๋ง์ผ๋ฉฐ, AI๊ฐ ๋ฐ๊พธ๋ ์ฌํ ๊ตฌ์กฐ์ ๋ํ ํต์ฐฐ์ ์ ๊ณตํฉ๋๋ค.