2023.09.01 ~ 2023.09.27 ์•ฝ ํ•œ๋‹ฌ๋™์•ˆ ์ง„ํ–‰ํ–ˆ๋˜, ํ”„๋กœ์ ํŠธ ์•™๊ณจ๋ผ์— ๋Œ€ํ•œ ํšŒ๊ณ 


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

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

์•™๊ณจ๋ผ ํŽ˜์ด์ง€


๐Ÿฅš ์•™๊ณจ๋ผ ํŒ€

์šฐ๋ฆฌ ํŒ€์€ ๋‚˜๋ฅผ ํฌํ•จ ์ด 5๋ช…์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๋‹ค. ํŒ€์› ์ค‘ ๋””์ž์ธ์„ ๋งค์šฐ ์ž˜ํ•˜์‹œ๋Š” ๋ถ„์ด ๊ณ„์…”์„œ ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๊ท€์—ฌ์šด ์•™๊ณจ๋ผ ์บ๋ฆญํ„ฐ๊ฐ€ ํƒ„์ƒํ•˜์˜€๋‹ค. (๊ฑฐ์˜ ํŒŒ์›Œ๋ ˆ์ด์ €์ธ์ค„...)
๋‚˜๋Š” ๋‚ด ์ตœ์•  ์ปฌ๋Ÿฌ ๋ฏผํŠธ!!(์ดˆ๋ก ์•„๋‹˜)

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


๐Ÿฃ ๊ธฐ์ˆ  ์Šคํƒ

TS + React + Vite๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๊ณ , CSS style๋กœ๋Š” Emotion์„ ์„ ํƒํ•˜์˜€๋‹ค.
์ถ”๊ฐ€๋กœ code format์„ ์œ„ํ•ด ESLint์™€ Prettier์„ ์‚ฌ์šฉํ–ˆ๊ณ , HTTP ํ†ต์‹ ์„ ์œ„ํ•œ axios, ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด recoil, data fetching๋ฅผ ์œ„ํ•œ react quary ๋“ฑ์„ ์‚ฌ์šฉํ•˜์˜€๊ณ , vercel๋กœ ๋ฐฐํฌํ•˜์˜€๋‹ค.

css style์€ ๋น ๋ฅธ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ฐœ์ธ์ ์œผ๋กœ tailwind๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ tailwind์— ์ต์ˆ™ํ–ˆ๋˜ ํŒ€์› ๋ถ„์ด ์—†์œผ์…จ๊ณ , ๋Œ€๋ถ€๋ถ„ emotion์„ ์„ ํ˜ธํ•˜์…จ๋‹ค. ๋‚˜๋„ ์ต์ˆ™ํ•˜์ง€ ์•Š์•˜๋˜ emotion์„ ๋‹ค๋ค„๋ณด๊ณ  ์‹ถ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์„ ํƒํ•˜์˜€์ง€๋งŒ, ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ๋งŒ์กฑ!
tailwind๋Š” ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ํ•œ ๋ˆˆ์— ์•ˆ๋“ค์–ด ์˜ฌ ๋•Œ๊ฐ€ ์ข…์ข… ์žˆ๋Š”๋ฐ, CSS-in-JS์ธ emotion์€ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ช… ์—†์ด ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ์Šคํƒ€์ผ์„ ์บก์Аํ™”ํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์—ฌ์ฃผ์—ˆ๋‹ค.

Typescript๋กœ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ ๊ฒƒ์ด ์ฒ˜์Œ์ด์–ด์„œ, ๊ฑฑ์ •์ด ๋งŽ์ด ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ๋„ˆ๋ฌด ๋‹น์—ฐํ•˜๊ฒŒ typescript๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด ๋†€๋ž๋‹ค! (๋“œ๋””์–ด ์กฐ~๊ธˆ TS์— ์ต์ˆ™ํ•ด์กŒ๊ตฌ๋‚˜...! ๋Œ€๋‹จํ•ด ๋‚˜ ์ž์‹ ๐Ÿ˜‡) ์‚ฌ์‹ค ๊ทธ๋ƒฅ ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„์ด ๋‚˜์˜ฌ ๋•Œ๋งˆ๋‹ค ๊น”์ง๊น”์ง ๊ฒ€์ƒ‰ํ•˜๋ฉฐ ๋•œ๋นต ๋–ผ์šฐ๋Š” ์‹์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋А๋‚Œ์ด ์—†์ž–์•„ ์žˆ์—ˆ๊ธฐ์— ์žฌ๋Œ€๋กœ ํ•™์Šต์„ ํ•ด์•ผ๋  ๊ฒƒ ๊ฐ™๋‹ค!

์šฐ๋ฆฌ ์†Œ์ค‘ํ•œ ์•™๊ณจ๋ผ ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘์—… Tool๋กœ๋Š” Slack, Notion, Github๊ณผ Discode, ๋””์ž์ธ์„ ์œ„ํ•œ Figma๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.
ํ”„๋กœ์ ํŠธ์— ์—ด์ค‘๋˜์–ด ์ƒˆ๋ฒฝ 2์‹œ๊นŒ์ง€ ํšŒ์˜ํ–ˆ๋˜ ์•™๊ณจ๋ผ ํŒ€ ๋„ˆ๋ฌด ๋ฉ‹์žˆ๊ณ  ์ž๋ž‘์Šค๋Ÿฝ๋‹ค๐Ÿ˜ค


๐Ÿฅ ๊ฐœ๋ฐœ ๋ฌธํ™”

๋ณธ๊ฒฉ์ ์ธ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘์— ์•ž์„œ, ์•™๊ณจ๋ผ ํŒ€์›๋“ค๊ณผ ๊ฐœ๋ฐœ ๋ฌธํ™” ๋ฐ ์ปจ๋ฒค์…˜์„ ์ •ํ•˜์˜€๋‹ค. ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋Ÿฐ ๊ทœ์น™์„ ์ •ํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ฒ˜์Œ์ด์–ด์„œ ์ƒ์†Œํ•˜์˜€๊ณ , ์ƒ๊ฐ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ ์ •ํ•˜์—ฌ์„œ ๋†€๋ž๋‹ค๐Ÿ˜ณ ์ด๋Ÿฐ ์†Œ์ค‘ํ•œ ๊ฒฝํ—˜์„ ๊ฐ„๋‹จํžˆ ์ ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

Branch ์ „๋žต

main ๋ธŒ๋žœ์น˜๋Š” ๊ฑด๋“ค์ง€ ์•Š๊ณ , dev ๋ธŒ๋žœ์น˜๋ฅผ ํŒ ํ›„, ๊ฐ ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ dev์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ถ„๊ธฐ์‹œ์ผฐ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์ด ์™„๋ฃŒ๊ฐ€ ๋˜๋ฉด dev๋กœ PR์„ ๋‚ ๋ฆฐ ํ›„, mergeํ•˜์—ฌ ๊ด€๋ฆฌํ•˜์˜€๊ณ , main ๋ธŒ๋žœ์น˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฐฐํฌ ์ „์— mergeํ•˜์˜€๋‹ค.

main > dev > feature (๊ธฐ๋Šฅ ๋‹จ์œ„)

๋˜ํ•œ, feat/#์ด์Šˆ๋ฒˆํ˜ธ/๊ธฐ๋Šฅ๋ช…์™€ ๊ฐ™์ด ๋ธŒ๋žœ์น˜๋ฅผ ๋ช…๋ช…ํ•˜๋Š” ๊ทœ์น™๋„ ์ •ํ•˜์˜€๋‹ค.

Commit ๊ทœ์น™

์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ํ˜•์‹: prefix: #์ด์Šˆ๋ฒˆํ˜ธ - ์ปค๋ฐ‹๋ฉ”์„ธ์ง€
prefix๋Š” init, feat, refactor, fix ๋“ฑ ํŒ€์›๋“ค๊ณผ ํšŒ์˜๋ฅผ ํ†ตํ•ด ์•™๊ณจ๋ผ๋งŒ์˜ ๊ทœ์น™์„ ์ •ํ–ˆ๋‹ค.
๋˜ํ•œ ์ปค๋ฐ‹์„ ์ž์ฃผ ํ•˜์ž๋Š” ๊ทœ์น™์„ ์ •ํ–ˆ๋Š”๋ฐ, ์ด์ „๊นŒ์ง€ ์ปค๋ฐ‹์„ ๊ฑฐ์˜ ํ•˜์ง€ ์•Š์•˜๋˜ ๋‚˜์—๊ฒŒ๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•œ ๊ทœ์น™์ด์—ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋‚˜๋ˆ„์–ด ์ปค๋ฐ‹์„ ๋งŽ์ด ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค!

๊ฐœ๋ฐœ ์ˆœ์„œ

Issue ํŒŒ๊ธฐ > Kanban ๋ณด๋“œ > ๊ฐœ๋ฐœ > Commit > Push > PR > Merge > Issue ๋‹ซ๊ธฐ > Kanban ๋ณด๋“œ

Issue์™€ PR์€ ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•จ์œผ๋กœ ํ˜‘์—… ๊ฐ„ ํ†ต์ผ์„ฑ์„ ์œ ์ง€ํ•˜์˜€๋‹ค.

๋จธ์ง€ ๋ฐ์ด

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


์ด์™ธ์—๋„ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋‚˜ code ๊ทœ์น™์„ ์ •ํ•จ์œผ๋กœ์„œ ํ†ต์ผ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ํ˜‘์—… ๋Šฅ๋ ฅ์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

๐Ÿ“ API ์„ค๊ณ„

์ฒซ ์Šคํ”„๋ฆฐํŠธ๋กœ API Hook์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์ฃผ์–ด์ง„ API ์ค‘์—์„œ ์šฐ๋ฆฌ์—๊ฒŒ ํ•„์š”ํ•œ API๋ฅผ ์„ ์ •ํ•˜๊ณ , ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„๋กœ ๋ถ„๋ฐฐํ•˜์—ฌ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.

apis ํด๋” ์•ˆ์— ์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„๋กœ api ํŒŒ์ผ์„ ๋‚˜๋ˆ„์—ˆ๊ณ , ๊ฐ ํŒŒ์ผ ์•ˆ์—์„œ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ api hook๋“ค์„ ์ •์˜ํ•˜์˜€๋‹ค.
๋ถ„๋ฆฌ๋œ axios instance๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ react-query๋ฅผ ์ ์šฉ์‹œ์ผฐ๋‹ค.
์„œ๋ฒ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด(read)์˜ค๊ธฐ ์œ„ํ•ด useQuery๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ , ์„œ๋ฒ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝ(create, update, delete)์‹œํ‚ค๊ธฐ ์œ„ํ•ด useMutation์„ ์‚ฌ์šฉํ–ˆ๋‹ค.


๐Ÿ— ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ํŒŒํŠธ

  • ํฌ์ŠคํŠธ ๊ด€๋ จ API Hook
  • Button ์ปดํฌ๋„ŒํŠธ
  • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ UI ๋ฐ ๊ธฐ๋Šฅ
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ UI ๋ฐ ๊ธฐ๋Šฅ
  • ํฌ์ŠคํŠธ ํŽ˜์ด์ง€ UI ๋ฐ ๊ธฐ๋Šฅ

๐Ÿ‰ Trouble shooting

1. ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ์œ ์ € ๋ฐ์ดํ„ฐ refetch

ํ”„๋กœ์ ํŠธ ๋งˆ์ง€๋ง‰ ๋‚ ...์–ด๋– ํ•œ ์˜ค๋ฅ˜๋„ ์—†์„ ๊ฒƒ์ด๋ผ ๋ฏฟ์–ด ์˜์‹ฌ์น˜ ์•Š์•˜์ง€๋งŒ...์ตœ์ข… QA ์ค‘์— ๋‚ด๊ฐ€ ๋งก์€ ๋ถ€๋ถ„์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค... ๐Ÿคฏ
๋‘ ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ, ํ•œ ๋ช…์ด ํšŒ์›๊ฐ€์ž…์„ ์™„๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด, ๋‹ค๋ฅธ ํ•œ ๋ช…์€ ์ด์ „์— ๊ฐ€์ž…๋œ ์‚ฌ์šฉ์ž์™€ ๊ฐ™์€ ์ด๋ฉ”์ผ ๋˜๋Š” ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ค‘๋ณต๊ฒ€์‚ฌ์—์„œ ๊ฑฐ๋ฅด์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.
ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ์ ‘์†์‹œ์—, ์ „์ฒด user ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ๋งŒ fetch ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํšŒ์›๊ฐ€์ž… ๋„์ค‘์— ์ƒˆ๋กญ๊ฒŒ ๊ฐ€์ž…๋œ ์œ ์ €์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์—†์–ด์„œ ๋ฐœ์ƒ๋œ ๋ฌธ์ œ์˜€๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฉ”์ผ ๋˜๋Š” ๋‹‰๋„ค์ž„์˜ ์ค‘๋ณต๊ฒ€์‚ฌ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•  ๋•Œ, ์—…๋ฐ์ดํŠธ๋œ user ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ์ค‘๋ณต ๋น„๊ต๋ฅผ ํ•ด์ฃผ๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜์—ฌ์•ผํ–ˆ๋‹ค.
useQuery๋กœ๋ถ€ํ„ฐ refetch ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, useQuery๋Š” ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด refetch์™€ ๋™์‹œ์— ๋กœ์ง ๋‚ด ๋ฐ์ดํ„ฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์•˜๋‹ค.
๋‹ค ๊ฐ™์ด ํ•œ์ฐธ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ํŒ€์›๋ถ„์ด ํ•ด๊ฒฐํ•ด์ฃผ์…จ๋‹ค ๐Ÿฅน
refetch์— .then()์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ์•ˆ์—์„œ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค!
์ด ์‚ฌ๊ฑด์„ ํ†ตํ•ด refetch ํ•จ์ˆ˜๋Š” Promise ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , then() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์ ˆ๋Œ€๋กœ ์žŠ์–ด๋ฒ„๋ฆฌ์ง€ ๋ชปํ•  ๊ฒƒ ๊ฐ™๋‹ค.

2. ํฌ์ŠคํŠธ ํŽ˜์ด์ง€ ๋’ค๋กœ๊ฐ€๊ธฐ ์˜ค๋ฅ˜

ํฌ์ŠคํŠธ ํŽ˜์ด์ง€์—์„œ ๋’ค๋กœ๊ฐ€๊ธฐ๊ฐ€ ์•ˆ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค.
ํฌ์ŠคํŠธ ํŽ˜์ด์ง€๋Š” ๋Œ“๊ธ€๋งŒ ๋ณด์—ฌ์ฃผ๋Š” post/:postId,
ํˆฌํ‘œ ์ „ ๋Œ“๊ธ€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” post/:postId?show=true,
ํˆฌํ‘œ ํ›„ ํˆฌํ‘œ์œจ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” post/:postId?show=true&voted=A URL์ด ์กด์žฌํ•˜๊ณ , ์ด๋Š” useSearchParams() ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.
๋’ค๋กœ๊ฐ€๊ธฐ ์•ˆ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋””๋ฒ„๊น…์„ ํ•ด๋ณด๋‹ˆ URL ์ฃผ์†Œ์—์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค history stack์ด ๋งค์šฐ ๋งŽ์ด ์Œ“์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ด ๋ฌธ์ œ์˜ ์›์ธ์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์—ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” useEffect์˜ ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ๋„ˆ๋ฌด ๋งŽ์ด ์ถ”๊ฐ€ํ•œ ๊ฒƒ์ด์—ˆ๋‹ค.
ํฌ์ŠคํŠธ ํŽ˜์ด์ง€์—๋Š” ๋งค์šฐ ๋งŽ์€ ๋กœ์ง์ด ๋“ค์–ด๊ฐ€์žˆ๊ณ , useEffect ํ›…๋„ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” ์ฒ˜์Œ์—” useEffect์˜ ์˜์กด์„ฑ์œผ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ๋„ฃ์—ˆ๋Š”๋ฐ ESLint ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚˜์„œ ์ด๋ฅผ ์—†์• ๊ธฐ์œ„ํ•ด ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ›…์ด ๋ช‡ ๋ฒˆ์ด๊ณ  ๊ณ„์† ํ˜ธ์ถœ๋˜๋Š” ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚ฌ๋˜ ๊ฒƒ์ด๋‹ค.
์ด eslint ๊ฒฝ๊ณ ๋Š” "react-hooks/exhaustive-deps"๋กœ ํšจ๊ณผ ํ›…์— ๋ˆ„๋ฝ๋œ ์ข…์†์„ฑ์ด ์žˆ์„ ๋•Œ ๊ฒฝ๊ณ ๋ฅผ ๋„์šฐ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ํ•„์š”ํ•œ ์˜์กด์„ฑ๋งŒ ์ถ”๊ฐ€ํ•˜๋‹ˆ, history stack์ด ์—ฌ๋Ÿฌ๋ฒˆ ์Œ“์ด๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
๋ฆฌ์•กํŠธ ํ›…์— ๋Œ€ํ•ด ์ž˜ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํšจ์œจ์ ์ด๊ณ  ์ตœ์ ํ™”๋œ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ๋Š” history stack์— ํˆฌํ‘œ ์ „(๋Œ“๊ธ€ ์ž‘์„ฑ) ํŽ˜์ด์ง€ ๊ธฐ๋ก์„ ๋‚จ๊ฒผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋Œ“๊ธ€ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€์—์„œ ํˆฌํ‘œ๋ฅผ ์™„๋ฃŒํ•˜์—ฌ ํˆฌํ‘œ์œจ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ ํ›„, ๋’ค๋กœ๊ฐ€๊ธฐ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.
๊ทธ ์ด์œ ๋Š” ํˆฌํ‘œ ํ›„ ํˆฌํ‘œ์œจ ํŽ˜์ด์ง€์—์„œ ๋’ค๋กœ๊ฐ€๊ฒŒ ๋˜๋ฉด ์ด๋ก ์ƒ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์•ผํ•˜๋Š”๋ฐ ์ด ํŽ˜์ด์ง€์—์„œ๋Š” user์˜ ํˆฌํ‘œ์—ฌ๋ถ€์— ๋”ฐ๋ผ ํˆฌํ‘œ์œจ URL๋กœ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋ฐ”๋กœ ๋ณ€๊ฒฝ์‹œ์ผœ์ฃผ๋Š” ๋กœ์ง์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋ฏธ ํˆฌํ‘œ๋ฅผ ํ•˜์˜€๊ธฐ์— ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ๊ณ„์† ํˆฌํ‘œ์œจ URL์ด ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง ๋ณ€๊ฒฝ ์‹œ, ํ˜„์žฌ ํŽ˜์ด์ง€๋ฅผ history stack์— ๋‚จ๊ธฐ์ง€ ์•Š๊ฒŒ replace๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ฆ‰, setSearchParams(searchParams, { replace: true }); setSearchParams ํ•จ์ˆ˜์— replace ์˜ต์…˜์„ ์ฃผ์–ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค!


๐Ÿ‘‘ KPT ํšŒ๊ณ 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด KPT ํšŒ๊ณ ๋ฅผ ์ ์–ด๋ณด๊ฒ ๋‹ค.

Keep

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

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

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

Remind
์ ์ ˆํ•œ ํŒ€ ๋ฌธํ™”๋ฅผ ํ˜•์„ฑํ•˜์—ฌ ์†Œ์†๊ฐ์„ ๊ฐ€์ง€๊ณ , ํŒ€์›๋“ค๊ณผ ๋งŽ์ด ๊ต๋ฅ˜ํ•˜๊ธฐ
ํƒ€์ธ์— ๋Œ€ํ•œ ๋ฐฐ๋ ค์™€ ์›ํ™œํ•œ ์˜์‚ฌ์†Œํ†ต์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•˜๊ธฐ
ํŒ€์˜ ๊ฐœ๋ฐœ ๋ฌธํ™”์™€ ์ปจ๋ฒค์…˜์„ ์ •ํ•˜๊ณ , ๋ฌธ์„œํ™”์— ์ตœ์„ ์„ ๋‹คํ•˜๊ธฐ

Problem

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

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

  • ๋ฌธ์„œํ™”ํ•˜์ง€ ๋ชปํ•œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…
    ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ ๋งŽ์€ ๋ฌธ์ œ๋“ค๊ณผ ๋งˆ์ฃผํ•˜์˜€๋Š”๋ฐ, ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์กฐ๊ธ‰ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋“ค์„ ๋ฌธ์„œํ™”ํ•ด๋‘์ง€ ์•Š์•˜๋‹ค. ์ด๋Š” ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ, ๊ธฐ์–ต์ด ๋‚˜์ง€ ์•Š์•„ ๋‹ค์‹œ ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ข…์ข… ๋ฐœ์ƒ๋˜์—ˆ๋‹ค.

Solution(Action Item)
๋ชจ๋ฐ”์ผ ๋Œ€์‘์„ ๊ฐ€์žฅ ์šฐ์„ ์œผ๋กœ ๊ณ ๋ คํ•˜์—ฌ ์›น ํŽ˜์ด์ง€ ์ œ์ž‘
QA์— ์‹œ๊ฐ„๊ณผ ์ธํ’‹์„ ๋” ํˆฌ์žํ•˜๊ธฐ
๋งˆ์ฃผํ•œ ์ด์Šˆ๋“ค์— ๋Œ€ํ•œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…์„ ๋ฌธ์„œํ™”

Try

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

  • Commit ์ž์ฃผํ•˜๊ธฐ
    commit์„ ์ตœ๋Œ€ํ•œ ์ž์ฃผ ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ง‰์ƒ ๊ฐœ๋ฐœํ•˜๊ฒŒ๋˜๋ฉด commit์„ ์žŠ์–ด๋ฒ„๋ฆฌ๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๊ฑด๋“ค์—ฌ์„œ commit์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์• ๋งคํ•œ ์ƒํ™ฉ์ด ์ž์ฃผ ์žˆ์—ˆ๋‹ค. ์กฐ๊ธˆ ๋” ์„ธ๋ถ„ํ™”ํ•ด์„œ commit์„ ์ง„ํ–‰ํ•ด์•ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐ๋˜์—ˆ๋‹ค.

Solution(Action Item)
ํŒ€ ๋‚ด์— ์ƒ๊ธฐ๋Š” ๋ชจ๋“  ์ด์Šˆ์— ๊ด€์‹ฌ์„ ๊ฐ€์ง€๊ณ , ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ธฐ
commit์„ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ž์ฃผ ํ•˜๊ธฐ


๐Ÿ’ญ ๋งˆ๋ฌด๋ฆฌ

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

profile
์•ŒํŒŒ์นด์˜ ์ฝ”๋”ฉ ์ƒํ™œ

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

comment-user-thumbnail
2023๋…„ 10์›” 4์ผ

์ฃผ์ œ๋งˆ๋‹ค ์•ž์— ๋ถ™์€ ์ด๋ชจ์ง€์˜ ๋œป์„ ์ €๋Š” ์•Œ๊ณ  ์žˆ์ฃ  ! ใ…Žใ…Ž
ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ ์  ์ฃผํ•˜๋‹˜์˜ ์‹ค๋ ฅ๋„ ๋ ˆ๋ฒจ ์—… ํ•˜์…จ๋‹ค๋Š” ์˜๋ฏธ๊ฒ ์ฃ ?!
์ฃผํ•˜๋‹˜ ํšŒ๊ณ ๋ฅผ ์ฝ์œผ๋ฉด์„œ ์ง€๋‚œ ํ•œ ๋‹ฌ๊ฐ„์˜ ์ถ”์–ต๋“ค์„ ํšŒ์ƒํ•˜๊ฒŒ ๋˜๋„ค์š” ใ…‹ใ…‹ใ…‹
ํ”„๋กœ์ ํŠธ ๋ฌด์‚ฌํžˆ ๋๋งˆ์น˜๋А๋ผ ๊ณ ์ƒํ•˜์…จ์Šต๋‹ˆ๋‹ค!! ๐Ÿ˜„

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ