# [[Team Collaboration|Team Collaboration]] ## ๐Ÿ“Œ Brief Summary ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ 'Team Collaboration(ํŒ€ ํ˜‘์—…)'์ด๋ž€ ๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์ผํ•œ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ํšจ์œจ์ ์œผ๋กœ ํ•จ๊ป˜ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ์‹ค์ฒœ ๋ฐฉ์‹, ์•„ํ‚คํ…์ฒ˜, ๊ทธ๋ฆฌ๊ณ  ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค [1, 2]. ์ด๋Š” ์ผ๊ด€๋œ ํด๋” ๊ตฌ์กฐ, ๋ช…๋ช… ๊ทœ์น™, ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด ๋ฐ Git ๋ธŒ๋žœ์นญ ์ „๋žต์„ ํ™•๋ฆฝํ•˜์—ฌ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ถฉ๋Œ๊ณผ ์†Œํ†ต ๋น„์šฉ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค [2-4]. ์„ฑ๊ณต์ ์ธ ํ˜‘์—…์€ ๋ฆฐํŒ…์ด๋‚˜ ํฌ๋งคํŒ…๊ณผ ๊ฐ™์€ ์ž๋™ํ™”๋œ ๋„๊ตฌ๋ฅผ ํ†ตํ•œ ์—„๊ฒฉํ•œ ์ฝ”๋“œ ๊ฑฐ๋ฒ„๋„Œ์Šค์™€ ๋ช…ํ™•ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฌธํ™”๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ํŒ€์ด ํ™•์žฅ๋  ๋•Œ ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ๋•๋Š”๋‹ค [5-7]. ## ๐Ÿ“– Core Content * **Git ์›Œํฌํ”Œ๋กœ์šฐ ๋ฐ ๋ธŒ๋žœ์นญ ์ „๋žต:** ์†Œ๊ทœ๋ชจ ํŒ€์—์„œ๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์œผ๋ฉด์„œ๋„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” '๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜(Feature-branch) ์›Œํฌํ”Œ๋กœ์šฐ'๋‚˜ 'ํŠธ๋ ํฌ ๊ธฐ๋ฐ˜(Trunk-based) ๊ฐœ๋ฐœ'์ด ์ฃผ๋กœ ๊ถŒ์žฅ๋œ๋‹ค [8-10]. ๋ชจ๋“  ์ž‘์—…์€ `main` ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š๊ณ  ์งง์€ ์ˆ˜๋ช…์˜ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์ง„ํ–‰๋˜๋ฉฐ, Pull Request(PR)์™€ ์ตœ์†Œ 1๋ช… ์ด์ƒ์˜ ๋™๋ฃŒ ๋ฆฌ๋ทฐ(Peer review) ๋ฐ ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ํ›„ ๋ณ‘ํ•ฉ๋˜์–ด์•ผ ํ•œ๋‹ค [7, 11, 12]. ๋˜ํ•œ, ๋ธŒ๋žœ์น˜๋ช…๊ณผ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— ํ‹ฐ์ผ“ ID(์˜ˆ: `PROJ-123`)๋ฅผ ํฌํ•จํ•˜๋ฉด ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์ด๋ ฅ ๊ฐ„์˜ ์ถ”์ ์„ฑ(Traceability)์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค [13, 14]. * **์•„ํ‚คํ…์ฒ˜ ๋ฐ ํด๋” ๊ตฌ์กฐ์˜ ํ‘œ์ค€ํ™”:** ํ‘œ์ค€ํ™”๋œ ํด๋” ๊ตฌ์กฐ(์˜ˆ: ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ ๋˜๋Š” Feature-Sliced Design)๋Š” ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ํŒ€ ํ˜‘์—…์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค [2]. ๊ตฌ์กฐ๊ฐ€ ์ž˜ ์žกํ˜€ ์žˆ์œผ๋ฉด ๊ฐœ๋ฐœ์ž๋“ค์ด ํŒŒ์ผ์„ ์ฐพ๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ณ , ํŒ€์› ๊ฐ„ ๋ถˆํ•„์š”ํ•œ ์†Œํ†ต์„ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž์˜ ์˜จ๋ณด๋”ฉ์ด ๋นจ๋ผ์ง„๋‹ค [2, 15]. ๋˜ํ•œ ๊ฐ ๊ธฐ๋Šฅ์ด ๋…๋ฆฝ๋œ ํด๋”๋กœ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์–ด ์„œ๋กœ์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ„์„ญํ•  ํ™•๋ฅ ์ด ๋‚ฎ์•„์ง„๋‹ค [16]. * **๋ช…๋ช… ๊ทœ์น™(Naming Conventions) ๋ฐ ์ž๋™ํ™”๋œ ๊ฑฐ๋ฒ„๋„Œ์Šค:** ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ ํŒŒ์Šค์นผ ์ผ€์ด์Šค(PascalCase), ํŒŒ์ผ ๋ฐ ํด๋” ์ด๋ฆ„์€ ์ผ€๋ฐฅ ์ผ€์ด์Šค(kebab-case)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™์€ OS ํ™˜๊ฒฝ ๊ฐ„์˜ ๋นŒ๋“œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค [17-19]. ๋” ๋‚˜์•„๊ฐ€ ์ˆ˜๋™ ๊ฒ€์‚ฌ์— ์˜์กดํ•˜๊ธฐ๋ณด๋‹ค ESLint, Prettier, Husky๋ฅผ ํ™œ์šฉํ•ด ์ปค๋ฐ‹ ์ด์ „์— ๋ฆฐํŒ…, ํฌ๋งคํŒ… ๋ฐ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ•์ œํ•˜๋Š” ๊ฒƒ์ด ๊ณ ํ’ˆ์งˆ ์ฝ”๋“œ ํ˜‘์—…์˜ ๊ธฐ๋ฐ˜์ด๋‹ค [6, 20, 21]. * **์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ์™€ ํŒ€ ๊ทœ๋ชจ์˜ ์ƒ๊ด€๊ด€๊ณ„:** ํŒ€์˜ ๊ทœ๋ชจ๊ฐ€ ํด์ˆ˜๋ก(10๋ช… ์ด์ƒ) ๊ตฌ์กฐ๋ฅผ ๊ฐ•์ œํ•˜๋Š” ๋„๊ตฌ๊ฐ€ ํ˜‘์—…์— ์œ ๋ฆฌํ•˜๋‹ค [5]. Zustand์™€ ๊ฐ™์€ ๋„๊ตฌ๋Š” ์œ ์—ฐํ•˜๊ณ  ๋น ๋ฅด์ง€๋งŒ, ๊ทœ์œจ์ด ๋ถ€์กฑํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ๋น„๋™๊ธฐ ์ž‘์—…์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ํ˜ผ๋ž€(integration chaos)์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค [22, 23]. ๋ฐ˜๋ฉด Redux๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ๋งŽ์ง€๋งŒ, ํŒ€ ์ „์›์ด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” '๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›'๊ณผ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ํ˜‘์—…์—์„œ ๋ฒ„๊ทธ๋ฅผ ์ค„์ธ๋‹ค [5, 24, 25]. ## โš–๏ธ Trade-offs & Caveats * **์œ ์—ฐ์„ฑ vs. ๊ตฌ์กฐ์  ๊ฐ•์ œ์„ฑ (์ƒํƒœ ๊ด€๋ฆฌ):** Zustand ๊ฐ™์ด ๊ฐ€๋ฒผ์šด ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๊ฐ€ ์ ์–ด ๋น ๋ฅธ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ(์Šคํƒ€ํŠธ์—… ๋“ฑ)์— ์ ํ•ฉํ•˜์ง€๋งŒ, ์œ ์—ฐ์„ฑ์ด ๋„ˆ๋ฌด ์ปค์„œ ํŒ€์ด ์ปค์งˆ ๊ฒฝ์šฐ ํŒŒํŽธํ™”๋œ ํŒจํ„ด์„ ๋‚ณ์„ ์ˆ˜ ์žˆ๋‹ค [22, 23, 26, 27]. ๋ฐ˜๋ฉด Redux๋Š” ์ผ๊ด€์„ฑ์„ ๊ฐ•์ œํ•˜์—ฌ ๋””๋ฒ„๊น…๊ณผ ํ˜‘์—…์„ ํŽธํ•˜๊ฒŒ ํ•ด์ฃผ์ง€๋งŒ, ์ดˆ๊ธฐ ์„ค์ •๊ณผ ๊ตฌ์กฐํ™”์— ๋“œ๋Š” ์‹œ๊ฐ„์ด ์†Œ๊ทœ๋ชจ ํŒ€์—๊ฒŒ๋Š” ๊ณผ๋„ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋‹ค [5, 24, 28]. * **๋ธŒ๋žœ์นญ ์›Œํฌํ”Œ๋กœ์šฐ์˜ ๋ฌด๊ฒŒ๊ฐ:** Git Flow๋Š” ์˜ˆ์ •๋œ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฑฐ๋Œ€ ํ”„๋กœ์ ํŠธ์—๋Š” ์œ ์šฉํ•˜์ง€๋งŒ, ์†Œ๊ทœ๋ชจ ํŒ€์—๊ฒŒ๋Š” ๋ธŒ๋žœ์น˜ ๊ด€๋ฆฌ ๋น„์šฉ์ด ๋„ˆ๋ฌด ์ปค์„œ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ๋‹ค [8, 29]. ๊ฐ€๋ฒผ์šด Feature-branch ์›Œํฌํ”Œ๋กœ์šฐ๋‚˜ Trunk-based ๊ฐœ๋ฐœ์ด ๋Œ€์•ˆ์ด์ง€๋งŒ, ์ด๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ธŒ๋žœ์น˜๋ฅผ ์งง๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋นˆ๋ฒˆํžˆ ๋ณ‘ํ•ฉ(Merge)ํ•˜๋Š” ๊ทœ์œจ์„ ์Šค์Šค๋กœ ์ง€์ผœ์•ผ๋งŒ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค [30, 31]. * **์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„ ๊ณผ ์˜ค๋ฒ„ํ—ค๋“œ:** Feature-Sliced Design(FSD) ๊ฐ™์€ ์—„๊ฒฉํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” ์ฝ”๋“œ์˜ ๋ชจ๋“ˆํ™”์™€ ๋…๋ฆฝ์  ์ž‘์—…(๋ณ‘๋ ฌ ์ž‘์—…)์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์ง€๋งŒ, ์ดˆ๊ธฐ ๋„์ž… ์‹œ ํŒ€์› ์ „์ฒด๊ฐ€ ํ•ด๋‹น ๋ฐฉ๋ฒ•๋ก (Layer, Slice ๋“ฑ์˜ ๊ฐœ๋…)์„ ์ดํ•ดํ•˜๊ณ  ๋™์˜ํ•ด์•ผ ํ•˜๋Š” ํ•™์Šต ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค [32, 33]. ๊ทœ์น™์— ๋Œ€ํ•œ ์ง€์‹ ๊ณต์œ ์™€ ๋ฌธ์„œํ™”๊ฐ€ ๋™๋ฐ˜๋˜์ง€ ์•Š์œผ๋ฉด, ๊ฐœ๋ฐœ์ž๋“ค์ด ์ž„์˜๋กœ ํ•˜์œ„ ํด๋”๋‚˜ `/shared` ๋“ฑ์— ์ฝ”๋“œ๋ฅผ ์Ÿ์•„๋ถ€์–ด ์˜คํžˆ๋ ค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ง๊ฐ€์ง€๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ณ์„ ์ˆ˜ ์žˆ๋‹ค [33]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [๊ด€๊ณ„ ์œ ํ˜• A (ํ˜‘์—…/์ฝ”๋“œ ๊ด€๋ฆฌ ํ”„๋กœ์„ธ์Šค)] - Git Branching Strategies - ์—ฐ๊ฒฐ ์ด์œ : ๋‹ค์ˆ˜์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋™์‹œ์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ํ†ตํ•ฉ ๊ณผ์ •์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ทœ์•ฝ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [3, 34]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Pull Request, ์ฝ”๋“œ ๋ฆฌ๋ทฐ, ๋ธŒ๋žœ์น˜ ๋ช…๋ช… ๊ทœ์น™, Trunk-based ์›Œํฌํ”Œ๋กœ์šฐ ๋“ฑ ์‹ค์ œ ํŒ€ ์šด์˜ ๋ฐฉ์‹ [7, 35]. - Commit Message Conventions - ์—ฐ๊ฒฐ ์ด์œ : ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์˜๋„์™€ ์ž‘์—… ๋‚ด์—ญ(๋ฒ„๊ทธ ํ”ฝ์Šค, ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋“ฑ)์„ ๋‹ค๋ฅธ ํŒ€์›๋“ค์—๊ฒŒ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๋Š” ์†Œํ†ต์˜ ๋„๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [36]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ํ‹ฐ์ผ“ ID ํ†ตํ•ฉ, `feat:`, `fix:`์™€ ๊ฐ™์€ ์ ‘๋‘์‚ฌ๋ฅผ ํ†ตํ•œ ๋ณ€๊ฒฝ ์ด๋ ฅ์˜ ์ž๋™ํ™” ๋ฐ ์Šค์บ๋‹ [14, 36, 37]. #### [๊ด€๊ณ„ ์œ ํ˜• B (์•„ํ‚คํ…์ฒ˜ ๋ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค ๋„๊ตฌ)] - [[Feature-Sliced Design|Feature-Sliced Design]] - ์—ฐ๊ฒฐ ์ด์œ : ์ฝ”๋“œ๋ฅผ ๊ธฐ์ˆ ์  ๊ณ„์ธต์ด ์•„๋‹Œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ(Feature) ์ค‘์‹ฌ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ, ์—ฌ๋Ÿฌ ํŒ€์ด ์„œ๋กœ ๊ฐ„์„ญ ์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•œ๋‹ค [16, 38]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„์˜ ํ”„๋ก ํŠธ์—”๋“œ ์ ์šฉ, ๋ช…์‹œ์  ํผ๋ธ”๋ฆญ API๋ฅผ ํ†ตํ•œ ๋ชจ๋“ˆ ์บก์Аํ™”์™€ ๊ฒฐํ•ฉ๋„ ๋‚ฎ์ถ”๊ธฐ [38-40]. - Automated Governance - ์—ฐ๊ฒฐ ์ด์œ : ์‚ฌ๋žŒ์˜ ์ˆ˜๋™ ํ™•์ธ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ESLint, Prettier, Husky ๋“ฑ์œผ๋กœ ์ฝ”๋“œ ์ปจ๋ฒค์…˜๊ณผ ์•„ํ‚คํ…์ฒ˜ ๋ฃฐ(์˜์กด์„ฑ ๋ฐฉํ–ฅ ๋“ฑ)์„ ์‹œ์Šคํ…œ์ ์œผ๋กœ ๊ฐ•์ œํ•œ๋‹ค [6, 20]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ์˜ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ณด์ฆ ๋ฐ ํŒ€์› ๊ฐ„์˜ ์Šคํƒ€์ผ ๋ถ„์Ÿ ๋ฐฉ์ง€ [20]. - Redux vs Zustand in Teams - ์—ฐ๊ฒฐ ์ด์œ : ํŒ€์˜ ๊ทœ๋ชจ(์†Œ๊ทœ๋ชจ vs ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ)์— ๋”ฐ๋ผ ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ์˜ ์„ ํƒ์ด ํ˜‘์—…์˜ ์ผ๊ด€์„ฑ์— ๊ฒฐ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค [5, 24, 27]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ฐœ๋ฐœ์ž์˜ ์ž์œจ์„ฑ ๋ถ€์—ฌ์™€ ์ผ๊ด€์„ฑ ๊ฐ•์ œ(Boilerplate) ์‚ฌ์ด์˜ ์•„ํ‚คํ…์ฒ˜์  ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ [22, 41]. ### Deeper Research Questions - ์†Œ๊ทœ๋ชจ ํŒ€(2~5์ธ)์—์„œ ๋Œ€๊ทœ๋ชจ ํŒ€(10์ธ ์ด์ƒ)์œผ๋กœ ํ™•์žฅํ•  ๋•Œ Git ์›Œํฌํ”Œ๋กœ์šฐ์™€ ๋ธŒ๋žœ์นญ ์ „๋žต์€ ์–ด๋–ป๊ฒŒ ์ง„ํ™”ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - Feature-Sliced Design(FSD)์„ ํ”„๋กœ์ ํŠธ์— ๋„์ž…ํ•  ๋•Œ, ํŒ€์›๋“ค์ด ๊ณตํ†ต ๋ชจ๋“ˆ์„ `/shared` ํด๋”์— ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์ฒด์ ์ธ ๊ฑฐ๋ฒ„๋„Œ์Šค ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ESLint์™€ Husky๋ฅผ ํ™œ์šฉํ•œ ์ž๋™ํ™” ๊ฑฐ๋ฒ„๋„Œ์Šค ์„ค์ • ์‹œ, ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋Šฆ์ถ”์ง€ ์•Š์œผ๋ฉด์„œ ๋ชจ๋“ˆ ๊ฐ„ ์ž˜๋ชป๋œ ์˜์กด์„ฑ(์ƒ์œ„ ๋ ˆ์ด์–ด ์ฐธ์กฐ ๋“ฑ)์„ ์›์ฒœ ์ฐจ๋‹จํ•˜๋Š” ์ตœ์ ์˜ ๊ทœ์น™ ๊ตฌ์„ฑ์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Redux vs Zustand)์˜ ์„ ํƒ์ด ํŒ€์› ๊ฐ„์˜ ๋น„๋™๊ธฐ ๋กœ์ง ๋ฐ ๋ฐ์ดํ„ฐ ํŒจ์นญ(Fetching) ํŒจํ„ด์˜ ํŒŒํŽธํ™”์— ๋ฏธ์น˜๋Š” ์‹ค์ œ ์˜ํ–ฅ์€ ๋ฌด์—‡์ธ๊ฐ€? - Pull Request ๊ธฐ๋ฐ˜์˜ ํ˜‘์—… ํ™˜๊ฒฝ์—์„œ, ์‹œ๊ฐ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ๋„๊ตฌ(์˜ˆ: Storybook, Chromatic)๊ฐ€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์˜ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด์†Œํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ณ  PR์„ ์ƒ์„ฑํ•  ๋•Œ, ๋ฐ˜๋“œ์‹œ ์ •ํ•ด์ง„ Conventional Commits ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ณ  JIRA ๋“ฑ์˜ ์ด์Šˆ ํ‹ฐ์ผ“ ๋ฒˆํ˜ธ๋ฅผ ๋ธŒ๋žœ์น˜์™€ ์ปค๋ฐ‹์— ๊ธฐ์ž…ํ•˜์—ฌ ์ถ”์ ์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค [14, 37]. - **System Design:** ํ”„๋กœ์ ํŠธ ํด๋” ๊ตฌ์กฐ ์„ค๊ณ„ ์‹œ ๊ธฐ์ˆ ์  ํŒŒ์ผ ํƒ€์ž…(์ปดํฌ๋„ŒํŠธ, ํ›… ๋“ฑ)์˜ ๋‚˜์—ด์ด ์•„๋‹Œ, ์ธ์ฆ, ๋Œ€์‹œ๋ณด๋“œ ๋“ฑ ๊ธฐ๋Šฅ(Feature) ๋„๋ฉ”์ธ ๋‹จ์œ„๋กœ ๊ฒฉ๋ฆฌ์‹œ์ผœ ๊ฐ ๊ธฐ๋Šฅ๋ณ„๋กœ ์ „๋‹ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค [2, 42, 43]. - **Operation / Maintenance:** CI/CD ํŒŒ์ดํ”„๋ผ์ธ๊ณผ Git Hooks(Husky)๋ฅผ ์„ธํŒ…ํ•˜์—ฌ, ๋ˆ„๊ตฐ๊ฐ€ ์ปจ๋ฒค์…˜์„ ์–ด๊ธด ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์‚ฌ์ „์— ๋ฆฐํ„ฐ์™€ ํฌ๋งคํ„ฐ๊ฐ€ ์ž‘๋™ํ•ด ์ž˜๋ชป๋œ ์ฝ”๋“œ๊ฐ€ ์›๊ฒฉ ๋ธŒ๋žœ์น˜์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ฒƒ์„ ์ฐจ๋‹จํ•œ๋‹ค [20]. - **Learning Path:** ์‹ ๊ทœ ์ž…์‚ฌ์ž๋‚˜ ํŒ€์›์ด ๋ฐฐ์ •๋˜์—ˆ์„ ๋•Œ, `README`์— ๋ช…์‹œ๋œ ํŒ€์˜ ๋ธŒ๋žœ์นญ ์ „๋žต ๊ทœ์น™๊ณผ ํด๋” ๋””๋ ‰ํ† ๋ฆฌ ์„ค๊ณ„ ์˜๋„๋ฅผ ๋จผ์ € ํ•™์Šตํ•˜๊ฒŒ ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์˜จ๋ณด๋”ฉ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•œ๋‹ค [2, 44]. - **My Project Relevance:** ๋‹ค์ˆ˜์˜ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•จ๊ป˜ ์ฐธ์—ฌํ•˜๋Š” ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ, ์ฝ”๋“œ ์ถฉ๋Œ๊ณผ ๊ธฐ์ˆ  ๋ถ€์ฑ„๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ผ๊ด€๋œ ์ œํ’ˆ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์œผ๋กœ ์ˆ˜๋ฆฝํ•ด์•ผ ํ•˜๋Š” ํ˜‘์—… ๊ทธ๋ผ์šด๋“œ ๋ฃฐ(Ground Rules)์ด๋‹ค. ### Adjacent Topics - Code Review Practices - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ž‘์€ ๋‹จ์œ„์˜ Pull Request ์œ ์ง€, ์‹œ๊ฐ์  ๋ฆฌ๋ทฐ ๋„๊ตฌ์˜ ๋„์ž…, ํšจ์œจ์ ์ธ ๋™๋ฃŒ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ๋“ฑ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž์ฒด์˜ ํ’ˆ์งˆ๊ณผ ์†๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•๋ก  [37, 45]. - CI/CD Pipelines - ํ™•์žฅ ๋ฐฉํ–ฅ: ํŒ€์›์˜ ์ฝ”๋“œ๊ฐ€ `main`์— ๋ณ‘ํ•ฉ๋˜๊ธฐ ์ „, ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ์™€ ๋ฆฐํŒ…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ฐฐํฌ๊นŒ์ง€ ์ด์–ด์ง€๋Š” ์ธํ”„๋ผ ๋ฐ ๋ฐ๋ธŒ์˜ต์Šค ํ™˜๊ฒฝ [7]. - [[Visual Regression Testing|Visual Regression Testing]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Storybook ๋ฐ Chromatic์„ ํ™œ์šฉํ•ด UI ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ์ง์ ‘ ํ™•์ธํ•˜๊ณ , ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ ˆ์ด์•„์›ƒ ๊นจ์ง์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ˜‘์—… ๊ธฐ์ˆ  [45, 46]. --- *Last updated: 2026-04-30*