Skip to main content

๐Ÿ› ๏ธ [๊ฐœ๋ฐœ๊ธฐ] ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋กœ ๋งŒ๋“œ๋Š” ๋‚˜๋งŒ์˜ ์Šค๋งˆํŠธ ๋ฐฉ๋ฌธ์ž ์นด์šดํ„ฐ: ๊ตฌ์ถ•๋ถ€ํ„ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…๊นŒ์ง€

๐Ÿ›๏ธ
์‹ ๋ผ
์‹œ์Šคํ…œ ๋ฆฌํ„ฐ๋Ÿฌ์‹œ (System & Structure)
โ€ข 3๋ถ„ โ€ข 501 ๋‹จ์–ด
โ€ข ์กฐํšŒ์ˆ˜ ...ํšŒ

๐Ÿ› ๏ธ ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋กœ ๋งŒ๋“œ๋Š” ๋‚˜๋งŒ์˜ ์Šค๋งˆํŠธ ๋ฐฉ๋ฌธ์ž ์นด์šดํ„ฐ: ๊ตฌ์ถ•๋ถ€ํ„ฐ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…๊นŒ์ง€

์•ˆ๋…•ํ•˜์„ธ์š”, ํ•„์ง„ **์‹ ๋ผ(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์ดˆ ๋งŒ์— ๋กœ๋”ฉ๋ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ •์„ฑ: ๊ตฌ๊ธ€์ด ์šด์˜ํ•˜๋Š” ํŒŒ์ด์–ด๋ฒ ์ด์Šค ๊ธฐ๋ฐ˜์ด๋ผ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์„ ๊ฑฑ์ •์ด ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ”๏ธ ์‹ ๋ผ์˜ ๋งˆ๋ฌด๋ฆฌ ํ•œ ๋งˆ๋””

๋‹จ์ˆœํžˆ ์ˆซ์ž ํ•˜๋‚˜ ๋„์šฐ๋Š” ์ผ์ด์—ˆ์ง€๋งŒ, ๊ทธ ๋’ค์—๋Š” ๋ณด์•ˆ ์„ค์ •๋ถ€ํ„ฐ ์„œ๋ฒ„ ๋™๊ธฐํ™”๊นŒ์ง€ ์ˆ˜๋งŽ์€ ๊ธฐ์ˆ ์  ๊ณ ๋ฏผ์ด ๋…น์•„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ด ์ž์‹ ๋งŒ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ์ค‘ํžˆ ์—ฌ๊ธฐ๋Š” ๋ฏธ๋ž˜์˜ ๋ธ”๋กœ๊ฑฐ๋ถ„๋“ค์—๊ฒŒ ์ž‘์€ ๋‚˜์นจ๋ฐ˜์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“  โ€˜์‹ ๋ผโ€™๋ฅผ ์ฐพ์•„์ฃผ์„ธ์š”! ์—ฌ๋Ÿฌ๋ถ„์˜ ๋„์ „์„ ์‘์›ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ”๏ธโœจ


๐Ÿ“š ํ•™์Šต ํฌ์ธํŠธ ์š”์•ฝ

  1. Firebase Realtime Database๋ฅผ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ํ†ต๊ณ„.
  2. LocalStorage๋ฅผ ์ด์šฉํ•œ ํ•˜๋ฃจ 1ํšŒ ์นด์šดํŒ… ๋กœ์ง.
  3. CSP ์„ค์ •์„ ํ†ตํ•œ ๋ณด์•ˆ ๋ฌธ์ œ ํ•ด๊ฒฐ.
  4. Vercel & GitHub ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™”.

#ํŒŒ์ด์–ด๋ฒ ์ด์Šค #๋ธ”๋กœ๊ทธ์นด์šดํ„ฐ #Astro๊ฐœ๋ฐœ #Vercel์—๋Ÿฌํ•ด๊ฒฐ #์‹ ๋ผ์˜๊ฐœ๋ฐœ๋กœ๊ทธ #๋‚˜๋งŒ์˜์›น์‚ฌ์ดํŠธ

๐Ÿ›๏ธ

ํ•„์ง„: ์‹ ๋ผ

๊ต์œก, ๋…ธ๋™, ์‚ฌํšŒ ์‹œ์Šคํ…œ ์ „๋ฐ˜์— ๊ฑธ์นœ ๊ตฌ์กฐ์  ๋ณ€ํ™”์™€ ์‹œ์Šคํ…œ ๋ฆฌํ„ฐ๋Ÿฌ์‹œ์— ๊ด€์‹ฌ์ด ๋งŽ์œผ๋ฉฐ, AI๊ฐ€ ๋ฐ”๊พธ๋Š” ์‚ฌํšŒ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ํ†ต์ฐฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ๋ฆฌํ„ฐ๋Ÿฌ์‹œ ์‚ฌํšŒ๊ตฌ์กฐ ๊ต์œก์ •์ฑ