๐Ÿข๊ธฐ์—…ํ˜‘์—… ํšŒ๊ณ 

์ง„ํžˆยท2023๋…„ 10์›” 26์ผ
0

ํšŒ๊ณ 

๋ชฉ๋ก ๋ณด๊ธฐ
1/2

๐Ÿข ๊ธฐ์—…ํ˜‘์—… ์‹œ์ž‘

9์›” 25์ผ ~ 10์›” 27์ผ, ๊ทธ ์‚ฌ์ด ๊ธด ์ถ”์„์—ฐํœด๊ฐ€ ์žˆ์–ด ์•ฝ 4์ฃผ ์ •๋„ ๋˜๋Š” ๊ธฐ๊ฐ„๋™์•ˆ ์ธํ„ด์‹ญ์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค.

๐Ÿ—จ๏ธ ๋‚ด๊ฐ€ ์„ ํƒํ•œ ๊ณณ๊ณผ ์ด์œ 

์ธํ„ด์‹ญ์„ ๊ฐ€๊ธฐ ์ „์— ๋‚˜๋Š” ์–ด๋–ค ํšŒ์‚ฌ์—์„œ ์ผํ•˜๊ณ  ์‹ถ์€์ง€๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
๊ธฐ์—…์ด ์–ด๋–ค ๊ฒƒ์„ ์ถ”๊ตฌํ•˜๋Š๋ƒ๊ฐ€ ์ œ๊ฒŒ ํฐ ๋™๊ธฐ๋ถ€์—ฌ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์•„ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค.
๋ฆฌ์ŠคํŠธ ์ค‘ ํฌ๋งํ•˜๋Š” ๊ธฐ์—…์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ, ์ €๋Š” ๊ทธ ์ค‘ 1์ˆœ์œ„๋กœ ์ž‘์„ฑํ•œ ๊ธฐ์—…์— ๋‹ค๋…€์˜ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค๐Ÿ™‚

๐Ÿ’™์—ด๋‹ค์ปดํผ๋‹ˆ
์˜ท์žฅ์„ ์ •๋ฆฌํ•˜๊ณ , ํŒจ์…˜ ๋ผ์ดํ”„์‚ฌ์ดํด์— ๋งž์ถฐ ์˜๋ฅ˜ ์†Œ๋น„ ๋ฐ ์ฒ˜๋ถ„์„ ๋„์™€์ฃผ๋Š” ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š” ๊ธฐ์—…์œผ๋กœ, 1์ธ ๋˜๋Š” ๋งž๋ฒŒ์ด ๊ฐ€๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ์žˆ๋Š” ํ˜„ํ™ฉ๊ณผ, ์˜๋ฅ˜ํ๊ธฐ๋ฌผ๊ณผ ํŒจ์ŠคํŠธํŒจ์…˜์— ๋Œ€ํ•œ ๋ฌธ์ œ์— ๊ณต๊ฐํ•˜๊ณ  ์žˆ๋˜ ์ €์—๊ฒ ์ด ํšŒ์‚ฌ๊ฐ€ ๊ฐ€์žฅ ๋ˆˆ์— ๋„์—ˆ์–ด์š”.

๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” next.js์™€ typescript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋ณธ๊ฒฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ํ˜ผ์ž flutter๋ฅผ ์ฐ๋จนํ•ด๋ณด๊ธฐ๋„ ํ–ˆ์—ˆ๋˜์ง€๋ผ ํšŒ์‚ฌ์†Œ๊ฐœ๋ž€์— ์•ฑ ๊ฐœ๋ฐœ ์˜ˆ์ •์ด๋ผ๋Š” ๊ฒƒ๋„ ํฅ๋ฏธ๋กœ์› ๊ณ ์š”.


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

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

๐Ÿ”ง๊ธฐ์ˆ  ์Šคํƒ

next.js, typescript


๐Ÿ’ป ๋งก์€ ์—…๋ฌด

1. ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (์ง„ํ–‰ ์ค‘๋‹จ)

์‚ฌ๋‚ด ์ž„์ง์› ๋ฐ ๋งค๋‹ˆ์ €, ๊ณ ๊ฐ์˜ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ์–ด๋“œ๋ฏผ ํŽ˜์ด์ง€๋กœ, ์˜ˆ์•ฝ์ •๋ณด์™€ ์ง„ํ–‰์ƒํƒœ, ๊ทธ๋ฆฌ๊ณ  ๋งค์ถœ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1-1. UI ๊ธฐํš

๋‹น์‹œ ๋””์ž์ด๋„ˆ๊ฐ€ ์—†๋Š” ๊ด€๊ณ„๋กœ UI ๊ธฐํš์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์–ด๋“œ๋ฏผ ๋ฉ”์ธํ™”๋ฉด ์–ด๋“œ๋ฏผ ๋Œ€์‹œ๋ณด๋“œ


2. ๐ŸŒŸ๋ฐฐํฌ์™„๋ฃŒ๐ŸŒŸ ์„œ๋น„์Šค ์˜ˆ์•ฝ ํŽ˜์ด์ง€

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

ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜์–ด ์•„๋ž˜ ์ฃผ์†Œ์—์„œ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!
ํŽ˜์ด์ง€ ๋ฐ”๋กœ ๋ณด๊ธฐ
๋˜๋Š” ๋ฉ”์ธํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ ํ›„ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”์ธํŽ˜์ด์ง€ ๋ฐ”๋กœ ๊ฐ€๊ธฐ

2-1. UI

์›น์•ฑ์œผ๋กœ ํŽ˜์ด์ง€ ์ œ์ž‘์„ ์ง„ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์„œ๋น„์Šค์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ ํƒ์˜ต์…˜๊ณผ ์ดํ•ด๋ฅผ ์œ„ํ•œ ์„ค๋ช… ์ œ๊ณต ๊ธฐ์ค€์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค. ์ด 4ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์ง๊ด€์ ์ธ ์ด๋™ ๋ฒ„ํŠผ์„ ํ•˜๋‹จ์— ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

2-2. ๊ธฐ๋Šฅ๊ตฌํ˜„

  • ์„ ํƒํ•œ ๋งค๋‹ˆ์ € ์ธ์›์ˆ˜์— ๋”ฐ๋ผ ์„ ํƒ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ„ ๋ฒ„ํŠผ ํ˜ธ์ถœ
  • ์„ ํƒํ•œ ๋งค๋‹ˆ์ € ์ธ์›์ˆ˜์™€ ์‹œ๊ฐ„์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์•ˆ๋‚ด ํ‘œ๊ธฐ
  • props๋กœ ์œ ์ €๊ฐ€ ์„ ํƒ ๋ฐ ์ž‘์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌํ•˜์—ฌ ์ตœ์ข… ์ œ์ถœ๋˜๋„๋ก ๊ตฌํ˜„
    ์ฒ˜์Œ์—๋Š” Context API๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•ด ์ฝ”๋“œ๋ฅผ ์งฐ๋Š”๋ฐ, useSatet์™€ props๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    Context API๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ์œผ๋‚˜ Typescript์˜ ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋‹ˆ ์‹œ๊ฐ„์ด ์ง€์ฒด๋˜๊ธฐ๋„ ํ–ˆ์œผ๋ฉฐ ๋ฐฐ์šด๋Œ€๋กœ ์ ์šฉ์— ์‹คํŒจํ•˜์˜€๊ณ ๐Ÿ˜ญ..
    ๊ฒฐ๊ตญ CEO๋‹˜๊ป˜ ์ด ์ƒํ™ฉ์„ ๋ง์”€๋“œ๋ฆฌ๊ณ  props๋กœ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ค์ง€ ์—ฌ์ญค๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๊ทœ๋ชจ๊ฐ€ ํฌ์ง€ ์•Š์œผ๋‹ˆ props๋กœ ๋„˜๊ธฐ๋Š” ๋ฐฉ๋ฒ•๋„ ๊ฐ„๋‹จํ•˜๊ณ  ์ข‹์•„๋ณด์ธ๋‹ค๊ณ  ๋ง์”€ํ•ด ์ฃผ์…”์„œ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค!
  • Next Auth, useSession Hook์œผ๋กœ ์œ ์ € ํ™•์ธ ๋ฐ ์ •๋ณด ์ž๋™๊ธฐ์ž…
    ์†Œ์…œ๋กœ๊ทธ์ธ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ JWT ๋ฐฉ์‹์˜ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋Š” Next Auth๋ฅผ ํ™œ์šฉ. ์œ ์ €์˜ Id ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์—†์„ ๊ฒฝ์šฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ , ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ input๊ณผ state์— ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • enum ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์ˆ˜๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ
  • useRef๋ฅผ ํ™œ์šฉํ•ด ๊ฒฝ์šฐ์— ๋”ฐ๋ผ input์ฐฝ์œผ๋กœ ์ž๋™ ํฌ์ปค์‹ฑ
    ํ”„๋กœ๋ชจ์…˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ์˜ต์…˜์„ ์„ ํƒํ–ˆ์„ ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ฝ”๋“œ ์ž…๋ ฅ input์— ํฌ์ปค์‹ฑ ๋˜๋„๋ก ๊ตฌํ˜„
  • ๋‹ค์Œ ์ฃผ์†Œ๊ฒ€์ƒ‰ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์†Œ ์ž…๋ ฅ์ฐฝ ๊ตฌํ˜„
    ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์— ๋Œ€ํ•œ ๋ถˆํŽธ ์ปดํ”Œ๋ ˆ์ธ์ด ์ ‘์ˆ˜๋˜์–ด ์ฃผ์†Œ ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ ํŒ์—…์œผ๋กœ ๋„์šฐ๋˜ ๊ฒƒ์„ ๋ชจ๋‹ฌ๋กœ ๋ณ€๊ฒฝ
  • useEffect๋ฅผ ์‚ฌ์šฉํ•ด ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ ์—ฌ๋ถ€ ํ™•์ธํ•˜๊ณ , ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ”„๋กœ๋ชจ์…˜ ์ฝ”๋“œ ์ž๋™ ์ž…๋ ฅ, ์•Œ๊ฒŒ๋œ ๊ฒฝ๋กœ ์˜ต์…˜ ์ž๋™ ์„ ํƒ๋˜๋„๋ก ๊ตฌํ˜„

2-3. ๋ฌธ์ œ ํ•ด๊ฒฐ

  • ๋ฌธํ•ญ์— ๋”ฐ๋ฅธ ์˜ต์…˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด ์ƒ๊ธฐ๋ฉด์„œ ์ œ์ถœ๋˜๋Š” ํ˜„์ƒ
    ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
    button ๋ฌธ์ œ ํ•ด๊ฒฐ
  • ์ƒ์ˆ˜๋ฐ์ดํ„ฐ์˜ value๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ๊ฐœํ–‰์ด ๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ
    ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•ด ํฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.
    ๊ฐœํ–‰ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • Module not found: Can't resolve 'child_process'
    ์‹œ๊ฐ„์„ ISOํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณด๋‚ด๊ณ ์ž ํ–ˆ๋Š”๋ฐ, ๋งŒ๋“ค์–ด๋‘” ๋ฉ”์„œ๋“œ ํ•จ์ˆ˜๊ฐ€ ์žˆ์–ด์„œ ์ด๋ฅผ ์‚ฌ์šฉํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์ด ๋“ค์–ด์™€ ์ ์šฉํ–ˆ๋”๋‹ˆ ๋‚˜ํƒ€๋‚œ ์—๋Ÿฌ.
    nods.js์˜ ๋‚ด์žฅ๋ชจ๋“ˆ๋กœ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์„œ ๋‚˜ํƒ€๋‚œ ๊ฑฐ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ฆ‰ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ค‘์ธ ์ปดํฌ๋„ŒํŠธ๋ผ์„œ ์•ˆ๋œ๋‹ค๋Š” ๊ฑฐ! ์ด๋Ÿฐ ์ผ์ด ์ƒ๊ธธ๊ฑฐ๋ผ๊ณค ์ƒ๊ฐ๋„ ๋ชปํ–ˆ๋‹ค...
    ์ตœ๋Œ€ํ•œ ์ œ ์„ ์—์„œ ํ•ด๊ฒฐํ•ด๋ณด๊ณ ์ž ํ•˜์—ฌ api ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ƒ์„ฑํ•ด๋ณด๋ผ๋Š” ๋ง์ด ์žˆ๊ธธ๋ž˜ ์‹œ๋„ํ•ด๋ดค์œผ๋‚˜ 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
    ๊ฒฐ๊ตญ CTO๋‹˜๊ป˜ ๋ง์”€๋“œ๋ ค์„œ ํ”„๋ก ํŠธ๋‹จ์—์„œ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
  • TypeError: Cannot read properties of undefined
    ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์•„ ์ฝ์„ ์ˆ˜ ์—†์„ ๋•Œ ๋‚˜ํƒ€๋‚œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ ์ €์˜ ๊ฒฝ์šฐ ์˜ต์…”๋„ ์ฒด์ด๋‹์„ ์จ์ฃผ์–ด ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

2-4. ํ”ผ๋“œ๋ฐฑ ๋ฐ˜์˜

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

    ์ด๋™ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋‹ค์Œ ๋˜๋Š” ์ด์ „ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ณ€๊ฒฝ๋˜๋„๋ก ๋งŒ๋“  ํ•จ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ํ•ด๋‹น ํ•จ์ˆ˜๋กœ ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

    ์ฐพ์•„๋ณด๋‹ˆ ๊ณต์‹๋ฌธ์„œ์— ScrollRestoration๋ฅผ ์ด์šฉํ•œ ์Šคํฌ๋กค ์œ„์น˜ ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”๋ฐ ๋ผ์šฐํŠธ ํ–ˆ์„ ๋•Œ ์ž‘๋™๋˜๋Š” ๊ฒƒ ๊ฐ™์•„ ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ์‚ฌ์šฉํ•ด ๋ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค.
    ScrollRestoration - ๊ณต์‹ ๋ฌธ์„œ

2-5. ๊ธฐ์–ต๋‚˜๊ฑฐ๋‚˜ ๊ณ ๋ฏผ ๋งŽ์•˜๋˜ ์ฝ”๋“œ

  • useEffect๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋กค์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ฝ”๋“œ
    ์กฐ๊ธˆ ๋” ๊นŠ๊ฒŒ ๊ณ ๋ฏผํ–ˆ์—ˆ๋‹ค๋ฉด useEffect๋ฅผ ์•ˆ ์ผ์–ด๋„ ๋์—ˆ๊ฒ ๊ตฌ๋‚˜ ํ–ˆ์Šต๋‹ˆ๋‹ค..
const next = () => {
		if (current < 5) {
			setCurrent((prev) => prev + 1);
			window.scrollTo(0, 0);
		}
	};
  • date ์œ ํ˜•์˜ input ํƒœ๊ทธ
    ๋ฐฐํฌ ํ›„ ์•„์ดํฐ์œผ๋กœ ๋ณด๋‹ˆ date ์œ ํ˜•์ธ input์ฐฝ์ด ์‚ฌ์ด์ฆˆ๋„ ์ด์ƒํ•˜๊ณ , ์„ ํƒ ๋‚ ์งœ๋ฅผ ์ œํ•œํ•˜๊ณ ์ž ๋„ฃ์€ min ์†์„ฑ์ด ์•ˆ๋ผ์„œ ๋งŽ์€ ์ˆ˜์ •์„ ๊ฑฐ์ณค์Šต๋‹ˆ๋‹ค.
    ์•Œ๊ณ ๋ณด๋‹ˆ iOS์—์„œ๋Š” min ์†์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ ...
    ๊ทธ๋ž˜์„œ ์ตœ์†Œ ์„ ํƒ ๊ฐ€๋Šฅ ๋‚ ์งœ ์ด์ „์œผ๋กœ ์„ ํƒํ•˜๋ฉด ์„ ํƒ์ด ๋˜์ง€ ์•Š๊ณ , ๊ฒฝ๊ณ ๋ฌธ์„ ๋„์›Œ์ฃผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    input์˜ width๋„ ๋„์ €ํžˆ ํ•ด๊ฒฐ์ด ์•ˆ๋˜์–ด์„œ ๊ณ ๋ฏผํ•˜๋˜ ์ฐฐ๋‚˜, date ์œ ํ˜•์˜ input์— opacity: 0์„ ์ฃผ์–ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
    ๊ฐ€์งœ input์— ์„ ํƒํ•œ ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋„๋ก ์„ค์ •ํ•ด ์ฃผ๊ณ ์š”.
    ์›น๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ง€์›์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์€ ์ต์ˆ™ํ•œ๋ฐ, ๋””๋ฐ”์ด์Šค๊นŒ์ง€๋Š” ๋ฏธ์ฒ˜ ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋Š”๋ฐ ๋ชจ๋ฐ”์ผ ๋””๋ฐ”์ด์Šค๋„ ๊ผญ๊ผญ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค..!๐Ÿ˜ข

  • ํ”„๋กœ๋ชจ์…˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ์ž…ํ•˜๋Š” input ์œ„์น˜ ๋ณ€๊ฒฝ
    ์œ ์ €์˜ ๊ฒฝํ—˜์„ ์ƒ๊ฐํ•˜์—ฌ ๊ธฐ์กด ํผ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ฝ”๋“œ ์ž…๋ ฅ input์˜ ๋…ธ์ถœ ์กฐ๊ฑด๊ณผ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.
    ํ”„๋กœ๋ชจ์…˜ ์ฝ”๋“œ๋Š” ์•Œ๊ฒŒ ๋œ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๋Š” ์˜ต์…˜์— ๋”ฐ๋ผ ํ•„์ˆ˜ ๊ธฐ์žฌ ์‚ฌํ•ญ์ธ๋ฐ, ๊ธฐ์กด ํผ๋Œ€๋กœ ๋งŒ๋“ค์—ˆ์„ ๋• ๊ธฐ์ž…ํ•˜๋Š” ์นธ์ด ์˜ต์…˜๋ณด๋‹ค ์œ„์— ์žˆ์–ด์„œ ์˜ต์…˜์„ ์„ ํƒํ•˜๋ฉด useRef๋กœ ์ฝ”๋“œ ์ž…๋ ฅ์นธ์— ํฌ์ปค์‹ฑ ๋˜๋„๋ก ํ–ˆ๊ณ , ์ž…๋ ฅ์ด ํ•„์š”์—†๋Š” ์˜ต์…˜์„ ์„ ํƒํ–ˆ๋‹ค๋ฉด ์ž…๋ ฅ์ด ๋˜์ง€ ์•Š๋„๋ก ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ๊ทธ๋ ‡๊ฒŒ ๋งŒ๋“ค๊ณ ๋‚˜๋‹ˆ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ์œ ์ €๋ผ๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•  ์œ ์ €๋„ ๋‹ค์‹œ ์ƒ๋‹จ์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•˜๋‹ˆ ๋ถˆํŽธํ•˜๊ฒ ๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
    ์œ„์น˜๋งŒ ๋ฐ”๊ฟ”์ค€๋‹ค๋ฉด ์ข€ ๋” ํŽธ๋ฆฌํ•ด์งˆ ๊ฑฐ ๊ฐ™๋‹จ ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ์ฝ”๋“œ ์ž…๋ ฅ์ฐฝ์ด ์˜ต์…˜์„ ๋ˆŒ๋ €์„ ๋•Œ ๋œจ๋ฉด ํ˜ผ๋™์ด ์—†์„ ๊ฑฐ ๊ฐ™์•„ CEO๋‹˜๊ป˜ ๋ง์”€๋“œ๋ ค์„œ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์ถ”๊ฐ€๋กœ ์ฝ”๋“œ ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ์˜ต์…˜์„ ์„ ํƒํ–ˆ์„ ๋•Œ์—๋งŒ input์ด ๋œจ๋„๋ก ํ•ด ๊ตฌํ˜„์„ ๋งˆ์ณค์Šต๋‹ˆ๋‹ค๐Ÿ™‚

3. ๋งค๋‹ˆ์ € - ์„œ๋น„์Šค ๊ฒฐ๊ณผ ์ œ์ถœ ํŽ˜์ด์ง€ (85% ์™„๋ฃŒ)

์„œ๋น„์Šค๋ฅผ ์ œ๊ณต ์™„๋ฃŒํ•œ ๋งค๋‹ˆ์ €๊ฐ€ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์ž…ํ•˜์—ฌ ์ œ์ถœํ•˜๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ์ œ์ถœ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ API๊ฐ€ ์™„์„ฑ๋˜์ง€ ์•Š์•„ ์ œ์ถœ ๊ธฐ๋Šฅ์€ ๋˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ฐฐํฌ๊ฐ€ ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค!
๋กœ์ปฌ์—์„œ ํ…Œ์ŠคํŠธ ํ–ˆ์„ ๋• ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ์œผ๋‹ˆ..๐Ÿ˜‚

3-1. UI

์„œ๋น„์Šค ๊ฒฐ๊ณผ ๋ณด๊ณ  ํŽ˜์ด์ง€์ด๋ฏ€๋กœ ๊ณต๊ฐœ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค๐Ÿ™‚

3-2. ๊ธฐ๋Šฅ๊ตฌํ˜„

  • ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์˜ˆ์•ฝ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” id๊ฐ’์„ ํ™•์ธํ•˜์—ฌ, ํ•ด๋‹น ์˜ˆ์•ฝ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ๊ตฌํ˜„
    router.isReady๋ฅผ ์‚ฌ์šฉํ•ด ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ ‘๊ทผ
  • ์„œ๋น„์Šค ์ „๊ณผ ํ›„์˜ ์‚ฌ์ง„์„ S3์— ์—…๋กœ๋“œ, ๊ฐ๊ฐ์˜ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋„๋ก ๊ตฌํ˜„

3-3. ๋ฌธ์ œ ํ•ด๊ฒฐ

  • Cors Error
    Cross-Origin Resource Sharing
    ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ผ ์ถœ์ฒ˜๊ฐ€ ์•„๋‹ˆ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์„œ๋ฒ„์—์„œ ํ—ค๋”์— ํ—ˆ์šฉํ•  ์ถœ์ฒ˜๋ฅผ ๊ธฐ์žฌํ•ด ํด๋ผ์ด์–ธํŠธ์— ์‘๋‹ตํ•ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    ํฌ๋กฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•ด์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋Š”๋ฐ, ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ ๊ฐ™์•„ API๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ค๋Š” JSON ๋ฐ์ดํ„ฐ๋ฅผ mockdata๋กœ ๋งŒ๋“ค์–ด ํ…Œ์ŠคํŠธํ•ด๋ณด๊ณ , ๋ฐฐํฌํ•˜์—ฌ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์ข…์ข… ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ธ ๊ฑฐ ๊ฐ™์•„ ๊ธฐ์–ตํ•ด๋‘์–ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค!


    413 Request Entity Too Large
    ์„œ๋ฒ„์—์„œ ์ง€์ •ํ•œ ์šฉ๋Ÿ‰๋ณด๋‹ค ํฐ ์šฉ๋Ÿ‰์˜ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ ํ•ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  CTO๋‹˜๊ป˜ ๋ง์”€๋“œ๋ ธ๋Š”๋ฐ ์•Œ๊ณ ๋ณด๋‹ˆ ์—…๋กœ๋“œ ํ•  ๋ฒ„ํ‚ท ํŒจ์Šค๋ฅผ ์ž˜๋ชป ์ž…๋ ฅ์„ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•Œ๋งž์€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋‹ˆ ํ•ด๊ฒฐ๋œ..๐Ÿ˜‚

๐Ÿคฉ ๋ฐฐํฌ๊ฐ€ ๋˜์—ˆ๋‹ค !

์—ฌํƒœ ํ”„๋กœ์ ํŠธ๋“ค์„ ์ „๋ถ€ ๋กœ์ปฌ์—์„œ๋งŒ ๋ดค๋˜์ง€๋ผ ์‹ค์ œ๋กœ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ์ฒ˜์Œ์ด์–ด์„œ ์„ค๋ ˆ๊ธฐ๋„ ํ–ˆ๊ณ , ๋ฉ”์ธ์—์„œ ๋ฐ”๋กœ ์ด์–ด์ง€๊ณ  ๋งค์ถœ๊ณผ ์ง๊ฒฐ๋˜๋Š” ํŽ˜์ด์ง€์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธด์žฅ๋„ ์ปธ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ํ„ฐ์ ธ๋ฒ„๋ฆฐ date ํ˜•์‹์˜ input ๋ฌธ์ œ๋กœ ๋ฉ˜๋ถ•์ด ์™”์—ˆ๋„ค์š”๐Ÿ˜ข

๊ณ ๊ฐ์˜ ์˜ˆ์•ฝ์‹ ์ฒญ์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฉ”์‹œ์ง€๋กœ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ํ•˜๋‚˜ ๋‘˜์”ฉ ์˜ฌ๋ผ์˜ค๋Š” ์˜ˆ์•ฝ์™„๋ฃŒ ๋ฉ”์‹œ์ง€๊ฐ€ ๋œฐ ๋•Œ๋งˆ๋‹ค ์‹ ๊ธฐํ•˜๊ณ , ์ด ๋ง›์— ๊ฐœ๋ฐœํ•œ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์–ด์š”. ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์—ˆ๋˜ ์ด์œ  ์ค‘ ํ•˜๋‚˜์˜€๊ฑฐ๋“ ์š”.

์œ ์ €ํ”Œ๋กœ์šฐ๋ฅผ ๋‚˜๋ฆ„ ์‹ ๊ฒฝ์จ์„œ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์œผ๋ฏ€๋กœ, input ๋ฌธ์ œ๊นŒ์ง€ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚˜์„œ๋ถ€ํ„ฐ๋Š” ํ•  ์ผ์„ ๋‹ค ๋งˆ์ณค๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๊ทธ๊ฑด ํฌ๋‚˜ํฐ ์˜ค์‚ฐ์ด์—ˆ๋‹ค๋Š” ๊ฑฐ..

๋ฌธ์ œ๋ฐœ์ƒ ๋ฐ ํ•ด๊ฒฐ

1. ๐Ÿ™Žโ€โ™‚๏ธ๐Ÿ™Žโ€โ™€๏ธ : ํŒ์—…์ฐฝ์ด ๋ถˆํŽธํ•ด์š”.
์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ํŒ์—…์ฐฝ์ด ๋œจ๋„๋ก ํ–ˆ๋Š”๋ฐ ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ํŒ์—…์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์„ค์ •์— ๋“ค์–ด๊ฐ€์„œ ํ—ˆ์šฉํ•ด์ค˜์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์–ด ์ด ๋ถ€๋ถ„์ด ๋ถˆํŽธํ•˜๋‹ค๋Š” ๊ณ ๊ฐ์˜ ์˜๊ฒฌ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ธํ„ด์‹ญ ๋ง‰๋ฐ”์ง€์˜€์–ด์„œ ๊ทธ๋Ÿฐ์ง€ CTO๋‹˜์ด ํŒ์—…์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ฐ€๋Šฅํ•œ ์ง€ ์—ฌ๋ถ€๋งŒ ์•Œ์•„๋ณด๋ผ๊ณ  ํ•˜์…จ๋Š”๋ฐ, ๋ชจ๋‹ฌ์ฐฝ์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์ด๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๊ณ , ์ตœ๋Œ€ํ•œ ์ œ ์†์œผ๋กœ ๋๋‚ด๊ณ  ์‹ถ์–ด์„œ ๊ตฌํ˜„์„ ๋งˆ์นœ ํ›„ ๋ชจ๋‹ฌ์ฐฝ์ด ๋œจ๋„๋ก ๊ฐœ์„ ๋œ ํ™”๋ฉด์„ ๋ณด์—ฌ๋“œ๋ ธ๊ณ  ์ข‹์€ ๋ฐ˜์‘์„ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํŒ์—…์—์„œ ๋ชจ๋‹ฌ๋กœ

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

๋Š๋‚€ ์ 

1. ์งˆ๋ฌธ์„ ๋‘๋ ค์›Œ ํ•˜์ง€ ๋ง์ž.
CEO๋‹˜๊ป˜ ํ”„๋ก ํŠธ์—”๋“œ ์—…๋ฌด๋ฅผ ์—ฌ์ญค๋ณด๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์žฆ์€ ๋ฏธํŒ…์œผ๋กœ ๋ต™๊ธฐ๊ฐ€ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— CTO๋‹˜๊ณผ ๊ฐ™์ด ์žˆ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์—ˆ๋Š”๋ฐ CTO๋‹˜์€ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์ž˜ ๋ชจ๋ฅธ๋‹ค๊ณ  ํ•˜์…”์„œ ์ฝ”๋“œ๋ฅผ ์น˜๋‹ค๊ฐ€ ์–ด๋ ค์›€์ด ์žˆ์„ ๋•Œ ๋ˆ„๊ตฌ์—๊ฒŒ ์งˆ๋ฌธํ•ด์•ผํ•  ์ง€ ๋ง‰๋ง‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ๋กœ ์ง„ํ–‰ํ•œ ์„œ๋น„์Šค ๊ฒฐ๊ณผ ์ œ์ถœ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ S3์— ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ๋ฅผ ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜”์—ˆ๋Š”๋ฐ ํ˜ผ์ž ํ•˜๋ฃจ๋™์•ˆ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.
CTO๋‹˜๊ป˜์„œ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์–ด๋ ค์šด ์ ์€ ์—†์—ˆ๋ƒ๊ณ  ํ•˜์…”์„œ ๊ทธ์ œ์„œ์•ผ ๋ง์”€์„ ๋“œ๋ ธ๊ณ , ๋„ˆ๋ฌด๋‚˜๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ต์„ ์ฃผ์…”์„œ ๋ง‰ํ˜”๋˜ ์ง„ํ–‰์ด ์ˆ ์ˆ  ํ’€๋ฆฌ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
S3๋ฅผ ์ด์ „๋ถ€ํ„ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋˜์ง€๋ผ ๋‹น์—ฐํžˆ CTO๋‹˜๊ป˜ ์—ฌ์ญค๋ดค์œผ๋ฉด ๊ธˆ๋ฐฉ ํ•ด๊ฒฐํ–ˆ์„ํ…๋ฐ ์ด ๋ถ€๋ถ„์„ ๊ฐ„๊ณผํ•˜๊ณ  ํ˜ผ์ž ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์„ ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.
ํ›„์—๋Š” ํ˜ผ์ž ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ๊นŒ์ง€ ํ•ด๋ณด๊ณ , ๊ทธ๋Ÿผ์—๋„ ํ•ด๊ฒฐ์ด ์–ด๋ ค์šธ ๋•Œ์— ์–ด๋– ํ•œ ๋ฌธ์ œ์—์„œ ์–ด๋””๊นŒ์ง€ ํ•ด๋ดค๋Š”๋ฐ๋„ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ๋ง์”€์„ ๋“œ๋ฆฌ๋ฉฐ ์งˆ๋ฌธ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒํ•˜๋‹ˆ ํ˜ผ์ž ํ•˜๋ฃจ ๊ผฌ๋ฐ• ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๊ณ  ๋ช…์พŒํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์„œ๋กœ ์ž˜ ๋ชจ๋ฅด๋Š” ๋ฌธ์ œ๋ผ๋ฉด ํ•จ๊ป˜ ๊ณ ๋ฏผํ•˜๋ฉฐ ํ•ด๊ฒฐํ•ด์ฃผ๋ ค๊ณ  ํ•˜์…”์„œ ๊ฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!
๋‚˜์ค‘์— ์•Œ๊ฒŒ ๋œ ๊ฒƒ์ด, ์„œ๋ฒ„์—์„œ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์‰ฝ๊ฒŒ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„๋„ ํ˜ผ์ž ๋™๋™๊ฑฐ๋ฆฌ๋ฉฐ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์—ˆ๋”๋ผ๊ณ ์š”. ์ด ๋•Œ ํŒ€์›๊ณผ์˜ ์†Œํ†ต์˜ ์ค‘์š”์„ฑ๋„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค๐Ÿ™‚

2. ์œ ์ €์˜ ํ–‰๋™์ด ๋‚˜์™€ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ๋ง์ž.
์ €๋Š” ์Šค์Šค๋กœ UI/UX๋ฅผ ์‹ ๊ฒฝ์จ์„œ ๊ณ„ํšํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ ๋ฐฐํฌ ๊ฒฝํ—˜์œผ๋กœ ๊ฐœ๋ฐœ์ž์ธ ๋ณธ์ธ ์œ„์ฃผ๋กœ ์ƒ๊ฐ์„ ๋งŽ์ด ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ ๋ฒ„๊ทธ๊ฐ€ ์œ ์ €์—๊ฒŒ ๋ถˆํŽธํ•จ์„ ๋Š๋ผ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ฑฐ๋‹ˆ์™€, ๋ถˆํŽธํ–ˆ์„ ํŒ€์›๋“ค์—๊ฒŒ๋„ ์ฃ„์†กํ•œ ๋งˆ์Œ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜ญ
์„ค๋งˆ ์œ ์ €๊ฐ€ ์ด๋ ‡๊ฒŒ๊นŒ์ง€ ํ–‰๋™ํ•˜๊ฒ ์–ด? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค๋ฉด ๊ทธ๋ƒฅ ๋„˜๊ธฐ์ง€ ๋ง๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผ๊ฒ ์Šต๋‹ˆ๋‹ค.

3. ์ง์ ‘ ํ•ด๋ด์•ผ ๋Š”๋‹ค.
next.js์™€ typescript๋Š” ํ˜‘์—…์—์„œ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด ๋ณด์•˜๋Š”๋ฐ, ํ˜‘์—…์— ๋‚˜์„œ๊ธฐ ์ „์— ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ๊ณต๋ถ€๋ฅผ ํ•˜๊ธด ํ–ˆ์ง€๋งŒ ์—ญ์‹œ๋‚˜ ์ง์ ‘ ํ•ด๋ณด๋Š” ๊ฒƒ๋งŒํผ ์ข‹์€ ๊ฒƒ์ด ์—†๋‹ค๋Š” ๊ฑธ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฏธ ๋‹ค๋ฅธ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ถ„์ด ์งœ๋‘” ์ฝ”๋“œ๊ฐ€ ์žˆ์–ด ๊ทธ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉฐ ์™œ ์ด๋ ‡๊ฒŒ ์ง  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผํ•ด๋ณด๊ณ , ์ง์ ‘ ์ ์šฉํ•ด๋ณด๊ธฐ๋„ ํ•˜๊ณ , ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋“ค์„ ํ•ด๊ฒฐํ•˜๋ฉฐ ๊ฐ•์˜์—์„œ๋Š” ๋ณด์ง€ ๋ชปํ•œ ์ง€์‹์„ ์Šต๋“ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค๐Ÿ™‚

์•„์‰ฌ์› ๋˜ ๊ฒƒ์€

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

2. ๋‚จ๋“ค์—๊ฒŒ ์ดํ•ด๊ฐ€ ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ณค๋Š”๊ฐ€
์œ ์ €๋‚˜ ํŒ€์›๋“ค์—๊ฒŒ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์งœ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์€๋ฐ ๋‚˜๋Š” ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด์—ˆ๋Š”๊ฐ€? ์Šค์Šค๋กœ ๋ฌป๋Š”๋‹ค๋ฉด ์•„๋‹ˆ์—ˆ๋‹ค๊ณ  ๋‹ตํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ์Šต๋‹ˆ๋‹ค..
์ ์  ๋Š˜์–ด๋‚˜๊ณ  ์ชผ๊ฐœ์ง€๋Š” ๋ณ€์ˆ˜๋กœ ๋ณ€์ˆ˜๋ช…์„ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•  ์ง€ ๋ชจ๋ฅด๊ฒ ๊ณ , ๊ทธ ๊ณผ์ •์— ๋‚˜๋งŒ ์•Œ ์ˆ˜ ์žˆ๋Š”, ๋ช…ํ™•ํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ณ์˜จ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ฆฌํŒฉํ† ๋งํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ์—†์—ˆ๋‹ค๊ณ  ํ•˜๋ฉด ๋ณ€๋ช…์ด๊ฒ ์ฃ ?๐Ÿ˜ข ์Šค์Šค๋กœ ์ฐ์ฐํ•œ ์ฝ”๋“œ๋กœ ํ˜‘์—…์„ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒŒ ๋˜์–ด ์•„์‰ฌ์›€์ด ๋‚ฉ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘๊ฒฐ๊ณผ

์„œ๋น„์Šค ์˜ˆ์•ฝ ํŽ˜์ด์ง€๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•œ ์ดํ›„ ์˜ˆ์•ฝ๊ฑด์ˆ˜๊ฐ€ ์ „ํ™˜ ์ „ ๋Œ€๋น„ 1.5๋ฐฐ ์ƒ์Šนํ•˜์˜€์Šต๋‹ˆ๋‹ค. First Paint๊ฐ€ 2.6์ดˆ์—์„œ 1.0์ดˆ๋กœ, Speed Index๋Š” 3.5์ดˆ์—์„œ 1.3์ดˆ๋กœ ๋‹จ์ถ•๋˜์—ˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค!
์กฐ๊ธˆ ๋” ์„ฑ๋Šฅ์„ ๋†’์ด๋Š” ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ ๊ทธ๋Ÿฌ์ง€ ๋ชปํ•ด ์•„์‰ฝ์Šต๋‹ˆ๋‹ค.

์ž˜ํ•œ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด

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

๊ทธ ๊ฒฐ๊ณผ ํ•˜๋‚˜๋Š” ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐฐํฌ๊ฐ€ ๋˜์—ˆ๊ณ , ๊ฒฐ๊ณผ ์ œ์ถœ ํŽ˜์ด์ง€๋Š” ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์‹ค์ œ ๋ฐฐํฌ๋ฅผ ํ•˜์ง„ ๋ชป ํ–ˆ์ง€๋งŒ ํผ ์ œ์ถœ API๋งŒ ์žˆ๋‹ค๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก QA๊นŒ์ง€ ์ง„ํ–‰ํ•˜์—ฌ ์™„์„ฑํ•ด ๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๋งŒ๊ฐ„ ์™„์ „ํžˆ ๋ฐฐํฌ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค!

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

์•ž์œผ๋กœ์˜ ๋ชฉํ‘œ

์šฐ์„ , ์ ์šฉํ•˜์ง€ ๋ชปํ•œ Context API๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฐฐํฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒ ์ง€๋งŒ ํ•™์Šต์„ ๋ชฉ์ ์œผ๋กœ ํ˜ผ์ž ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

profile
ํ‹ฐ๋ชจ๋ˆ„๋‚˜์˜ˆ์š”๐Ÿถ

0๊ฐœ์˜ ๋Œ“๊ธ€