๐ŸŒˆ[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ๋ธŒ์ฝ”์Šค ํšŒ๊ณ  (4)

์ž„์ง€์„ ยท2023๋…„ 10์›” 4์ผ
2
post-thumbnail

๐Ÿ€ ๊ฟ€๋งค ํฌ์ฒญ์ฒœ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

๐Ÿš€ 9์›” - ์ค‘๊ฐ„ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

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


๐Ÿš€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „

๋‹น์‹œ ์šฐ๋ฆฌ ํŒ€์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋งŽ์€ ํšŒ์˜ ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋‹ค. ๊ฒฐ์ •ํ•ด์•ผํ•  ์‚ฌํ•ญ๋“ค์ด ๋งŽ์•˜์œผ๋ฉฐ, ์ดˆ๊ธฐ ์„ธํŒ…์„ ํŠผํŠผํžˆ ํ•œ ๋งŒํผ ์•ž์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ํŽธํ•ด์งˆ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋งŒ ์ข€ ๋Š˜์–ด์ง€๋Š” ๊ฐ์ด ์žˆ์–ด ๋‹ค๋ฅธ ํŒ€๋“ค์ด ๊ฐœ๋ฐœ์— ์‹œ์ž‘ํ–ˆ์„ ๋•Œ๊นŒ์ง€๋„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•„ ์กฐ๊ธˆ ์กฐ๊ธ‰ํ•œ ๋งˆ์Œ๋„ ๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ์ •ํ•œ ์‚ฌํ•ญ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.

<๋ชฉ๋ก>

  • ๊ฐœ์ธ ๋ชฉํ‘œ ๋ฐ ํŒ€ ๋ชฉํ‘œ ๊ณต์œ ํ•˜๊ธฐ
  • ๊ธฐํš ์ง„ํ–‰ํ•˜๊ธฐ
  • ๋””์ž์ธ ์ž‘์—…ํ•˜๊ธฐ
  • ์ปจ๋ฒค์…˜ ๋ฐ ํด๋” ๊ตฌ์กฐ ์ •ํ•˜๊ธฐ
  • ๊ธฐ์ˆ  ์Šคํƒ ์ •ํ•˜๊ธฐ
  • ์—ญํ•  ๋ถ„๋‹ดํ•˜๊ธฐ

๋ชฉํ‘œ

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

๊ธฐํš

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

๋””์ž์ธ

๋””์ž์ธ ์ž‘์—…์—์„œ๋Š” ๋””์ž์ธ ์ด๊ด„ ์—ญํ• ์„ ๋งก๊ฒŒ ๋œ 2๋ช…์ด ๋ฉ”์ธ์ด ๋˜์–ด ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ ๋งŽ์€ ์ถฉ๋Œ๊ณผ ๊ณ ๋ฏผ์˜ ์‹œ๊ฐ„์ด์—ˆ๋‹ค. ๋””์ž์ธ ์ด๊ด„์ธ 2๋ช…์˜ ์„ฑํ–ฅ์ด ๋งค์šฐ ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ์—์„œ ๋ณผ ์ˆ˜ ์žˆ์–ด ๋””์ž์ธ์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๋Š”๋ฐ ๊ธฐ์—ฌํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด์„œ ๋А๋‚€ ์ ์€ ๋””์ž์ธ์ด ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ ์•„๋‹ˆ์ง€๋งŒ, ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์™€๋‹ฟ๋Š” ๋ถ€๋ถ„์ธ ๋งŒํผ ์—ฌ๋Ÿฌ ์ธก๋ฉด์—์„œ ๊ณ ๋ คํ•ด ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ์ ์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋А๊ผˆ๋‹ค.

์ปจ๋ฒค์…˜ ๋ฐ ํด๋” ๊ตฌ์กฐ

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

<์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๊ทœ์น™>

  • ๐ŸŽ‰ (tada) ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ๐Ÿ› (bug) ๋ฒ„๊ทธ ์ˆ˜์ •
  • ๐Ÿšง (construction) ์ž‘์—… ์ง„ํ–‰ ์ค‘
  • ๐Ÿ“ (memo) ๋ฌธ์„œ ์ž‘์„ฑ
  • ๐Ÿงช (test_tube) ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
  • โœจ (sparkles) ๋ฆฌํŒฉํ† ๋ง
  • ๐Ÿ”ฅ (fire) ์ฝ”๋“œ ์‚ญ์ œ
  • ๐Ÿงน (broom) ์ฝ”๋“œ ์ •๋ฆฌ - lint
  • ๐Ÿšš (truck) ํŒŒ์ผ ์ด๋™

์ฐธ๊ณ  ๋งํฌ

๊ทธ ์™ธ์—๋„ ์ฃผ์— 1๋ฒˆ ์”ฉ splint ํšŒ์˜๋ฅผ ๊ฐ€์ ธ ๊ทธ๋™์•ˆ develop์— mergeํ•œ ๋‚ด์šฉ๋“ค์„ release branch์— mergeํ•ด ๋ฐฐํฌํ•ด๋ณด๊ณ , ์—๋Ÿฌ ์‚ฌํ•ญ๋“ค์„ ์ฐพ๋Š” ์ž‘์—…๋„ ์ง„ํ–‰ํ–ˆ๋‹ค.

<๋ธŒ๋žœ์น˜ ๊ทœ์น™>

  • main : ๋งˆ์ง€๋ง‰์— ๋ฐฐํฌ๋˜๋Š” ๋ธŒ๋žœ์น˜ release 1.0.0
  • develop : feature๋ธŒ๋žœ์น˜์—์„œ merge๋˜๋Š” ๋ธŒ๋žœ์น˜
  • release : ๋งค์ฃผ ์Šคํ”„๋ฆฐํŠธ ํ›„ ๋ฐฐํฌ๊ฐ€ ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • feat : ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜

ex_)feat-1(์ด์Šˆ๋ฒˆํ˜ธ)-login__button

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” github flow๋ฅผ ์‚ด์ง ๋ณ€ํ˜•์‹œ์ผœ ํ™œ์šฉํ–ˆ๋‹ค.

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

atomic ๋””์ž์ธ ํŒจํ„ด์„ ์ปดํฌ๋„ŒํŠธ์— ์ ์šฉ

Services โ†’ APIํ˜ธ์ถœ ๋‹ด๋‹น

Components/UI โ†’ ๊ณตํ†ต๋œ ์ปดํฌ๋„ŒํŠธ(๋กœ์งX)

Components/Services โ†’ ์„œ๋น„์Šค ๋กœ์ง๊ณผ ์—ฎ์ธ ์ปดํฌ๋„ŒํŠธ

Templates๊นŒ์ง€๋Š” ์Šคํƒ€์ผ์  ์š”์†Œ๋งŒ โ†’ Pages์—์„œ ๋กœ์ง์ด ๋“ค์–ด๊ฐ€๊ฒŒ

์ปดํฌ๋„ŒํŠธํด๋” ์•ˆ์— ์Šคํ† ๋ฆฌ๋ถ ํŒŒ์ผ๊ณผ SCSSํŒŒ์ผ ๋ชจ๋‘ ๋„ฃ๊ธฐ

ex) ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ ํด๋”์—๋Š” ์Šคํ† ๋ฆฌ๋ถ + SCSS + ์ปดํฌ๋„ŒํŠธ ์ž์ฒด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

apiํ˜ธ์ถœ์€ app/services์—์„œ ์—ญํ• ์„ ๋‹ด๋‹น

Atomic Design ๊ด€๋ จ ์ฐธ๊ณ  ์ž๋ฃŒ

๊ธฐ์ˆ  ์Šคํƒ

  • Next.js 13
  • SCSS
  • Axios
  • Tanstack Query
  • Zustand
  • Vercel
  • Storybook

์—ญํ•  ๋ถ„๋‹ด

  • ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…
  • ๋””์ž์ธ (2)
  • ๋…ธ์…˜ ๊ธฐ๋ก
  • ๊นƒํ—ˆ๋ธŒ ๊ด€๋ฆฌ




๐Ÿš€ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘

ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ conflict๋ฅผ ๋งŽ์ด ๊ฒช์–ด๋ณด๊ณ  ํ•ด๊ฒฐํ•ด๋ณด๋ฉด์„œ ์ต์ˆ™ํ•ด์ง€๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ๊ทธ ๋ฐ”๋žจ๋Œ€๋กœ ํ›„๋ฐ˜์œผ๋กœ ๊ฐ€๋ฉด ๊ฐˆ์ˆ˜๋ก conflict๋ฅผ ๋งŽ์ด ๊ฒช๊ณ , ํ•ด๊ฒฐํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค. ์Šค์Šค๋กœ์˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ conflict๋Š” ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์•˜์œผ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ์™€์˜ conflict๋Š” ์‹ ์ค‘ํ•˜๊ฒŒ ๋‹ค๋ค„์•ผ ํ–ˆ๊ณ , ์ž˜๋ชป ํ•ด๊ฒฐํ•˜๋Š” ์ˆœ๊ฐ„ ๊ทธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๊ฐ€ ์‚ญ์ œ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ฝ”๋“œ๋กœ merge๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ๊ทธ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํŒ€์›๊ณผ ์†Œํ†ตํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•  ๊ฒฝ์šฐ ๋ช‡ ๋ถ„ ๋‚ด๋กœ ํ•ด๊ฒฐ์ด ๊ฐ€๋Šฅํ–ˆ์œผ๋ฉฐ, ํ›จ์”ฌ ์‰ฝ๊ณ  ์ˆ˜์›”ํ–ˆ๋‹ค.
์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ๊ฒช์—ˆ๋˜ ์ผํ™” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค.

api response ํ˜•ํƒœ

api ๋ช…์„ธ์„œ์—์„œ response์— ์–ด๋– ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ์ง€ ๋‚˜์™€์žˆ์—ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ์„ 100% ๋ฏฟ์œผ๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์› ๋‹ค. ๊ทธ ์ „๊นŒ์ง€๋Š” ํ•ญ์ƒ api ๋ช…์„ธ์„œ๋Œ€๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์„ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๋ฉฐ ์ง์ ‘ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด์„œ ์—๋Ÿฌ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ ๊ทธ ์ด์œ ๊ฐ€ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์†Œํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค.
์˜ˆ์‹œ๋กœ response ํ˜•ํƒœ๋กœ User ๊ฐ์ฒด๊ฐ€ ์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋‹ค.

User

{
  "coverImage": String, // ์ปค๋ฒ„ ์ด๋ฏธ์ง€
  "image": String, // ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
  "role": String,
  "emailVerified": Boolean, // ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ
  "banned": Boolean, // ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ
  "isOnline": Boolean,
  "posts": Post[],
  "likes": Like[],
  "comments": String[],
  "followers": [],
  "following": [
    {
      "_id": "6169e91316cb2265df003c6d",
      "user": "6169e58216cb2265df003bf4",
      "follower": "6169e206aa57d952c6dc1edd",
      "createdAt": "2021-10-15T20:48:19.816Z",
      "updatedAt": "2021-10-15T20:48:19.816Z",
      "__v": 0
    }
  ],
  "notifications": Notification[],
  "messages": Message[],
  "_id": String,
  "fullName": String,
  "email": String,
  "createdAt": String,
  "updatedAt": String
}

api ๋ช…์„ธ์„œ๋Œ€๋กœ๋ผ๋ฉด response๋กœ User ๊ฐ€ ์˜ฌ ๋•Œ ์ €๋Ÿฐ ํ˜•ํƒœ๋กœ ์™€์•ผ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“  ๊ฒฝ์šฐ์—์„œ ์ €๋Ÿฐ ํ˜•ํƒœ๋กœ ์˜ค์ง€ ์•Š์•˜๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” User ๊ฐ์ฒด๊ฐ€ ์˜จ๋‹ค๊ณ  ํ–ˆ์ง€๋งŒ, User ๊ฐ์ฒด ์ค‘ _id ๊ฐ’๋งŒ string์œผ๋กœ ์˜จ ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ๋‹ค. ๋ณดํ†ต object๊ฐ€ ์™€์•ผ ํ•˜๋Š”๋ฐ string์œผ๋กœ id๊ฐ’๋งŒ ์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. ์ด๋Š” ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์•Œ๋ ค์ฃผ์…จ๋Š”๋ฐ ํ•ญ์ƒ ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ํšจ์œจ์ ์ด์ง€ ์•Š์•„์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ•์†Œํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ˜„์—…์—์„œ๋Š” ๋งŽ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋•Œ๋งˆ๋‹ค ๊ทธ์— ๋งž๋Š” type์„ ์„ค์ •ํ•ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด ๊ฐœ๋ฐœํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์กฐ์–ธํ•ด์ฃผ์…จ๋‹ค. ์ฒ˜์Œ์—๋Š” ์ด๋ฅผ ๋ชจ๋ฅด๊ณ  ๋ช…์„ธ์„œ๋งŒ ๋ฏฟ๊ณ  ๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ type error๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์žˆ์–ด์•ผ ํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ ์ด๋ฅผ ์•ˆ ๋’ค๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ํ™•์ธํ•œ ๋’ค ๊ทธ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊พธ๊ฒŒ ๋˜์—ˆ๋‹ค.

usequery

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

  • ํšŒ์›๊ฐ€์ž… ํ›„ ๋ฐ”๋กœ ๋ฐ˜์˜๋˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด query key๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ค€๋‹ค.
  • ์ด๋•Œ query key๋Š” ๊ธฐ์กด์˜ ํ‚ค์— current user ์˜ User ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€๋กœ ์ค€๋‹ค.
  • ํšŒ์›๊ฐ€์ž… ํ›„ ์‚ฌ์ด๋“œ๋ฐ”์— ์žˆ๋Š” ์ „์ฒด ํšŒ์› ๋ชฉ๋ก์— ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์—ˆ๋‹ค.(๋ฌธ์ œ ํ•ด๊ฒฐ)
  • ๊ณ„์ • ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ ๋’ค ์ˆ˜์ •๋œ ๋‹‰๋„ค์ž„ ๋˜๋Š” ํ”„๋กœํ•„ ์‚ฌ์ง„์ด ์‚ฌ์ด๋“œ๋ฐ”์— ๋ฐ”๋กœ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.(์ถ”๊ฐ€ ๋ฌธ์ œ ๋ฐœ์ƒ)
  • ๋ณดํ†ต query key์—๋Š” object๋ฅผ ์ฃผ์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.(์ถ”๊ฐ€ ์ •๋ณด ํš๋“)
  • current user์˜ User ๊ฐ์ฒด ๋Œ€์‹  _id๋งŒ string ๊ฐ’๋งŒ ์ถ”๊ฐ€๋กœ ์ค€๋‹ค.(์ถ”๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•)
  • ํšŒ์›๊ฐ€์ž… ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ ๊ณ„์ • ์ •๋ณด ์ˆ˜์ •์€ ์—ฌ์ „ํžˆ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.(์ด์œ  : id๋Š” ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ query key๋กœ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋จ)
  • ๊ทธ๋ ‡๋‹ค๊ณ  query key์— ๋‹‰๋„ค์ž„๊ณผ ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ์ถ”๊ฐ€๋กœ ๋” ์ฃผ๋Š” ๊ฒƒ์€ ๋ญ”๊ฐ€ ๋น„ํšจ์œจ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๋ชจ์ƒ‰ ์ค‘(์ˆ˜์ •๋ถ€ํ„ฐ๋Š” ๋‹ค๋ฅธ ํŒ€์›์ด ๋งก์Œ)
  • reload ํ•˜๊ธฐ / next js์˜ ISR๋ฐฉ์‹์„ ๋„์ž…ํ•˜๊ธฐ ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ์ตœ์ข…์ ์œผ๋กœ๋Š” ์‹œ๊ฐ„์  ๋ฌธ์ œ๋กœ reload๋กœ ํ•ด๊ฒฐํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
// ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•๋“ค - query key์— ๋ณ€ํ•˜๋Š” ๊ฐ’๋“ค์„ ๋„ฃ์–ด์ฃผ๊ธฐ
import { useQuery } from '@tanstack/react-query'
import { useCurrentUser } from '@/hooks/useCurrentUser'
import { getAllUsers } from '@/services/user'
import { UserSummary } from '@/types/user'

const useGetAllUsers = () => {
  const { currentUser } = useCurrentUser()
  return useQuery({
    queryKey: [
      'getAllUsers',
      currentUser?._id,
      currentUser?.coverImage,
      currentUser?.fullName,
      currentUser?.name,
    ],
    queryFn: async () => {
      const data: UserSummary[] = await getAllUsers()
      return data
    },
  })
}

export default useGetAllUsers
// ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•๋“ค - reload ํ•˜๊ธฐ 
return (
    <form
      onSubmit={handleSubmit(async (data) => {
        try {
          await editProfile(data)
          setCurrentName(data.fullName)
          notify('success', '๋‹‰๋„ค์ž„์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.')
          setValue('fullName', '')
          location.reload()
        } catch (error) {
          notify('error', '๋‹‰๋„ค์ž„ ์ˆ˜์ •์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.')
        } finally {
          location.reload()
        }
      })}
      style={{ display: 'flex', justifyContent: 'space-between' }}
    >
... ์ค‘๋žต ...

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




๐Ÿš€ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚œ ๋’ค

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚œ ๋’ค ํŒ€ ํšŒ๊ณ ๋ฅผ ํ•˜๋ฉด์„œ ๋ฐ˜์„ฑํšŒ ๊ฒธ ์ข‹์•˜๋˜ ์ ๋“ค์„ ๋งํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋Š”๋ฐ ๋‹ค๋“ค ๋น„์Šทํ•œ ์ƒ๊ฐ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฒƒ์— ์กฐ๊ธˆ ๋†€๋ž๋‹ค. ๋‚˜๋งŒ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•œ ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๊ตฌ๋‚˜ ๋ž€ ์ƒ๊ฐ์— ์ง„์ž‘ ๋งํ–ˆ์œผ๋ฉด ์ข‹์•˜์„๊ฑธ ํ•˜๋Š” ์ƒ๊ฐ๋„ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
๊ฐ€์žฅ ์•„์‰ฌ์šด ์ ์œผ๋กœ ๋‚˜๋ฅผ ํฌํ•จํ•ด ๋‹ค๋“ค 2๊ฐ€์ง€๋ฅผ ๋ฝ‘์•˜๋Š”๋ฐ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ธฐํš

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

์†Œํ†ต & ์งˆ๋ฌธ

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

๊นƒํ—ˆ๋ธŒ ๋งํฌ
๋ฐฐํฌ ๋งํฌ

profile
์„ฑ์žฅํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

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