--- id: P-REINFORCE-WIKI-F52EDA8A category: "10_Wiki/πŸ’‘ Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['software-architecture-documentation', 'architecture-decision-records-(adr)', 'c4-model', "kruchten's-4+1-view-model", 'architecture-tradeoff-analysis-method-(atam)', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Software Architecture Documentation]] ## πŸ“Œ Brief μ†ŒμŠ€ Summary μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ λ¬Έμ„œν™”(Software Architecture Documentation)λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ˜ κ³ μˆ˜μ€€ 섀계 및 ꡬ쑰적 κ²°μ • 사항을 κΈ°λ‘ν•˜μ—¬ μ΄ν•΄κ΄€κ³„μž κ°„μ˜ μ†Œν†΅μ„ μ΄‰μ§„ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€ [1, 2]. μ΄λŠ” 초기 섀계 결정을 ν¬μ°©ν•˜κ³ , ꡬ성 μš”μ†Œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이며, μ•„ν‚€ν…μ²˜ κ²°μ • 기둝(ADR) 및 닀각적 λ·°(View) λͺ¨λΈμ„ 톡해 μ‹œκ°„μ΄ μ§€λ‚˜λ„ μ‹œμŠ€ν…œμ˜ ꡬ쑰와 μ˜λ„λ₯Ό 좔적할 수 μžˆλ„λ‘ λ•λŠ” 핡심 지식 관리 ν™œλ™μž…λ‹ˆλ‹€ [1-3]. ## πŸ“– Core Content * **λ¬Έμ„œν™”μ˜ λͺ©μ κ³Ό κ°€μΉ˜:** μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λŠ” 일단 κ΅¬ν˜„λ˜κ³  λ‚˜λ©΄ λ³€κ²½ν•˜λŠ” 데 맀우 높은 λΉ„μš©μ΄ μˆ˜λ°˜λ©λ‹ˆλ‹€ [4, 5]. λ”°λΌμ„œ μ‹œμŠ€ν…œμ΄ κ΅¬μΆ•λ˜κΈ° 전에 미리 λ™μž‘μ„ λΆ„μ„ν•˜κ³ , λΉ„μš©μ„ μ ˆκ°ν•˜λ©°, μœ„ν—˜μ„ μ™„ν™”ν•˜κΈ° μœ„ν•΄ μ„€κ³„μ˜ 근거와 ꡬ쑰λ₯Ό λͺ…ν™•νžˆ λ¬Έμ„œν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€ [6]. 잘 μž‘μ„±λœ λ¬Έμ„œλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ κ΄€λ¦¬μž, μ‚¬μš©μž, 개발자 λ“± λ‹€μ–‘ν•œ μ΄ν•΄κ΄€κ³„μžμ˜ μš”κ΅¬μ‚¬ν•­μ΄ 섀계에 μ–΄λ–»κ²Œ λ°˜μ˜λ˜μ—ˆλŠ”μ§€λ₯Ό μ†Œν†΅ν•˜λŠ” 도ꡬ가 되며, μœ„ν—˜ 관리 및 μ•„ν‚€ν…μ²˜μ˜ κ°œλ…μ  무결성(Conceptual integrity)을 μœ μ§€ν•˜λŠ” 데 ν•„μˆ˜μ μž…λ‹ˆλ‹€ [6-8]. * **μ•„ν‚€ν…μ²˜ κ²°μ • 기둝 (Architecture Decision Records, ADR):** μ•„ν‚€ν…μ²˜ 섀계 κ³Όμ •μ—μ„œμ˜ 선택은 μ’…μ’… λŒμ΄ν‚¬ 수 μ—†λŠ” νŠΉμ„±μ„ μ§€λ‹ˆλ©°, μ‹œκ°„μ΄ 흐λ₯΄λ©΄ κ·Έ κ²°μ •μ˜ 배경이 μ‰½κ²Œ μžŠν˜€μ§‘λ‹ˆλ‹€ [3]. 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” ADR은 결정이 λ‚΄λ €μ§„ λ§₯락(Context), κ²°μ • λ‚΄μš©(Decision), 이유(Reason), κ³ λ €ν–ˆλ˜ λŒ€μ•ˆ(Alternatives), 그리고 μœ„ν—˜ 및 κ²°κ³Ό(Risks and consequences)λ₯Ό 투λͺ…ν•˜κ²Œ κΈ°λ‘ν•©λ‹ˆλ‹€ [9, 10]. ADR은 μ‹ κ·œ νŒ€μ›, κ°μ‚¬μž, 그리고 미래의 κ°œλ°œμžκ°€ μ‹œμŠ€ν…œμ„ μ΄ν•΄ν•˜κ³  μ§„ν™”μ‹œν‚€λŠ” 데 μžˆμ–΄ κ°€μž₯ μ€‘μš”ν•œ μžμ‚°μ΄ λ©λ‹ˆλ‹€ [3, 10]. * **μ•„ν‚€ν…μ²˜ λ·°(Views)와 λͺ¨λΈλ§:** μ•„ν‚€ν…μ²˜ λ¬Έμ„œλŠ” 단일 관점이 μ•„λ‹Œ, μ—¬λŸ¬ μ΄ν•΄κ΄€κ³„μžμ˜ 관심사λ₯Ό 닀루기 μœ„ν•΄ λΆ„λ¦¬λœ λ‹€μ–‘ν•œ 'λ·°(View)'λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„€λͺ…λ©λ‹ˆλ‹€ [2, 7]. 동적 λ·°(μ‹œμŠ€ν…œ μ‹€ν–‰ μ‹œ λ™μž‘), 정적 λ·°(μ½”λ“œ ꡬ쑰), 배포 λ·°(ν•˜λ“œμ›¨μ–΄ 배치) 등이 ν¬ν•¨λ˜λ©°, 크루첸(Kruchten)의 4+1 λ·° λͺ¨λΈμ΄λ‚˜ C4 λͺ¨λΈκ³Ό 같은 방법둠이 ꡬ쑰λ₯Ό μœ μ—°ν•˜κ²Œ μ‹œκ°ν™”ν•˜κ³  λ¬Έμ„œν™”ν•˜λŠ” 데 자주 μ‚¬μš©λ©λ‹ˆλ‹€ [2, 4]. * **지식 관리 및 μ†Œν†΅(Knowledge Management & Communication):** μ•„ν‚€ν…μ²˜ 섀계 지식은 μ’…μ’… μ΄ν•΄κ΄€κ³„μžλ“€μ˜ 머릿속에 μ•”λ¬΅μ§€λ‘œ λ‚¨μ•„μžˆλŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€ [2]. 이메일과 같은 λΉ„μ •ν˜•μ μΈ λ°©μ‹μœΌλ‘œ μ•„ν‚€ν…μ²˜λ₯Ό κ²°μ •ν•˜κ³  μ†Œν†΅ν•  경우 ν•©μ˜μ— 이λ₯΄μ§€ λͺ»ν•˜κ³  지식이 증발(Knowledge vaporization)ν•  μœ„ν—˜μ΄ λ†’μŠ΅λ‹ˆλ‹€ [11, 12]. λ”°λΌμ„œ λ¬Έμ„œν™”λŠ” μœ„ν‚€(Wiki) λ“± μ ‘κ·Ό κ°€λŠ₯ν•œ 쀑앙 μ €μž₯μ†Œμ— κΈ°λ‘λ˜μ–΄ 단일 μ§„μ‹€ 곡급원(Single source of truth)으둜 κ΄€λ¦¬λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€ [11]. ## βš–οΈ Trade-offs & Caveats * **μ• μžμΌ(Agile) μ›μΉ™κ³Όμ˜ 좩돌 및 κ· ν˜•:** 섀계 λ‹¨κ³„μ—μ„œ μ§€λ‚˜μΉ˜κ²Œ λ§Žμ€ 사전 λ¬Έμ„œν™”(Big design up front)λ₯Ό μˆ˜ν–‰ν•˜λŠ” 것은 μ• μžμΌ 개발 방법둠이 μΆ”κ΅¬ν•˜λŠ” 민첩성과 상좩될 수 μžˆμŠ΅λ‹ˆλ‹€ [13]. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 개발 μ£ΌκΈ° λ‚΄λ‚΄ 'μΆ©λΆ„ν•œ μˆ˜μ€€(just enough)'의 μ•„ν‚€ν…μ²˜ 기반만 λ¬Έμ„œν™”ν•˜κ³  ν”Όλ“œλ°±μ— 따라 μ§€μ†μ μœΌλ‘œ μ‘°μ •ν•΄ λ‚˜κ°€λŠ” 절좩이 ν•„μš”ν•©λ‹ˆλ‹€ [4, 13]. * **μ•„ν‚€ν…μ²˜ 침식(Architecture Erosion):** 초기 μ•„ν‚€ν…μ²˜ λ¬Έμ„œκ°€ μ§€μ†μ μœΌλ‘œ κ΄€λ¦¬λ˜μ§€ μ•Šκ³  방치되면, μ‹œκ°„μ΄ 지남에 따라 μ˜λ„ν–ˆλ˜ μ•„ν‚€ν…μ²˜μ™€ μ‹€μ œλ‘œ κ΅¬ν˜„λœ μ‹œμŠ€ν…œ(μ½”λ“œ) 간에 점진적인 격차가 λ°œμƒν•˜λŠ” 'μ•„ν‚€ν…μ²˜ 침식'이 λ°œμƒν•©λ‹ˆλ‹€ [12, 14]. μ΄λŠ” 기술 뢀채 증가와 μœ μ§€λ³΄μˆ˜ λΉ„μš© κΈ‰μ¦μœΌλ‘œ μ΄μ–΄μ§€λ―€λ‘œ, 정기적인 리뷰와 λ¬Έμ„œ μ—…λ°μ΄νŠΈλ₯Ό 톡해 μ‹€μ œ ν™˜κ²½(νŠΈλž˜ν”½ 증가, νŒ€ λ³€κ²½ λ“±)κ³Ό μ•„ν‚€ν…μ²˜λ₯Ό 동기화해야 ν•©λ‹ˆλ‹€ [12, 15, 16]. * **μ˜μ‚¬κ²°μ • μ§€μ—°(Analysis Paralysis):** 잘λͺ»λœ 결정을 내릴 것을 μš°λ €ν•˜μ—¬ μ™„λ²½ν•œ λ¬Έμ„œν™”λ‚˜ 뢄석을 μΆ”κ΅¬ν•˜λ‹€ 보면 μ•„ν‚€ν…μ²˜ 결정이 지연될 수 μžˆμŠ΅λ‹ˆλ‹€ [11]. λ”°λΌμ„œ 정보가 μΆ©λΆ„νžˆ λͺ¨μ΄λŠ” 'λ§ˆμ§€λ§‰ μ±…μž„ μˆœκ°„(last responsible moment)'에 결정을 내리고, λ³€κ²½ 사항을 즉각 λ¬Έμ„œν™”ν•˜μ—¬ νŒ€μ˜ 진행을 λ°©ν•΄ν•˜μ§€ μ•ŠλŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€ [11]. ## πŸ”— Knowledge Connections ### Related Concepts #### [섀계 및 μ˜μ‚¬κ²°μ • 도ꡬ (Design & Decision Tools)] * [[Architecture Decision Records (ADR)]] * μ—°κ²° 이유: μ•„ν‚€ν…μ²˜ κ²°μ • κ³Όμ •μ—μ„œ μ„ νƒν•œ 기술, λ°°μ œν•œ λŒ€μ•ˆ, 이유 및 μ˜ˆμƒ κ²°κ³Όλ₯Ό κΈ°λ‘ν•˜μ—¬ λ¬Έμ„œν™”ν•˜λŠ” κ°€μž₯ μ‹€μš©μ μ΄κ³  핡심적인 ν¬λ§·μž…λ‹ˆλ‹€ [3, 9, 10]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ‹œκ°„μ΄ μ§€λ‚˜κ³  인λ ₯이 κ΅μ²΄λ˜μ–΄λ„ μ‹œμŠ€ν…œμ˜ 섀계 λ§₯락을 μœ μ§€ν•˜μ—¬ μœ μ§€λ³΄μˆ˜μ„±κ³Ό μ§„ν™” κ°€λŠ₯성을 ν™•λ³΄ν•˜λŠ” 방법. * [[C4 Model]] * μ—°κ²° 이유: κ°œλ°œνŒ€μ΄ κ³Όλ„ν•œ 사전 섀계에 λΉ μ§€μ§€ μ•Šλ„λ‘ 돕고, ν•„μš”ν•œ μˆ˜μ€€μ—μ„œλ§Œ μ‹œμŠ€ν…œ ꡬ성을 μœ μ—°ν•˜κ³  μ§κ΄€μ μœΌλ‘œ λͺ¨λΈλ§(λ¬Έμ„œν™”)ν•  수 μžˆλ„λ‘ μ§€μ›ν•˜λŠ” λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [4]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ½”λ“œ λ ˆλ²¨λΆ€ν„° 전체 μ‹œμŠ€ν…œ μ»¨ν…μŠ€νŠΈκΉŒμ§€ λ‹€μ–‘ν•œ 좔상화 μˆ˜μ€€μ—μ„œ μ•„ν‚€ν…μ²˜λ₯Ό μ‹œκ°ν™”ν•˜μ—¬ μ†Œν†΅ν•˜λŠ” 기법. * [[Kruchten's 4+1 View Model]] * μ—°κ²° 이유: μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ λ¬Έμ„œλ₯Ό 정적 λ·°, 동적 λ·°, 배포 λ·° λ“± λ‹€μ–‘ν•œ μ΄ν•΄κ΄€κ³„μž(개발자, μ‚¬μš©μž, κ΄€λ¦¬μž)의 관점을 λΆ„λ¦¬ν•˜μ—¬ ν†΅ν•©μ μœΌλ‘œ μ„€λͺ…ν•˜λŠ” ν‘œμ€€ 기법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€ [2, 7]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ³΅μž‘ν•œ μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­μ„ κ΄€μ λ³„λ‘œ 뢄리(Separation of concerns)ν•˜μ—¬ μ²΄κ³„μ μœΌλ‘œ λͺ…μ„Έν•˜κ³  λ¬Έμ„œν™”ν•˜λŠ” 원리. #### [μ•„ν‚€ν…μ²˜ 평가 및 관리 (Architecture Evaluation & Management)] * [[Architecture Tradeoff Analysis Method (ATAM)]] * μ—°κ²° 이유: λ¬Έμ„œν™”λœ μ•„ν‚€ν…μ²˜κ°€ λΉ„μ¦ˆλ‹ˆμŠ€ 및 ν’ˆμ§ˆ λͺ©ν‘œλ₯Ό μ–Όλ§ˆλ‚˜ 잘 μΆ©μ‘±ν•˜λŠ”μ§€ ꡬ체적인 'μ‹œλ‚˜λ¦¬μ˜€'λ₯Ό λ°”νƒ•μœΌλ‘œ ν‰κ°€ν•˜κ³ , μ ˆμΆ©μ•ˆ(Trade-off)을 λΆ„μ„ν•˜λŠ” 곡식적인 λ°©λ²•λ‘ μž…λ‹ˆλ‹€ [17-19]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: λ¬Έμ„œν™”λœ λ‚΄μš©μ„ κ²€μ¦ν•˜κ³ , μ—¬λŸ¬ ν’ˆμ§ˆ 속성(μ„±λŠ₯, λ³΄μ•ˆ λ“±) κ°„μ˜ 좩돌 지점을 μ‹λ³„ν•˜λŠ” 방법. * [[Software Architecture Erosion]] * μ—°κ²° 이유: λ¬Έμ„œν™”λ₯Ό μ΅œμ‹  μƒνƒœλ‘œ μœ μ§€ν•˜μ§€ μ•Šκ³  λ°©μΉ˜ν•  λ•Œ λ°œμƒν•˜λŠ” λŒ€ν‘œμ μΈ λΆ€μž‘μš©μœΌλ‘œ, μ˜λ„λœ 섀계와 μ‹€μ œ μ½”λ“œ κ΅¬ν˜„ κ°„μ˜ 괴리λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€ [12, 14]. * 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 정적 μ½”λ“œ 뢄석, λ¦¬νŒ©ν† λ§ 및 λ¬Έμ„œ μ—…λ°μ΄νŠΈλ₯Ό 톡해 기술 뢀채λ₯Ό λ°©μ§€ν•˜κ³  μ•„ν‚€ν…μ²˜λ₯Ό μœ μ§€ λ³΄μˆ˜ν•˜λŠ” μ „λž΅. ### Deeper Research Questions * μ• μžμΌ(Agile) ν™˜κ²½μ—μ„œ κ³Όλ„ν•œ 사전 섀계λ₯Ό ν”Όν•˜λ©΄μ„œλ„(Big design up front μ§€μ–‘), μ‹œμŠ€ν…œ μ•ˆμ •μ„±μ„ 보μž₯ν•  수 μžˆλŠ” 'μΆ©λΆ„ν•œ μˆ˜μ€€(Just enough)'의 μ•„ν‚€ν…μ²˜ λ¬Έμ„œν™”λŠ” μ–΄λŠ 정도λ₯Ό μ˜λ―Έν•˜λ©° μ–΄λ–»κ²Œ 기쀀을 μž‘μ•„μ•Ό ν•˜λŠ”κ°€? [4, 13] * 이메일 λ“± λ‹¨νŽΈμ  μ†Œν†΅μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” μ•„ν‚€ν…μ²˜ μ§€μ‹μ˜ 증발(Knowledge Vaporization)을 λ°©μ§€ν•˜κΈ° μœ„ν•΄, ADR을 νŒ€μ˜ CI/CD νŒŒμ΄ν”„λΌμΈμ΄λ‚˜ 버전 관리 μ‹œμŠ€ν…œκ³Ό μ–΄λ–»κ²Œ ν†΅ν•©ν•˜μ—¬ μš΄μ˜ν•  수 μžˆλŠ”κ°€? [11, 12] * μ‹œκ°„μ΄ 지남에 따라 λ¬Έμ„œμ™€ μ‹€μ œ κ΅¬ν˜„μ΄ λ‹¬λΌμ§€λŠ” 'μ•„ν‚€ν…μ²˜ 침식(Architecture Erosion)'을 κ°μ§€ν•˜κΈ° μœ„ν•΄, 정적 μ½”λ“œ 뢄석(Static code analysis) 도ꡬ와 μ•„ν‚€ν…μ²˜ λ¬Έμ„œλ₯Ό μ–΄λ–»κ²Œ μ—°λ™ν•˜μ—¬ μžλ™ν™”λœ 검증을 μˆ˜ν–‰ν•  수 μžˆλŠ”κ°€? [12, 15] * ADR μž‘μ„± μ‹œ μ„±λŠ₯, λ³΄μ•ˆ, 개발 속도 λ“± μ„œλ‘œ μƒμΆ©ν•˜λŠ” ν’ˆμ§ˆ νŠΉμ„± κ°„μ˜ μ ˆμΆ©μ•ˆ(Trade-off)을 ATAM κ΄€μ μ—μ„œ μ–΄λ–»κ²Œ μ‹œλ‚˜λ¦¬μ˜€ν™”ν•˜μ—¬ λ¬Έμ„œμ— 효과적으둜 λ‹΄μ•„λ‚Ό 수 μžˆλŠ”κ°€? [18, 19] * 4+1 View Modelμ΄λ‚˜ C4 Model을 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜(MSA)λ‚˜ 이벀트 기반 μ•„ν‚€ν…μ²˜(EDA)와 같이 동적이고 λΆ„μ‚°λœ ν˜„λŒ€μ  ν™˜κ²½μ˜ λ¬Έμ„œν™”μ— μ μš©ν•  λ•Œ λ°œμƒν•˜λŠ” ν•œκ³„μ μ€ 무엇이며 이λ₯Ό μ–΄λ–»κ²Œ 보완할 수 μžˆλŠ”κ°€? [2, 20] ### Practical Application Contexts * **Implementation:** 핡심 기술 μŠ€νƒ λ³€κ²½, λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 뢄리 λ“± λŒμ΄ν‚€κΈ° νž˜λ“  μ£Όμš” 개발 결정을 내릴 λ•Œ, κ²°μ •μ˜ λ§₯락과 기각된 λŒ€μ•ˆλ“€μ„ ADR(Architecture Decision Record) 양식에 맞좰 μž‘μ„±ν•œ ν›„ 사내 μœ„ν‚€λ‚˜ ν˜•μƒ 관리 μ‹œμŠ€ν…œμ— μ»€λ°‹ν•˜μ—¬ νžˆμŠ€ν† λ¦¬λ₯Ό λ³΄μ‘΄ν•©λ‹ˆλ‹€ [3, 9, 10]. * **System Design:** μ‹œμŠ€ν…œμ„ 처음 μ„€κ³„ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ λͺ¨λ“ˆμ„ μΆ”κ°€ν•  λ•Œ C4 λͺ¨λΈ ν˜Ήμ€ 4+1 λ·° λͺ¨λΈμ„ ν™œμš©ν•΄ λ‹€μ΄μ–΄κ·Έλž¨μ„ 그리고 λ¬Έμ„œν™”ν•˜μ—¬, λ°±μ—”λ“œ 개발자, DB κ΄€λ¦¬μž, λΉ„μ¦ˆλ‹ˆμŠ€ μ΄ν•΄κ΄€κ³„μžλ“€μ΄ 각자의 κ΄€μ μ—μ„œ μ‹œμŠ€ν…œ ꡬ쑰λ₯Ό λͺ…ν™•νžˆ μ΄ν•΄ν•˜λ„λ‘ λ•μŠ΅λ‹ˆλ‹€ [2, 4]. * **Operation / Maintenance:** νŠΈλž˜ν”½ νŒ¨ν„΄ λ³€ν™”λ‚˜ μƒˆλ‘œμš΄ 규제 λ„μž… λ“±μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€/운영 λ§₯락이 λ³€ν–ˆμ„ λ•Œ, μ‹œμŠ€ν…œ ꡬ쑰 λ³€κ²½ 사항을 λ°˜μ˜ν•˜κΈ° μœ„ν•΄ 정기적인 리뷰 μ„Έμ…˜μ„ κ°–κ³  λ¬Έμ„œμ™€ μ‹€μ œ μ½”λ“œκ°€ λΆˆμΌμΉ˜ν•˜λŠ” 'μ•„ν‚€ν…μ²˜ 침식'이 μ—†λŠ”μ§€ μ κ²€ν•˜μ—¬ λ¬Έμ„œλ₯Ό μ΅œμ‹ ν™”ν•©λ‹ˆλ‹€ [12, 15, 16]. * **Learning Path:** μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜μ˜ 이둠적 νŠΉμ„±(결합도, 응집도, ν™•μž₯μ„± λ“±)을 ν•™μŠ΅ν•œ λ’€, 유λͺ…ν•œ μ‹œμŠ€ν…œ(예: Netflix의 MSA μ „ν™˜)의 κ³Όκ±° μ•„ν‚€ν…μ²˜ 결정을 ADR ν˜•νƒœλ‘œ 역뢄석(Reverse Engineering)ν•΄ 보며 μ‹€μ œ μ˜μ‚¬κ²°μ •μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό μ²΄λ“ν•©λ‹ˆλ‹€ [21, 22]. * **My Project Relevance:** ν˜„μž¬ μ†Œμ†λœ ν”„λ‘œμ νŠΈ νŒ€μ—μ„œ μ•„ν‚€ν…μ²˜ κ²°μ • 사항이 μ΄λ©”μΌμ΄λ‚˜ κ΅¬λ‘λ‘œλ§Œ λ…Όμ˜λ˜κ³  μžˆλ‹€λ©΄, 이λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ λ„μž…ν•˜κ³ μž ν•˜λŠ” μ•„ν‚€ν…μ²˜ νŒ¨ν„΄(예: κ³„μΈ΅ν˜• ꡬ쑰, 클린 μ•„ν‚€ν…μ²˜ λ“±)의 λ„μž… μ΄μœ μ™€ μ˜ˆμƒ μ œμ•½ 사항을 담은 μ˜μ‚¬κ²°μ • ν…œν”Œλ¦Ώμ„ λ„μž…ν•΄ νŒ€ λ‚΄ ν‘œμ€€ μ†Œν†΅ λ„κ΅¬λ‘œ μ •μ°©μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 11]. ### Adjacent Topics * [[Requirements Engineering]] * ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ λ¬Έμ„œν™”κ°€ μ‹œμŠ€ν…œμ΄ 'μ–΄λ–»κ²Œ(How)' μž‘λ™ν• μ§€μ— λŒ€ν•œ μ†”λ£¨μ…˜ 곡간을 닀룬닀면, μš”κ΅¬κ³΅ν•™μ€ μ‹œμŠ€ν…œμ΄ '무엇을(What)' ν•΄μ•Ό ν•˜λŠ”μ§€ 문제 곡간을 μ •μ˜ν•©λ‹ˆλ‹€. λ‘˜ μ‚¬μ΄μ˜ κ²ΉμΉ˜λŠ” μ˜μ—­μ„ λΆ„μ„ν•˜κ³ , μš”κ΅¬μ‚¬ν•­μ΄ μ–΄λ–»κ²Œ μ•„ν‚€ν…μ²˜ κ²°μ •μœΌλ‘œ 이어지고 λ‹€μ‹œ μƒˆλ‘œμš΄ μš”κ΅¬μ‚¬ν•­μ„ λ„μΆœν•˜λŠ”μ§€(Twin Peaks λͺ¨λΈ λ“±)λ₯Ό ν™•μž₯ν•˜μ—¬ 탐ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€ [23, 24]. * [[Software Architecture Recovery (Reverse Engineering)]] * ν™•μž₯ λ°©ν–₯: μ•„ν‚€ν…μ²˜ λ¬Έμ„œκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ κ·Ήμ‹¬ν•œ μ•„ν‚€ν…μ²˜ 침식이 μΌμ–΄λ‚œ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œμ—μ„œ, ν˜„μž¬ κ΅¬ν˜„λœ μ½”λ“œμ™€ ν™˜κ²½μ„ 기반으둜 μ›λž˜μ˜ μ•„ν‚€ν…μ²˜λ₯Ό μœ μΆ”ν•΄ λ‚΄κ³  λ‹€μ‹œ λ¬Έμ„œν™”ν•˜λŠ” 정적 ν”„λ‘œκ·Έλž¨ 뢄석 및 역곡학 κΈ°λ²•μœΌλ‘œ ν•™μŠ΅μ„ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [22]. --- *Last updated: 2026-05-02*