--- id: P-REINFORCE-WIKI-C08C3C0C category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['architectural-violations', 'architecture-erosion', 'technical-debt', 'static-code-analysis-tools', 'software-architecture-recovery', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Architectural Violations]] ## πŸ“Œ Brief Summary μ•„ν‚€ν…μ²˜ μœ„λ°˜(Architectural Violations)은 기술 λΆ€μ±„μ˜ 좕적(accumulation of technical debt), 지식 증발(knowledge vaporization)κ³Ό ν•¨κ»˜ **μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 침식(Architecture erosion)을 μΌμœΌν‚€λŠ” μ£Όμš” 원인 쀑 ν•˜λ‚˜**μž…λ‹ˆλ‹€ [1]. μ΄λŠ” μ‹œκ°„μ΄ 지남에 따라 μ΄ˆκΈ°μ— μ˜λ„ν–ˆλ˜ 섀계와 μ‹€μ œ κ΅¬ν˜„λœ μ•„ν‚€ν…μ²˜ κ°„μ˜ 격차가 μ μ§„μ μœΌλ‘œ λ²Œμ–΄μ§€λŠ” ν˜„μƒμ„ μ΄ˆλž˜ν•©λ‹ˆλ‹€ [1]. μ†ŒμŠ€ λ‚΄μ—μ„œλŠ” μ•„ν‚€ν…μ²˜ μΉ¨μ‹μ˜ μ›μΈμœΌλ‘œμ„œ κ°„λž΅ν•˜κ²Œ μ–ΈκΈ‰λ˜μ–΄ 있으며, μ•„ν‚€ν…μ²˜ μœ„λ°˜μ΄λΌλŠ” 단일 κ°œλ…μ— λŒ€ν•œ ꡬ체적인 μ •μ˜λ‚˜ μ„ΈλΆ€ 사둀에 κ΄€ν•œ μ •λ³΄λŠ” λΆ€μ‘±ν•©λ‹ˆλ‹€. ## πŸ“– Core μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. μ†ŒμŠ€μ— μ•„ν‚€ν…μ²˜ μœ„λ°˜(Architectural Violations) μžμ²΄μ— λŒ€ν•œ ꡬ체적이고 세뢀적인 μ •λ³΄λŠ” λΆ€μ‘±ν•©λ‹ˆλ‹€. λ‹€λ§Œ, 이 κ°œλ…μ΄ 핡심 μ›μΈμœΌλ‘œ μž‘μš©ν•˜λŠ” **μ•„ν‚€ν…μ²˜ 침식(Architecture erosion)**의 λ§₯락을 톡해 λ‹€μŒκ³Ό 같은 λ‚΄μš©μ„ ν•©μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * **μ•„ν‚€ν…μ²˜ 침식 유발**: μ•„ν‚€ν…μ²˜ μœ„λ°˜μ€ μ†Œν”„νŠΈμ›¨μ–΄ 개발 수λͺ… μ£ΌκΈ°(SDLC)의 μ—¬λŸ¬ λ‹¨κ³„μ—μ„œ λ°œμƒν•  수 있으며, μ˜λ„λœ μ•„ν‚€ν…μ²˜μ™€ κ΅¬ν˜„λœ μ•„ν‚€ν…μ²˜ μ‚¬μ΄μ˜ 간극을 λ§Œλ“€μ–΄ 점진적인 μ•„ν‚€ν…μ²˜ 침식을 μ΄ˆλž˜ν•©λ‹ˆλ‹€ [1]. * **μ‹œμŠ€ν…œμ— λ―ΈμΉ˜λŠ” 치λͺ…적 영ν–₯**: μ•„ν‚€ν…μ²˜ μœ„λ°˜μ΄ λˆ„μ λ˜μ–΄ 침식이 λ°œμƒν•˜λ©΄ **μ†Œν”„νŠΈμ›¨μ–΄ μ„±λŠ₯이 μ €ν•˜**되고, μ‹œμŠ€ν…œμ˜ **μ§„ν™” 및 μœ μ§€λ³΄μˆ˜ λΉ„μš©(evolutionary costs)이 μ‹€μ§ˆμ μœΌλ‘œ 증가**ν•˜λ©°, μ „λ°˜μ μΈ **μ†Œν”„νŠΈμ›¨μ–΄ ν’ˆμ§ˆμ΄ ν•˜λ½**ν•˜κ²Œ λ©λ‹ˆλ‹€ [1, 2]. * **탐지 및 식별 접근법**: μ΄λŸ¬ν•œ μœ„λ°˜κ³Ό 침식을 쑰기에 λ°œκ²¬ν•˜κ³  μ™„ν™”ν•˜κΈ° μœ„ν•΄ 일관성 기반(consistency-based), μ§„ν™” 기반(evolution-based), 결함 기반(defect-based), κ²°μ • 기반(decision-based) 접근법이 μ œμ•ˆλ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2]. κ΅¬μ²΄μ μœΌλ‘œλŠ” **μžλ™ν™”λœ μ•„ν‚€ν…μ²˜ 적합성 검사(automated architecture conformance checks)**와 **정적 μ½”λ“œ 뢄석 도ꡬ(static code analysis tools)**, 그리고 λ¦¬νŒ©ν† λ§ 기술이 식별에 ν™œμš©λ©λ‹ˆλ‹€ [2]. ## βš–οΈ Trade-offs & Caveats μ†ŒμŠ€μ— μ•„ν‚€ν…μ²˜ μœ„λ°˜ 선택에 λ”°λ₯Έ 직접적인 μ œμ•½ μ‚¬ν•­μ΄λ‚˜ λ°˜λŒ€ κΈ‰λΆ€(Trade-off)에 λŒ€ν•œ μ„ΈλΆ€ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μœ„λ°˜μ„ ν†΅μ œν•˜κΈ° μœ„ν•œ 관리적 μΈ‘λ©΄μ—μ„œ λ‹€μŒκ³Ό 같은 ν•œκ³„μ™€ κΈ°νšŒλΉ„μš©μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. * **예방 및 치료적 쑰치의 λΉ„μš© vs 방치 μ‹œμ˜ λ§‰λŒ€ν•œ μœ„ν—˜**: μ•„ν‚€ν…μ²˜ μœ„λ°˜μ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ•„ν‚€ν…μ²˜ κ·œμΉ™ κ°•μ œ, 정기적인 μ½”λ“œ 리뷰, μžλ™ν™”λœ ν…ŒμŠ€νŠΈμ™€ 같은 **'예방적 쑰치(preventative measures)'**λ₯Ό μ—„κ²©νžˆ μ‹œν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€ [3]. λ˜ν•œ 이미 λ°œμƒν•œ μœ„λ°˜μ— λŒ€ν•΄μ„œλŠ” λ¦¬νŒ©ν† λ§, μž¬μ„€κ³„, λ¬Έμ„œ μ—…λ°μ΄νŠΈ λ“±μ˜ **'치료적 쑰치(remedial measures)'**κ°€ μˆ˜λ°˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [3]. μ΄λŸ¬ν•œ μ‘°μΉ˜λ“€μ€ 개발 κ³Όμ •μ—μ„œ μ‹œκ°„κ³Ό λ…Έλ ₯을 μš”κ΅¬ν•˜μ§€λ§Œ, μœ„λ°˜μ„ λ°©μΉ˜ν•  경우 초기 섀계 결함과 지속적인 λ³€κ²½μœΌλ‘œ 인해 2λ…„μ΄λΌλŠ” μ‹œκ°„μ„ μž¬κ°œλ°œμ— μ†Œλͺ¨ν•΄μ•Ό ν–ˆλ˜ λ„·μŠ€μΌ€μ΄ν”„(Netscape)의 λͺ¨μ§ˆλΌ(Mozilla) λΈŒλΌμš°μ € μ‚¬λ‘€μ²˜λŸΌ λ§‰λŒ€ν•œ 수리 λΉ„μš©κ³Ό ν”„λ‘œμ νŠΈ 지연을 κ°μˆ˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€ [1, 3]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 문제 및 ν˜„μƒ] - [[Architecture Erosion]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ μœ„λ°˜μ΄ ꢁ극적으둜 μ΄ˆλž˜ν•˜λŠ” κ°€μž₯ 직접적인 결과이자 ν˜„μƒμž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ•„ν‚€ν…μ²˜ μœ„λ°˜μ΄ λ°©μΉ˜λ˜μ—ˆμ„ λ•Œ μ‹œμŠ€ν…œμ˜ μ„±λŠ₯, μœ μ§€λ³΄μˆ˜ λΉ„μš©, ν’ˆμ§ˆμ— λ―ΈμΉ˜λŠ” μž₯기적인 νŒŒκΈ‰ 효과λ₯Ό ν¬κ΄„μ μœΌλ‘œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [1, 2]. - [[Technical Debt]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ μœ„λ°˜, 지식 증발과 ν•¨κ»˜ μ•„ν‚€ν…μ²˜ 침식을 μΌμœΌν‚€λŠ” 또 λ‹€λ₯Έ μ£Όμš” μ›μΈμœΌλ‘œ λ™λ°˜ μ–ΈκΈ‰λ©λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μž„μ‹œλ°©νŽΈμ μΈ ꡬ쑰적 μœ„λ°˜μ΄ ν–₯ν›„ μ‹œμŠ€ν…œμ— μ–΄λ– ν•œ 기술적 λΆ€λ‹΄κ³Ό 이자(λΉ„μš©)둜 λ˜λŒμ•„μ˜€λŠ”μ§€ νŒŒμ•…ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1]. #### [μœ„λ°˜ 탐지 및 ν•΄κ²° 도ꡬ/기법] - [[Static Code Analysis Tools]] - μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ μœ„λ°˜ 및 침식을 쑰기에 μ‹λ³„ν•˜κ³  μ™„ν™”ν•˜κΈ° μœ„ν•΄ μ‹€λ¬΄μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” μ£Όμš” μ ‘κ·Όλ²•μž…λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 개발 κ³Όμ •μ—μ„œ μžλ™ν™”λœ λ°©μ‹μœΌλ‘œ μ•„ν‚€ν…μ²˜ μœ„λ°˜μ„ λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ½”λ“œλ² μ΄μŠ€μ˜ 일관성을 μœ μ§€ν•˜λŠ” κ΅¬ν˜„ 방법을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [2]. ### Deeper Research Questions - 일관성 기반(consistency-based) 및 결함 기반(defect-based) 접근법은 μ•„ν‚€ν…μ²˜ μœ„λ°˜μ„ μ‹œμŠ€ν…œμ μœΌλ‘œ μ–΄λ–»κ²Œ νƒμ§€ν•˜κ³  λΆ„λ₯˜ν•˜λŠ”κ°€? - μ•„ν‚€ν…μ²˜ κ·œμΉ™μ„ κ°•μ œ(enforcing architectural rules)ν•˜κ³  μžλ™ν™”λœ 적합성 검사λ₯Ό CI/CD νŒŒμ΄ν”„λΌμΈμ— ν†΅ν•©ν•˜λŠ” 졜적의 방법둠은 무엇인가? - μΆ•μ λœ μ•„ν‚€ν…μ²˜ μœ„λ°˜μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ¦¬νŒ©ν† λ§(Refactoring)κ³Ό 전면적인 μž¬μ„€κ³„(Redesign)λ₯Ό μ„ νƒν•˜λŠ” μž„κ³„ 기쀀은 μ–΄λ–»κ²Œ μ„€μ •λ˜λŠ”κ°€? - 지식 증발(knowledge vaporization) ν˜„μƒμ€ κ°œλ°œνŒ€ λ‚΄μ—μ„œ μ•„ν‚€ν…μ²˜ μœ„λ°˜μ˜ λ°œμƒ λΉˆλ„λ₯Ό μ–΄λ–»κ²Œ κ°€μ†ν™”μ‹œν‚€λŠ”κ°€? - λͺ¨μ§ˆλΌ(Mozilla) ν”„λ‘œμ νŠΈμ˜ μ‚¬λ‘€μ—μ„œ, μ•„ν‚€ν…μ²˜ μœ„λ°˜μ΄ μ†Œν”„νŠΈμ›¨μ–΄μ˜ μ§„ν™” λΉ„μš©(evolutionary costs)을 κΈ°ν•˜κΈ‰μˆ˜μ μœΌλ‘œ μ¦κ°€μ‹œν‚¨ ꡬ체적인 λ©”μ»€λ‹ˆμ¦˜μ€ λ¬΄μ—‡μ΄μ—ˆλŠ”κ°€? ### Practical Application Contexts - **Implementation:** 정적 μ½”λ“œ 뢄석 도ꡬ와 μžλ™ν™”λœ μ•„ν‚€ν…μ²˜ 적합성 검사λ₯Ό λ„μž…ν•˜μ—¬ κ΅¬ν˜„ κ³Όμ •μ—μ„œ λ°œμƒν•˜λŠ” μ•„ν‚€ν…μ²˜ μœ„λ°˜ 사항을 μ½”λ”© λ‹¨κ³„μ—μ„œ 쑰기에 μ‹λ³„ν•©λ‹ˆλ‹€ [2]. - **System Design:** λͺ¨μ§ˆλΌμ˜ μ‹€νŒ¨ 사둀λ₯Ό κ΅ν›ˆ μ‚Όμ•„, 초기 섀계 결함이 μ•„ν‚€ν…μ²˜ μœ„λ°˜ 및 μΉ¨μ‹μœΌλ‘œ 이어지지 μ•Šλ„λ‘ μ‹œμŠ€ν…œ ꡬ쑰λ₯Ό μœ μ—°ν•˜κ³  일관성 있게 μ„€κ³„ν•©λ‹ˆλ‹€ [1]. - **Operation / Maintenance:** μœ μ§€λ³΄μˆ˜ κ³Όμ •μ—μ„œ μ•„ν‚€ν…μ²˜ κ·œμΉ™μ„ κ°•μ œν•˜κ³ , 정기적인 μ½”λ“œ 리뷰와 λ¬Έμ„œ μ—…λ°μ΄νŠΈλ₯Ό μˆ˜ν–‰ν•˜μ—¬ μœ„λ°˜ λ°œμƒκ³Ό 지식 μ¦λ°œμ„ μ΅œμ†Œν™”ν•©λ‹ˆλ‹€ [3]. - **Learning Path:** μ•„ν‚€ν…μ²˜ μœ„λ°˜, 기술 뢀채, μ•„ν‚€ν…μ²˜ 침식 κ°„μ˜ 상관관계λ₯Ό ν•™μŠ΅ν•˜μ—¬ 지속 κ°€λŠ₯ν•œ μ†Œν”„νŠΈμ›¨μ–΄ μœ μ§€λ³΄μˆ˜ μ „λž΅κ³Ό μ„ μ œμ  μ•„ν‚€ν…μ²˜ κ΄€λ¦¬μ˜ μ€‘μš”μ„±μ„ ν„°λ“ν•©λ‹ˆλ‹€ [1]. - **My Project Relevance:** ν˜„μž¬ μ§„ν–‰ 쀑인 ν”„λ‘œμ νŠΈ 내에 μ‘΄μž¬ν•˜λŠ” μ•„ν‚€ν…μ²˜ μœ„λ°˜ 사항을 μΆ”μ ν•˜κ³ , 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ¦¬νŒ©ν† λ§μ΄λ‚˜ μž¬μ„€κ³„ λ“±μ˜ 치료적 쑰치(remedial measures)λ₯Ό κ³„νšν•©λ‹ˆλ‹€ [3]. ### Adjacent Topics - [[Software Architecture Recovery]] - ν™•μž₯ λ°©ν–₯: 이미 μ‹¬κ°ν•œ μ•„ν‚€ν…μ²˜ μœ„λ°˜κ³Ό 침식이 μ§„ν–‰λ˜μ–΄ λ¬Έμ„œμ™€ κ΅¬ν˜„μ΄ λΆˆμΌμΉ˜ν•˜λŠ” μ‹œμŠ€ν…œμ—μ„œ, ν˜„μž¬ κ΅¬ν˜„λœ μ•„ν‚€ν…μ²˜λ₯Ό 역곡학(reverse engineering)ν•˜μ—¬ 본래의 μ˜λ„μ™€ ꡬ쑰λ₯Ό 볡ꡬ해 λ‚΄λŠ” 기법 및 ν”„λ‘œμ„ΈμŠ€λ‘œ 이해λ₯Ό ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3]. --- *Last updated: 2026-05-02*