[Devfest Songdo 2023] 4. GCP๋ฅผ ํ™œ์šฉํ•ด Next.js ์ธํ”„๋ผ ๊ตฌ์ถ•ํ•˜๊ธฐ

2023. 12. 11. 00:02ใ†Experiences/Activities

 

 

 

 

 

๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ํ™œ์šฉ์ด ๊ถ๊ธˆํ•ด์„œ ๋“ค์–ด๋ดค๋‹ค.

 

 

 

 

 

์ƒŒํ”„๋ž€์‹œ์Šค์ฝ”์—์„œ ์˜ค์‹  ๊ตฌ๊ธ€ ๊ฐœ๋ฐœ์ž๋‹˜
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ธ๋ฐ, ์„œ๋ฒ„์™€ ๊ด€๋ จ๋˜์–ด ๊ณ ๋ฏผ์ด ๋งŽ์•„์ง

 

 

 

 

 

 

Next.js

  • react ์•ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์—์„œ ์‹œ์ž‘!
  • ์„œ๋ฒ„๊ฐ€ ํ•„์š” ์—†์œผ๋‹ˆ, ํŒŒ์ผ์„ ์˜ฌ๋ฆฌ๋Š” ๊ฐœ๋… (๋ฆฌ์•กํŠธ ์•ฑ์„ ํ˜ธ์ŠคํŠธํ•˜๋Š” ๋ฐฉ์‹)
  • ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ณตํ†ต์ ์ธ ๋ฌธ์ œ์ 
  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž์ฒด๊ฐ€ ๋ผ์šฐํ„ฐ๊ฐ€ ๋œ๋‹ค NEXT
  • Search engine ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋…ธ์ถœ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, ์™„๋ฒฝํ•˜๊ฒŒ ์ถœ๋ ฅ๋œ ํŽ˜์ด์ง€๋ฅผ ์œ ์ €์—๊ฒŒ ๋ณด์—ฌ์ค˜์•ผ ํ•จ
  • ๋„ฅ์ŠคํŠธ๋Š” ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋งŒ๋“œ๋Š” ๋ฉ”ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ, ๋ฆฌ์•กํŠธ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ
  • ์›น๊ฐœ๋ฐœ ์ž์ฒด๊ฐ€ ๊ณ ๋„ํ™”๋จ, ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์œ„ํ•œ ํ…Œํฌ๋‹‰์ด ๊ฐœ๋ฐœ๋จ (์„œ๋ฒ„ ๋ Œ๋”๋ง, ํด๋ผ์ด์–ธํŠธ ๋ Œ๋”๋ง)

 

  • ์ œ๋Œ€๋กœ ๋ชป๋งŒ๋“ค๋ฉด ๋กœ๋”ฉ ์Šคํฌ๋ฆฐ ๋งŽ์ด ๋ณด์ž„
    -> ์„œ๋ฒ„ ๋ Œ๋”๋ง์„ ํ†ตํ•ด ํ•ด๊ฒฐ ๊ฐ€๋Šฅ (์ด๋ถ€๋ถ„์€ ์„œ๋ฒ„์—์„œ, ์ €๋ถ€๋ถ„์€ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋Œ๋ฆฌ๊ณ ) 
  • ๋ชจ๋“  ์ŠคํŽ™ํŠธ๋Ÿผ์„ ์ปค๋ฒ„ํ•  ์ˆ˜ ์žˆ๋Š” next
  • React ๊ฐœ๋ฐœ ์‹œ์ž‘ ์‹œ ๊ฐ€์žฅ ๊ถŒ์žฅํ•˜๋Š”๊ฒƒ์ด next.js

 

  • Next๋กœ ๋งŒ๋“  ๋ฆฌ์•กํŠธ ์•ฑ / ์„œ๋ฒ„ ํด๋”๊ฐ€ ์žˆ๋‹ค
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค
  • ๋”์ด์ƒ ๊ธฐ์กด์˜ ํŒŒ์ผ ์‹œ์Šคํ…œ์ด ์•„๋‹˜, ๊ฒฐ๊ตญ์€ ์„œ๋ฒ„๊ฐ€ ํ•„์š”
  • ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ธ๋ฐ, ์„œ๋ฒ„์™€ ๊ด€๋ จ๋˜์–ด ๊ณ ๋ฏผ์ด ๋งŽ์•„์ง
    ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…์€ ์–ด๋””์—์„œ region, cpu ๋ฉ”๋ชจ๋ฆฌ๋Š”? ์„œ๋ฒ„๋ฅผ ๋ช‡ ๊ฐœ๋ฅผ ๋‘˜๊นŒ, scale up์€ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
  • ์„œ๋ฒ„๊ฐ€ ์ƒ๊ธฐ๋ฉด์„œ ๊ณ ์ • ๋น„์šฉ์ด ๋“ค๊ฒŒ ๋จ
  • Next.js๋Š” ์˜คํ”ˆ์†Œ์Šค์ด์ง€๋งŒ, ํšŒ์‚ฌ์—์„œ ๋งŒ๋“ฆ Vercel
    ๊ต‰์žฅํžˆ ์ž˜๋‚˜๊ฐ€๋Š” ์Šคํƒ€ํŠธ์—…

 

 

 

 

 

 

 

 

 

 

 

๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์—์„œ next.js ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋ ค๋ฉด?

  • Vercel ๊ฐ™์€ ์ธํ”„๋ผ๋ฅผ GCP์—์„œ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
  • Cloud Run
    ๊ฐ€์žฅ ์ข‹์•„ํ•˜๋Š” ์„œ๋น„์Šค
  • ์„œ๋ฒ„๋ฆฌ์Šค - ๋‚ด๊ฐ€ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ์˜๋ฏธ
  • ์ž๋™์œผ๋กœ ์„œ๋ฒ„ ๋Š˜๋ฆฌ๊ณ , ํŠธ๋ž˜ํ”ฝ ์—†์œผ๋ฉด ์„œ๋ฒ„๋ฅผ ๊บผ์คŒ 
  • ๋‚˜์—๊ฒŒ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค˜ (๋ฐฐํฌ ๊ธฐ์ˆ  ์ค‘ ํ•˜๋‚˜)
  • ๋‚ด๊ฐ€ ์›ํ•˜๋Š” OS์™€ ๋ชจ๋“ˆ๊ณผ ๋“ฑ๋“ฑ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•  ๊ฒƒ์ด๋‹ค
    ๊ฐ„๋‹จํ•œ ๋„์ปค ํŒŒ์ผ์„ ์จ์„œ ์˜ฌ๋ฆฐ๋‹ค
  • ๋‚ด๊ฐ€ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ์€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์˜ฌ๋ฆผ
  • URL์„ ํ•˜๋‚˜ ๊ณต์งœ๋กœ ์คŒ (run.app)

 

 

 

 

 

 

 

 

 

 

์ปด๋„ค์—์„œ ๋ฐฐ์› ๋˜ CDN :)

 

 

 

 

 

Next.js ์—์„œ ์บ์‹ฑ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ๋‚ด๊ฐ€ ์“ด ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„์—์„œ ๊ตฌ๋™ํ•˜๊ณ ,
    ์ด๋กœ ๋งŒ๋“  html ํŒŒ์ผ์„ ์บ์‹œ์— ์ €์žฅํ•œ๋‹ค
  • ๋…ธ์ถœ์ด ๋งŽ์ด ๋˜๋Š” ํŽ˜์ด์ง€ -> 10๋ถ„์— ํ•œ๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค
  • ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ๋งŒ๋“ค๊ณ  ์‹ถ์ง„ ์•Š์€๋ฐ, 10๋ถ„๋งˆ๋‹ค ๋งŒ๋“ค๊ณ  ์‹ถ์–ด
    ์บ์‹œ์— ์ €์žฅํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” Next.js์˜ ๊ธฐ๋Šฅ
  • ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•จ

 

  • Cloud run์—์„œ๋Š” ์บ์‹ฑ์ด ์ž˜ X
  • ์š”์ฒญ์ด ๋งŽ์ด ๋“ค์–ด์˜ค๋ฉด ํ•„์š”ํ•œ ๊ฐœ์ˆ˜๋งŒํผ ํ™•์žฅ์‹œํ‚ด
  • ๋Œ๋ ค์ฃผ๋Š” ์ƒˆ๋กœ์šด ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์„œ๋กœ ํŒŒ์ผ์‹œ์Šคํ…œ์„ ๊ณต์œ ํ•˜์ง€ ์•Š์Œ
  • ์„œ๋กœ ํ†ต์‹ ์ด ์—†๋‹ค๋ณด๋‹ˆ, ์บ์‹ฑ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๋ฌดํšจ
  • ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์บ์‹ฑ
  • ์ด ๋ถ€๋ถ„ ์„ค๋ช…์ด ๋„ˆ์–ด์–ด๋ฌด ์ธ์ƒ๊นŠ์—ˆ๋‹ค  ! :) 
  • ์™œ ๋‹ค์Œ ๊ธฐ์ˆ ๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š”์ง€, ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•„์š”์„ฑ์ด ์ž˜ ์™€๋‹ฟ์•˜๋‹ค ๐Ÿ”ฅ

 

  • Firestore
    ํŒŒ์ผ ์‹œ์Šคํ…œ ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์ด ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค
    ํ•˜์ง€๋งŒ ๋ˆ์„ ๋งŽ์ด ๋‚ด์•ผ ํ•œ๋‹ค.

 

  • ์ด์— ๋Œ€ํ•œ ๋Œ€์•ˆ์ด firebase realtime database
  • ๊ทธ๋ƒฅ ๋˜์ง€๋ฉด ์•Œ์•„์„œ ํ•œ๋‹ค (but ๋…ผ๋ฆฌ์ ์ธ ์‚ฌ๊ณ  ์–ด๋ ค์›€)
  • ์บ์‹ฑ์—๋Š” ๊ต‰์žฅํžˆ ์ ํ•ฉํ•œ ์„œ๋น„์Šค

 

  • CDN Contents delivery Network
  • ํ•œ๊ตญ ์œ ์ €์˜ ๋ฏธ๊ตญ ์„œ๋น„์Šค (๊ธ€๋กœ๋ฒŒ ์„œ๋น„์Šค)
  • ๊ธ€๋กœ๋ฒŒ ์œ ์ €์— ๋Œ€ํ•œ ์†๋„ ์ €ํ•˜ ๋ฌธ์ œ 
  • ํŒŒ์ผ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก, ์—ฌ๋Ÿฌ ๋‚˜๋ผ์— ์„œ๋ฒ„๋ฅผ ๋‘ 
    CDN์„ ํ†ตํ•ด ์นดํ”ผ๋ฅผ ๋‘๋Š” ๊ฒƒ

 

 

 

 

 

Next.js๋ฅผ GCP ํ™˜๊ฒฝ์—์„œ ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ๊ตฌ๊ฒฝํ•ด๋ณด๊ธฐ!

 

 

 

 

 

Firebase hosting 

  • ์œ ์ €๊ฐ€ ์˜ค๋ฉด ์šฐ์„  ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํ˜ธ์ŠคํŒ…์ด ์ค‘๊ฐ„์— ์š”์ฒญ์„ ๋ฐ›์Œ
  •  url๋กœ .web.app ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค€๋‹ค.
  • CDN์„ ์“ฐ๊ฒŒ ๋˜๋ฉด ์บ์‰ฌ ์ปจํŠธ๋กค์ด๋ผ๋Š” ํ—ค๋”๋ฅผ ์จ์„œ, ์ถ”๊ฐ€์ ์ธ ์บ์‹ฑ ๊ฐ€๋Šฅ
  • ํ•œ ๋ฒˆ ๋งŒ๋“ค๊ณ  ์—ฌ๋Ÿฌ ์œ ์ €๊ฐ€ ๋ด๋„ ๋˜๋Š” ํŒŒ์ผ์€
    Firebase host์—์„œ ์š”์ฒญ์„ ๋‹ค ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํ™•์žฅ์„ฑ๋„ ํผํฌ๋จผ์Šค๋„ ์ข‹๊ณ , ๊ฐ€๊ฒฉ์€ ๋” ์ €๋ ดํ•˜๋‹ค

 

 

 

 

 

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

  • ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๊ณ ๋„ํ™” ๋จ
  • ๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ๊ฐ€ ๊ฐ€๊นŒ์›Œ์ ธ์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ
  • ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค ๊ฐ™์€ ๊ฒฝ์šฐ
    ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ์ดํ•ดํ•ด์•ผ, ์ข‹์€ ๋ฆฌ์•กํŠธ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค
  • ๋ฐฑ์—”๋“œ๋„ ๋‹จ์ˆœํžˆ ์„œ๋ฒ„๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ,
    ํ”„๋ก ํŠธ๊ฐ€ ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค
  • ์ง€๋‚œ ํ•™๊ธฐ์— ๋“ค์—ˆ๋˜ ํ’€์Šคํƒ ๋„คํŠธ์›Œํ‚น ์ˆ˜์—…์ด ๋– ์˜ค๋ฅด๋Š” ๋ถ€๋ถ„ , , , 

 

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