# [[Team Collaboration and Code Governance]] ## ๐Ÿ“Œ Brief Summary ํŒ€ ํ˜‘์—… ๋ฐ ์ฝ”๋“œ ๊ฑฐ๋ฒ„๋„Œ์Šค(Team Collaboration and Code Governance)๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœํŒ€์ด ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ถฉ๋Œ ์—†์ด ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™๊ณผ ์ž๋™ํ™” ๋„๊ตฌ์˜ ํ™œ์šฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ฃผ์š” ์š”์†Œ๋กœ๋Š” ์ผ๊ด€๋œ ํŒŒ์ผ ๋ช…๋ช… ๊ทœ์น™, ESLint์™€ Prettier ๋“ฑ์„ ํ™œ์šฉํ•œ ์ž๋™ํ™”๋œ ๋ฆฐํŒ…, ๊ทธ๋ฆฌ๊ณ  ํ‹ฐ์ผ“ ID์™€ Pull Request(PR) ๋ฆฌ๋ทฐ๋ฅผ ํฌํ•จํ•˜๋Š” ํšจ์œจ์ ์ธ Git ๋ธŒ๋žœ์นญ ์ „๋žต์ด ์žˆ์Šต๋‹ˆ๋‹ค [3-5]. ์ด๋Ÿฌํ•œ ํ‘œ์ค€ํ™”๋œ ๊ตฌ์กฐ์™€ ๊ฑฐ๋ฒ„๋„Œ์Šค๋Š” ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์ธ์ง€์  ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ , ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๋ฉฐ, ํŒ€์ด ์•ˆ์ „ํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ•„์ˆ˜์ ์ธ ๊ธฐ๋ฐ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [6-8]. ## ๐Ÿ“– Core Content * **์ž๋™ํ™”๋œ ์ฝ”๋“œ ๊ฑฐ๋ฒ„๋„Œ์Šค์™€ ๋ฆฐํŒ… (Automated Governance):** ํ˜„๋Œ€์˜ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฝ”๋”ฉ ํ‘œ์ค€์„ ์ˆ˜๋™์œผ๋กœ ๊ฐ•์ œํ•˜๋Š” ๋Œ€์‹  ESLint์™€ Prettier๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„๋ฐ˜ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค [3]. ESLint ๊ทœ์น™์„ ํ†ตํ•ด ํŠน์ • ๊ธฐ๋Šฅ์ด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์œผ๋กœ๋ถ€ํ„ฐ ์ž˜๋ชป๋œ ์ž„ํฌํŠธ๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•„ ์•„ํ‚คํ…์ฒ˜ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, Husky๋ฅผ ํ™œ์šฉํ•ด ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ๋ฆฐํŒ…, ํฌ๋งทํŒ…, ํƒ€์ž… ์ฒดํ‚น์„ ์‹คํ–‰ํ•˜๋Š” Git ํ›…(Git hooks)์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ๊ณ ํ’ˆ์งˆ์˜ ์ฝ”๋“œ๋งŒ ์ €์žฅ์†Œ์— ๋ณ‘ํ•ฉ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [3, 9]. * **ํ‘œ์ค€ํ™”๋œ ๋ช…๋ช… ๊ทœ์น™ (Naming Conventions):** ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™์€ ํ˜‘์—… ์‹œ ํ˜ผ๋ž€์„ ์ค„์ด๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰์„ ๋•์Šต๋‹ˆ๋‹ค [10]. ์šด์˜์ฒด์ œ ๊ฐ„(Windows/macOS ๋Œ€ Linux) ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ๋ฌธ์ œ๋กœ ์ธํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ๋นŒ๋“œ ์‹คํŒจ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ ๋ฐ ํด๋” ์ด๋ฆ„์€ `kebab-case`๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , React ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„์€ `PascalCase`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ•๋ ฅํžˆ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [11-13]. ์ƒ์ˆ˜๋‚˜ Enum์€ `UPPER_SNAKE_CASE`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค [14]. * **์†Œ๊ทœ๋ชจ ํŒ€์„ ์œ„ํ•œ Git ๋ธŒ๋žœ์น˜ ์ „๋žต (Git Workflow for Small Teams):** 2~5๋ช…์˜ ์†Œ๊ทœ๋ชจ ํŒ€์—๊ฒŒ๋Š” ๋ฌด๊ฑฐ์šด Git Flow ๋Œ€์‹  '๋ณดํ˜ธ๋œ main ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๋Š” ๋‹จ์ˆœํ•œ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์›Œํฌํ”Œ๋กœ์šฐ(Feature-Branch Workflow)'๊ฐ€ ๊ฐ€์žฅ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค [15, 16]. * **๋ธŒ๋žœ์น˜ ์ƒ์„ฑ ๋ฐ ๋ช…๋ช…:** ํ•ญ์ƒ ์•ˆ์ •์ ์ด๊ณ  ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ธ `main` ๋ธŒ๋žœ์น˜์—์„œ ๋ถ„๊ธฐํ•˜์—ฌ ์ž‘์—…๋งˆ๋‹ค ์ˆ˜๋ช…์ด ์งง์€ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค [17, 18]. ์ถ”์ ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด `feature/PROJ-123-user-auth`์™€ ๊ฐ™์ด ์ž‘์—… ์œ ํ˜•, ํ‹ฐ์ผ“ ID, ์งง์€ ์„ค๋ช…์„ ํฌํ•จํ•˜๋Š” ๋ช…ํ™•ํ•œ ๋ธŒ๋žœ์น˜ ์ด๋ฆ„ ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [19-21]. * **์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ (Conventional Commits):** ์ฝ”๋“œ๋Š” ์˜๋ฏธ ๋‹จ์œ„๋กœ ์ž‘๊ฒŒ ์ž์ฃผ ์ปค๋ฐ‹ํ•ด์•ผ ํ•˜๋ฉฐ [22, 23], `feat:`, `fix:`, `chore:`, `refactor:` ๋“ฑ์˜ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๋ก€์  ์ปค๋ฐ‹์„ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ๋‚ด์šฉ๊ณผ ์ด์œ ๋ฅผ ๋ช…ํ™•ํžˆ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [24, 25]. * **ํ’€ ๋ฆฌํ€˜์ŠคํŠธ(PR)์™€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ:** ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋จธ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ PR์„ ์—ด๊ณ  ์ตœ์†Œ 1๋ช… ์ด์ƒ์˜ ํŒ€์›์—๊ฒŒ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•„์•ผ ํ•˜๋ฉฐ, CI ํ…Œ์ŠคํŠธ ํ†ต๊ณผ๋ฅผ ํ•„์ˆ˜๋กœ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค [22, 23, 26, 27]. PR์€ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋น ๋ฅด๊ณ  ๊ผผ๊ผผํ•˜๊ฒŒ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค [24, 26]. * **๋ณ‘ํ•ฉ ๋ฐ ์ •๋ฆฌ:** ๋จธ์ง€ ์‹œ์—๋Š” '์Šค์ฟผ์‹œ ๋จธ์ง€(Squash Merge)'๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ main ๋ธŒ๋žœ์น˜์˜ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ์ž‘์—…์ด ๋๋‚œ ๋ธŒ๋žœ์น˜๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค [23, 26, 28]. * **์‹œ๊ฐ์  ๋ฆฌ๋ทฐ (Visual Reviews):** Storybook๊ณผ Chromatic ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ UI ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ž๋™์œผ๋กœ ์บก์ฒ˜ํ•˜๊ณ  ๋ฒ ์ด์Šค๋ผ์ธ๊ณผ ๋น„๊ตํ•จ์œผ๋กœ์จ, ์˜๋„์น˜ ์•Š์€ UI ํšŒ๊ท€(Regression)๊ฐ€ ์šด์˜ ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ์‹œ๊ฐ์  PR ๋ฆฌ๋ทฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [29-31]. * **ํด๋” ๊ตฌ์กฐ๋ฅผ ํ†ตํ•œ ํ˜‘์—… ํ–ฅ์ƒ:** ํŒ€์˜ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ธฐ๋Šฅ ๊ธฐ๋ฐ˜(Feature-based)๊ณผ ๊ฐ™์€ ํ‘œ์ค€ํ™”๋œ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋ฉด, ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์ด ๊ฐ์†Œํ•˜๊ณ  ์‹ ๊ทœ ๊ฐœ๋ฐœ์ž์˜ ์˜จ๋ณด๋”ฉ์ด ๋งค์šฐ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค [8]. ๋˜ํ•œ ํŒŒ์ผ ์ž‘์—… ์‹œ ํŒŒ์ผ๋“ค์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8]. ## ๐Ÿ”— Knowledge Connections - **Related Topics:** [[Frontend Folder Structure]], [[Git Branching Strategies]], [[Clean Code Principles]], [[Feature-Sliced Design]] - **Projects/Contexts:** [[React Project Setup]], [[Small Team Workflow]], [[Continuous Integration/Continuous Deployment (CI/CD)]] - **Contradictions/Notes:** ์†Œ๊ทœ๋ชจ ํŒ€(2~5๋ช…)์˜ ๊ฒฝ์šฐ ๋ฌด๊ฑฐ์šด 'Git Flow' ์ „๋žต์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์„œ ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ, ํŠธ๋ ํฌ ๊ธฐ๋ฐ˜(Trunk-based) ๋˜๋Š” ์งง์€ ์ˆ˜๋ช…์˜ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜(Feature-branch) ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋ฉด์„œ๋„ ํ˜‘์—… ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๊ฐ€์žฅ ์‹ค์šฉ์ ์ธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค [15, 16, 32]. --- *Last updated: 2026-04-26*