# [[Automated Governance]] ## πŸ“Œ Brief μ½”μ•½ Summary Automated Governance(κ±°λ²„λ„ŒμŠ€ μžλ™ν™”)λŠ” μ½”λ”© ν‘œμ€€κ³Ό μ•„ν‚€ν…μ²˜ κ·œμΉ™μ„ μˆ˜λ™μœΌλ‘œ κ΄€λ¦¬ν•˜λŠ” λŒ€μ‹  μžλ™ν™”λœ 도ꡬλ₯Ό 톡해 μ‹œμŠ€ν…œμ μœΌλ‘œ κ°•μ œν•˜λŠ” λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [1, 2]. μ΄λŠ” νŒ€ ν˜‘μ—…μ˜ 기반이 되며, κ°œλ°œμžκ°€ νŒŒμΌμ„ 찾을 λ•Œ κ²ͺλŠ” ν˜Όλž€μ„ μ—†μ• κ³  ν™˜κ²½ μ„€μ • 뢈일치둜 μΈν•œ 였λ₯˜λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€ [1]. 주둜 ESLint, Prettier, Husky와 같은 도ꡬ와 CI/CD νŒŒμ΄ν”„λΌμΈμ„ ν™œμš©ν•˜μ—¬ κ³ ν’ˆμ§ˆμ˜ μ½”λ“œλ§Œ μ €μž₯μ†Œμ— λ³‘ν•©λ˜λ„λ‘ 보μž₯ν•©λ‹ˆλ‹€ [2, 3]. ## πŸ“– Core Content * **μžλ™ν™” λ„κ΅¬μ˜ ν•„μš”μ„±:** μ½”λ”© ν‘œμ€€μ„ μˆ˜λ™μœΌλ‘œ κ°•μ œν•˜λŠ” 것은 맀우 λΉ„νš¨μœ¨μ μž…λ‹ˆλ‹€ [2]. ν˜„λŒ€μ˜ ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈλŠ” ESLint와 Prettierλ₯Ό ν™œμš©ν•˜μ—¬ μ½”λ“œ μœ„λ°˜ 사항을 μžλ™μœΌλ‘œ μ°Ύμ•„λ‚΄κ³  μˆ˜μ •ν•©λ‹ˆλ‹€ [2]. * **μ•„ν‚€ν…μ²˜ κ²½κ³„μ˜ μžλ™ κ°•μ œ:** ESLint κ·œμΉ™μ„ μ„ΈλΆ€μ μœΌλ‘œ κ΅¬μ„±ν•˜μ—¬ νŠΉμ • μž„ν¬νŠΈ νŒ¨ν„΄μ„ κΈˆμ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. 예λ₯Ό λ“€μ–΄, ν•˜λ‚˜μ˜ κΈ°λŠ₯(feature)이 λ‹€λ₯Έ κΈ°λŠ₯의 λ‚΄λΆ€ λͺ¨λ“ˆμ„ 직접 μž„ν¬νŠΈν•˜μ§€ λͺ»ν•˜λ„둝 μ°¨λ‹¨ν•¨μœΌλ‘œμ¨, Feature-Sliced Design(FSD)κ³Ό 같은 μ•„ν‚€ν…μ²˜ 경계λ₯Ό μ‹œμŠ€ν…œμ μœΌλ‘œ κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [2]. * **Git ν›…(Hooks)을 ν†΅ν•œ 사전 차단:** Husky와 같은 도ꡬλ₯Ό κ΅¬ν˜„ν•˜μ—¬ Git 훅을 μ„€μ •ν•©λ‹ˆλ‹€ [2]. 이λ₯Ό 톡해 μ½”λ“œκ°€ μ»€λ°‹λ˜κΈ° 전에 λ¦°νŒ…, ν¬λ§·νŒ…, νƒ€μž… 검사λ₯Ό μžλ™μœΌλ‘œ μ‹€ν–‰ν•˜μ—¬, 기쀀을 ν†΅κ³Όν•œ κ³ ν’ˆμ§ˆμ˜ μ½”λ“œλ§Œμ΄ 리포지토리에 λ°˜μ˜λ˜λ„λ‘ ν•©λ‹ˆλ‹€ [2]. * **지속적 톡합(CI/CD) νŒŒμ΄ν”„λΌμΈ 적용:** νŒ€μ˜ 성곡적인 κ±°λ²„λ„ŒμŠ€λŠ” 둜컬 ν™˜κ²½μ˜ λ¦°νŒ… 뿐만 μ•„λ‹ˆλΌ κ°•λ ₯ν•œ CI/CD νŒŒμ΄ν”„λΌμΈμ„ ν†΅ν•œ μžλ™ν™”μ— 달렀 μžˆμŠ΅λ‹ˆλ‹€ [3]. μ‹œκ°μ  νšŒκ·€ ν…ŒμŠ€νŠΈ(Visual tests) λ“±μ˜ μžλ™ν™” 도ꡬ μ—­μ‹œ CI νŒŒμ΄ν”„λΌμΈμ˜ PR 검사(PR checks)와 μ—°λ™λ˜μ–΄ μ˜λ„μΉ˜ μ•Šμ€ UI 버그가 λ³‘ν•©λ˜λŠ” 것을 μ°¨λ‹¨ν•©λ‹ˆλ‹€ [4]. ## βš–οΈ Trade-offs & Caveats * **μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.** * 제곡된 μ†ŒμŠ€μ—μ„œλŠ” κ±°λ²„λ„ŒμŠ€ μžλ™ν™”(Automated Governance)의 λ‹¨μ μ΄λ‚˜ λΆ€μž‘μš©μ— λŒ€ν•΄ μ§μ ‘μ μœΌλ‘œ λͺ…μ‹œν•˜κ³  μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ§Œ, ꡬ쑰적 엄격성을 μœ„ν•΄ ESLint μ„€μ •, Husky 초기 ꡬ좕, CI/CD 톡합 λ“± **λ‹€μ–‘ν•œ μžλ™ν™” 도ꡬλ₯Ό μ…‹μ—…ν•˜λŠ” 좔가적인 ν™˜κ²½ ꡬ성 μž‘μ—…μ΄ μš”κ΅¬**λœλ‹€λŠ” 점을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ [2, 3]. λ˜ν•œ κ·œμΉ™ μœ„λ°˜μ„ μ»€λ°‹μ΄λ‚˜ PR λ‹¨κ³„μ—μ„œ μ—„κ²©ν•˜κ²Œ μ°¨λ‹¨ν•˜λ―€λ‘œ [2, 4], νŒ€ 전체가 이 κ°•μ œλœ κ·œμΉ™(예: FSD μ•„ν‚€ν…μ²˜ κ·œμΉ™)을 λͺ…ν™•νžˆ μ΄ν•΄ν•˜κ³  λ”°λ₯΄μ§€ μ•ŠμœΌλ©΄ 개발 흐름에 μ œμ•½μ΄ 생길 수 μžˆλ‹€λŠ” 점을 μœ μΆ”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ## πŸ”— Knowledge Connections ### Related Concepts #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[ESLint and Prettier]] - μ—°κ²° 이유: μ½”λ”© ν‘œμ€€ μœ„λ°˜μ„ μžλ™μœΌλ‘œ μ‹λ³„ν•˜κ³  μˆ˜μ •ν•˜λ©° κ±°λ²„λ„ŒμŠ€ μžλ™ν™”λ₯Ό μ§μ ‘μ μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 핡심 λ„κ΅¬μž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•„ν‚€ν…μ²˜ 경계(예: κΈ°λŠ₯ κ°„ μž„ν¬νŠΈ κΈˆμ§€)λ₯Ό 슀크립트 μˆ˜μ€€μ—μ„œ μ–΄λ–»κ²Œ μžλ™ν™”ν•˜κ³  ν†΅μ œν•˜λŠ”μ§€ ꡬ체적인 원리λ₯Ό 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. - [[Husky]] - μ—°κ²° 이유: μ½”λ“œ 컀밋 이전에 λ¦°νŒ…, ν¬λ§·νŒ…, νƒ€μž… 검사 λ“±μ˜ κ±°λ²„λ„ŒμŠ€ κ·œμΉ™μ„ κ°•μ œλ‘œ μ‹€ν–‰ν•˜κ²Œ ν•΄μ£ΌλŠ” Git ν›…(Hook) 관리 λ„κ΅¬μž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 잘λͺ»λœ μ½”λ“œκ°€ 원격 μ €μž₯μ†Œμ— λ„λ‹¬ν•˜κΈ° μ „, 개발자의 둜컬 ν™˜κ²½μ—μ„œ μ„ μ œμ μœΌλ‘œ 문제λ₯Ό μ°¨λ‹¨ν•˜λŠ” νŒŒμ΄ν”„λΌμΈμ„ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. #### [μ•„ν‚€ν…μ²˜/ν”„λ‘œμ„ΈμŠ€] - [[Feature-Sliced Design (FSD)]] - μ—°κ²° 이유: 도ꡬλ₯Ό ν†΅ν•œ κ±°λ²„λ„ŒμŠ€(Automated Governance)κ°€ ꢁ극적으둜 μ§€ν‚€κ³ μž ν•˜λŠ” μ—„κ²©ν•œ 계측 ꡬ쑰 및 λͺ¨λ“ˆν™” λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [2, 5]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ™œ ESLint와 같은 도ꡬλ₯Ό ν™œμš©ν•˜μ—¬ λͺ¨λ“ˆ κ°„μ˜ 단방ν–₯ μ˜μ‘΄μ„± κ·œμΉ™μ„ κ°•μ œν•΄μ•Όλ§Œ λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ΄ λΆ•κ΄΄ν•˜μ§€ μ•ŠλŠ”μ§€ ꡬ쑰적인 이유λ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€ [2, 5]. - [[CI/CD νŒŒμ΄ν”„λΌμΈ]] - μ—°κ²° 이유: μžλ™ν™”λœ λ¦°νŒ…, ν…ŒμŠ€νŠΈ 및 κ±°λ²„λ„ŒμŠ€ κ·œμΉ™μ΄ ν’€ λ¦¬ν€˜μŠ€νŠΈ(PR) λ‹¨κ³„μ—μ„œ κ²€μ¦λ˜λŠ” μ€‘μ•™ν™”λœ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€ [3, 4]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: κ°œλ³„ 개발자의 ν™˜κ²½μ„ λ„˜μ–΄, νŒ€ λ‹¨μœ„μ˜ ν˜‘μ—… μ›Œν¬ν”Œλ‘œμš°μ—μ„œ μ½”λ“œ ν’ˆμ§ˆμ΄ μ–΄λ–»κ²Œ μ§€μ†μ μœΌλ‘œ μœ μ§€λ˜κ³  λ³΄ν˜Έλ˜λŠ”μ§€ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3, 4]. ### Deeper Research Questions - ESLint κ·œμΉ™μ„ ꡬ체적으둜 μ–΄λ–»κ²Œ μ„€μ •ν•΄μ•Ό Feature-Sliced Design(FSD)μ—μ„œ μš”κ΅¬ν•˜λŠ” 계측 κ°„μ˜ '단방ν–₯ μ˜μ‘΄μ„±'을 μžλ™μœΌλ‘œ κ°•μ œν•  수 μžˆλŠ”κ°€? - 둜컬 ν™˜κ²½μ—μ„œμ˜ Husky 기반 Pre-commit ν›…κ³Ό CI/CD μ„œλ²„μ—μ„œμ˜ 검증 νŒŒμ΄ν”„λΌμΈμ€ μ–΄λ–€ κΈ°μ€€μœΌλ‘œ 역할을 λΆ„λ‹΄ν•˜μ—¬ νš¨μœ¨μ„±μ„ 높일 수 μžˆλŠ”κ°€? - μžλ™ν™”λœ λ¦°νŒ…κ³Ό μ—„κ²©ν•œ κ±°λ²„λ„ŒμŠ€κ°€ μ†Œκ·œλͺ¨ ν”„λ‘œμ νŠΈ 초기 속도에 λ―ΈμΉ˜λŠ” 영ν–₯κ³Ό, 이λ₯Ό μƒμ‡„ν•˜κΈ° μœ„ν•œ μ μ ˆν•œ λ„μž… μ‹œμ μ€ μ–Έμ œμΈκ°€? - μ½”λ”© ν‘œμ€€ 외에, μžλ™ν™” 도ꡬ(Storybook visual tests λ“±)λ₯Ό CI에 연동할 λ•Œ λ°œμƒν•˜λŠ” μ˜€νƒ(Flake/Noise)을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•œ 방법은 무엇인가? - μƒνƒœ 관리(State Management) 라이브러리 μ‚¬μš© μ‹œ λ°œμƒν•˜λŠ” μ•„ν‚€ν…μ²˜ μœ„λ°˜(예: κΈ€λ‘œλ²Œ μŠ€ν† μ–΄μ˜ λ¬΄λΆ„λ³„ν•œ μ ‘κ·Ό) λ˜ν•œ Automated Governanceλ₯Ό 톡해 μ œμ–΄ν•  수 μžˆλŠ”κ°€? ### Practical Application Contexts - **Implementation:** ν”„λ‘œμ νŠΈ μ„€μ • μ‹œ ESLint와 Prettierλ₯Ό μ΅œμš°μ„ μœΌλ‘œ κ΅¬μ„±ν•˜κ³ , Huskyλ₯Ό ν™œμš©ν•΄ `git commit` λͺ…λ Ήμ–΄κ°€ 싀행될 λ•Œ μžλ™μœΌλ‘œ μ½”λ“œ ν¬λ§·νŒ… 및 νƒ€μž… μ—λŸ¬λ₯Ό κ²€μΆœν•˜λ„λ‘ κ΅¬ν˜„ν•©λ‹ˆλ‹€ [2]. - **System Design:** FSD μ•„ν‚€ν…μ²˜λ₯Ό λ„μž…ν•  λ•Œ, 개발자의 μ‹€μˆ˜λ‘œ κΈ°λŠ₯(features) κ°„ μ˜μ‘΄μ„±μ΄ μ—‰ν‚€μ§€ μ•Šλ„λ‘ ESLint λ£°(rule) 섀계 μ‹œ 각 ν΄λ”μ˜ μž„ν¬νŠΈ λ²”μœ„λ₯Ό μ œν•œν•˜λŠ” μ•„ν‚€ν…μ²˜ λ³΄ν˜Έλ§μ„ μ„€κ³„ν•©λ‹ˆλ‹€ [2, 5]. - **Operation / Maintenance:** CI μ„œλ²„ μ„€μ •μ—μ„œ PR 생성 μ‹œ Storybook μŠ€ν¬λ¦°μƒ· ν…ŒμŠ€νŠΈ 및 μ½”λ“œ λ¦°ν„°λ₯Ό ν†΅κ³Όν•΄μ•Όλ§Œ Main 브랜치둜 병합(Merge)ν•  수 μžˆλ„λ‘ μƒνƒœ 검사(PR checks)λ₯Ό μš΄μ˜ν•©λ‹ˆλ‹€ [3, 4]. - **Learning Path:** λ‹¨μˆœν•œ React κΈ°λŠ₯ κ΅¬ν˜„μ„ λ„˜μ–΄μ„œ, νŒ€ ν”„λ‘œμ νŠΈ ν˜‘μ—…μ„ μœ„ν•΄ μ½”λ“œ μ»¨λ²€μ…˜μ„ λ§žμΆ”λŠ” 도ꡬ(Linting)와 Git ν›…(Hooks) μ‚¬μš©λ²•μ„ μ΅νžˆλŠ” λ‹€μŒ 단계 ν•™μŠ΅μœΌλ‘œ μ΄μ–΄μ§‘λ‹ˆλ‹€ [2]. - **My Project Relevance:** λ‹€μˆ˜μ˜ νŒ€μ›μ΄ λ™μ‹œμ— μž‘μ—…ν•˜λŠ” ν™˜κ²½μ΄κ±°λ‚˜, μ½”λ“œκ°€ λ°©λŒ€ν•΄μ§€λŠ” ν™•μž₯ 단계(Scalable phase)μ—μ„œ λ¦¬λ·°μ–΄μ˜ μˆ˜λ™μ μΈ 확인 뢀담을 쀄이고 μ•ˆμ •μ„±μ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μ¦‰κ°μ μœΌλ‘œ ν”„λ‘œμ νŠΈμ— λ„μž…ν•΄μ•Ό ν•˜λŠ” ν•„μˆ˜ ν™˜κ²½ μ„ΈνŒ…μž…λ‹ˆλ‹€ [2, 6]. ### Adjacent Topics - [[Git Branching Strategies]] - ν™•μž₯ λ°©ν–₯: μ—„κ²©ν•˜κ²Œ κ²€μ¦λœ μ½”λ“œλ§Œμ΄ 합쳐지도둝 μ§€μ›ν•˜λŠ” GitHub Flow λ“±μ˜ 브랜치 μ „λž΅κ³Ό ν’€ λ¦¬ν€˜μŠ€νŠΈ(PR) 문화에 λŒ€ν•œ μ΄ν•΄λ‘œ λ‚˜μ•„κ°‘λ‹ˆλ‹€ [7, 8]. - [[React Compiler]] - ν™•μž₯ λ°©ν–₯: μ½”λ“œ μŠ€νƒ€μΌκ³Ό μž„ν¬νŠΈ κ·œμΉ™μ„ κ°•μ œν•˜λŠ” 'Governance'λ₯Ό λ„˜μ–΄, λ¦¬λ Œλ”λ§ μ΅œμ ν™”(Memoization) 자체λ₯Ό λΉŒλ“œ νƒ€μž„μ— μ»΄νŒŒμΌλŸ¬κ°€ 'μžλ™ν™”'ν•΄μ£ΌλŠ” μ΅œμ‹  μ„±λŠ₯ μžλ™ν™” μ˜μ—­μœΌλ‘œ 관심사λ₯Ό ν™•μž₯ν•©λ‹ˆλ‹€ [9, 10]. --- *Last updated: 2026-04-30*