--- id: P-REINFORCE-WIKI-712BF9F1 category: "10_Wiki/πŸ’‘ Topics/01_Process_Methodology" confidence_score: 0.95 tags: ['agile-software-development-(μ• μžμΌ-μ†Œν”„νŠΈμ›¨μ–΄-개발)', 'big-design-up-front', 'microservices-architecture-pattern', 'event-driven-architecture-pattern', 'dynamic-systems-development-method-(dsdm)', 'process-methodology'] last_reinforced: 2026-05-02 --- # [[Agile Software Development (μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발)]] ## πŸ“Œ Brief Summary μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발(Agile Software Development)은 λ³€ν™”ν•˜λŠ” μš”κ΅¬μ‚¬ν•­μ— μ‹ μ†ν•˜κ²Œ λŒ€μ‘ν•˜κ³  μ μ§„μ μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•˜λŠ” νŒ¨λŸ¬λ‹€μž„μž…λ‹ˆλ‹€ [1]. μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ κ΄€μ μ—μ„œλŠ” κ³Όλ„ν•œ 초기 섀계(Big design up front)λ₯Ό κ²½κ³„ν•˜λ©°, 민첩성과 ꡬ쑰적 기반 μ‚¬μ΄μ˜ κ· ν˜•μ„ λ§žμΆ”κΈ° μœ„ν•΄ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€(MSA)λ‚˜ 이벀트 기반 μ•„ν‚€ν…μ²˜(EDA)와 같이 μœ μ—°ν•˜κ³  λŠμŠ¨ν•˜κ²Œ κ²°ν•©λœ μ‹œμŠ€ν…œ ꡬ쑰와 자주 κ²°ν•©ν•˜μ—¬ μ‚¬μš©λ©λ‹ˆλ‹€ [1-3]. ## πŸ“– Core Content **μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.** (제곡된 μ†ŒμŠ€ λ°μ΄ν„°μ—λŠ” μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발 자체의 ꡬ체적인 λ°©λ²•λ‘ μ΄λ‚˜ 원리에 λŒ€ν•œ 상세 정보가 λΆ€μ‘±ν•˜λ©°, 주둜 μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜μ™€μ˜ 관계 μΈ‘λ©΄μ—μ„œλ§Œ κ°„λž΅νžˆ μ–ΈκΈ‰λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. μ†ŒμŠ€λ₯Ό λ°”νƒ•μœΌλ‘œ 확인 κ°€λŠ₯ν•œ λ‚΄μš©μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.) * **μ•„ν‚€ν…μ²˜ μ„€κ³„μ™€μ˜ νŠΈλ ˆμ΄λ“œμ˜€ν”„ 및 μš°λ €μ‚¬ν•­** * μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜λŠ” 초기 섀계 λ‹¨κ³„μ—μ„œ ν–₯ν›„ λ³€κ²½ν•˜κΈ° μ–΄λ €μš΄ ꡬ쑰적 결정을 λ‚΄λ¦¬λŠ” μž‘μ—…μž…λ‹ˆλ‹€ [4]. 이둜 인해 μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발 μ§€μ§€μžλ“€μ€ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜κ°€ μ΄ˆκΈ°μ— λ„ˆλ¬΄ λ§Žμ€ 섀계(too much big design up front)λ₯Ό κ°•μ œν•˜μ—¬ 개발의 민첩성을 μ €ν•΄ν•  수 μžˆλ‹€λŠ” 우렀λ₯Ό μ œκΈ°ν•©λ‹ˆλ‹€ [1]. * **초기 섀계와 λ―Όμ²©μ„±μ˜ κ· ν˜•μ„ μœ„ν•œ 방법둠** * μ΄λŸ¬ν•œ νŠΈλ ˆμ΄λ“œμ˜€ν”„λ₯Ό μ‘°μœ¨ν•˜κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ 방법이 κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ• μžμΌ 방법둠 쀑 ν•˜λ‚˜μΈ DSDM(Dynamic Systems Development Method)은 '단지 μΆ©λΆ„ν•œ(just enough)' μ•„ν‚€ν…μ²˜ κΈ°λ°˜μ„ λ§ˆλ ¨ν•˜λŠ” 'Foundations(기반)' 단계λ₯Ό ν•„μˆ˜μ μœΌλ‘œ κ±°μΉ˜λ„λ‘ κ·œμ •ν•˜μ—¬ 초기 섀계와 λ―Όμ²©μ„±μ˜ κ· ν˜•μ„ 맞μΆ₯λ‹ˆλ‹€ [1]. * **μ• μžμΌμ„ μ§€μ›ν•˜λŠ” μ•„ν‚€ν…μ²˜ νŒ¨ν„΄** * ν˜„λŒ€μ μΈ μ‹œμŠ€ν…œ μ„€κ³„μ—μ„œλŠ” λ³€ν™”ν•˜λŠ” μš”κ΅¬μ‚¬ν•­μ— κΈ°λ―Όν•˜κ²Œ λŒ€μ‘ν•˜κΈ° μœ„ν•΄ μœ μ—°ν•œ μ•„ν‚€ν…μ²˜κ°€ μš”κ΅¬λ©λ‹ˆλ‹€. '근본적으둜 μ• μžμΌ(Agile by core)'이라고 λΆˆλ¦¬λŠ” 이벀트 기반 μ•„ν‚€ν…μ²˜(EDA)λ‚˜, κ°œλ³„ μ„œλΉ„μŠ€κ°€ λŠμŠ¨ν•˜κ²Œ κ²°ν•©λœ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜(MSA) 등은 νŒ€μ˜ μžμœ¨μ„±μ„ 높이고 μ‘°μ • λΉ„μš©μ„ 쀄여 μ†Œν”„νŠΈμ›¨μ–΄ 개발 및 배포의 민첩성(Agility)을 κ·ΉλŒ€ν™”ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€ [2, 3, 5]. ## βš–οΈ Trade-offs & Caveats **μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.** (μ†ŒμŠ€ 내에 μ• μžμΌ 개발 자체의 λ‹¨μ μ΄λ‚˜ ν•œκ³„λ₯Ό μ§μ ‘μ μœΌλ‘œ μ„œμˆ ν•œ 뢀뢄은 λΆ€μ‘±ν•˜μ§€λ§Œ, μ•„ν‚€ν…μ²˜μ™€ κ²°ν•©ν•  λ•Œ λ°œμƒν•˜λŠ” μ œμ•½ 사항은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.) * **초기 섀계 λΆ€μ‘±μœΌλ‘œ μΈν•œ μœ„ν—˜**: μ• μžμΌμ˜ νŠΉμ„±μƒ 초기 섀계λ₯Ό μ΅œμ†Œν™”ν•˜κ³  λ―Όμ²©ν•˜κ²Œ κ°œλ°œμ„ μ§„ν–‰ν•˜λ € ν•  λ•Œ, μ•„ν‚€ν…μ²˜μ  기반이 μΆ©λΆ„νžˆ λ§ˆλ ¨λ˜μ§€ μ•ŠμœΌλ©΄ μž₯기적으둜 μ‹œμŠ€ν…œμ˜ μ„±λŠ₯, ν™•μž₯μ„±, μ•ˆμ •μ„±μ— 치λͺ…적인 κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [1, 6]. * **민첩성을 μœ„ν•œ λΆ„μ‚° μ•„ν‚€ν…μ²˜ λ„μž…μ˜ μ—­νš¨κ³Ό**: μ• μžμΌν•œ μš”κ΅¬μ‚¬ν•­ λŒ€μ‘κ³Ό λΉ λ₯Έ 배포λ₯Ό μœ„ν•΄ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ λ“±μ˜ λΆ„μ‚° ν™˜κ²½μ„ 채택할 경우, 민첩성은 μ¦κ°€ν•˜μ§€λ§Œ μ‹œμŠ€ν…œ μ „λ°˜μ˜ 운영 λ³΅μž‘μ„±, λΆ„μ‚° νŠΈλžœμž­μ…˜ 관리, 디버깅 및 λͺ¨λ‹ˆν„°λ§ λ“±μ˜ λ‚œμ΄λ„κ°€ κΈ‰κ²©νžˆ μƒμŠΉν•˜λŠ” λ°˜λŒ€ κΈ‰λΆ€κ°€ λ°œμƒν•©λ‹ˆλ‹€ [7-9]. ## πŸ”— Knowledge Connections ### Related Concepts #### [μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ 및 섀계 원칙] - [[Big Design Up Front]] - μ—°κ²° 이유: μ• μžμΌ μ†Œν”„νŠΈμ›¨μ–΄ 개발 μ§€μ§€μžλ“€μ΄ μ†Œν”„νŠΈμ›¨μ–΄ μ•„ν‚€ν…μ²˜ ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•΄ κ°€μ§€λŠ” κ°€μž₯ 큰 우렀 및 λΉ„νŒ μ§€μ μž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: μ™„λ²½ν•œ 초기 섀계와 점진적/λ―Όμ²©ν•œ 개발 μ‚¬μ΄μ˜ 본질적인 좩돌, 그리고 이 λ‘˜μ˜ κ· ν˜•(Trade-off)을 λ§žμΆ”λŠ” 것이 μ•„ν‚€ν…μ²˜ μ„€κ³„μ—μ„œ μ™œ μ€‘μš”ν•œμ§€ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[Microservices Architecture Pattern]] - μ—°κ²° 이유: λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ—μ„œλ„ μž‘μ€ ꡐ차 κΈ°λŠ₯ νŒ€(cross-functional team)이 λ…λ¦½μ μœΌλ‘œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 개발, ν…ŒμŠ€νŠΈ, 배포할 수 μžˆλ„λ‘ μžμœ¨μ„±μ„ λΆ€μ—¬ν•˜μ—¬ μ• μžμΌν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” λŒ€ν‘œμ μΈ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€ [5, 10, 11]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: ꡬ쑰적인 'λŠμŠ¨ν•œ κ²°ν•©(Loose Coupling)'이 쑰직의 개발 속도와 생산성, μœ μ—°μ„± ν–₯상에 μ–΄λ–»κ²Œ μ§μ ‘μ μœΌλ‘œ κΈ°μ—¬ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ [3, 12]. - [[Event-Driven Architecture Pattern]] - μ—°κ²° 이유: 이 νŒ¨ν„΄μ€ 근본적으둜 민첩성을 내포(Agile by core)ν•˜κ³  μžˆμ–΄, λΉ„μ¦ˆλ‹ˆμŠ€μ˜ μ§„ν™”ν•˜λŠ” μš”κ΅¬μ‚¬ν•­κ³Ό λΉ λ₯Έ λŒ€μ‘μ„ μ§€μ›ν•˜λŠ” 데 주둜 μΆ”μ²œλ©λ‹ˆλ‹€ [2]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 비동기적 톡신과 이벀트λ₯Ό 톡해 μ»΄ν¬λ„ŒνŠΈ κ°„ μ˜μ‘΄μ„±μ„ λΆ„λ¦¬ν•¨μœΌλ‘œμ¨ μ‹€μ‹œκ°„ 응닡성을 λ‹¬μ„±ν•˜λŠ” 원리λ₯Ό μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€ [13, 14]. ### Deeper Research Questions μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. (μ•„λž˜λŠ” μ†ŒμŠ€μ˜ λ‚΄μš©μ„ λ°”νƒ•μœΌλ‘œ λ„μΆœν•œ μ•„ν‚€ν…μ²˜μ™€ μ• μžμΌμ˜ 상관관계λ₯Ό νŒŒκ³ λ“œλŠ” μ§ˆλ¬Έμž…λ‹ˆλ‹€.) - μ• μžμΌ ν™˜κ²½μ—μ„œ μ‹œμŠ€ν…œμ˜ μœ μ—°μ„±μ„ ν™•λ³΄ν•˜λ©΄μ„œλ„ μ•„ν‚€ν…μ²˜ 침식(Architecture erosion)κ³Ό 기술 뢀채λ₯Ό λ°©μ§€ν•  수 μžˆλŠ” '단지 μΆ©λΆ„ν•œ(Just enough)' μ•„ν‚€ν…μ²˜ μ„€κ³„μ˜ ꡬ체적 기쀀은 무엇인가? - 초기 섀계λ₯Ό κΈ°ν”Όν•˜λŠ” μ• μžμΌ 개발 λ°©μ‹μ—μ„œ, λ³΅μž‘ν•œ λΆ„μ‚° μ‹œμŠ€ν…œ(예: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€) λ„μž… μ‹œ μš”κ΅¬λ˜λŠ” μ—„κ²©ν•œ 계약(Contract) 및 도메인 뢄리 원칙을 μ–΄λ–»κ²Œ λͺ¨μˆœ 없이 μœ΅ν•©ν•  것인가? - DSDM λ°©λ²•λ‘ μ˜ 'Foundations' λ‹¨κ³„μ—μ„œ μˆ˜ν–‰λ˜λŠ” μ•„ν‚€ν…μ²˜ μ„€κ³„λŠ” λ‹€λ₯Έ μ• μžμΌ ν”„λ ˆμž„μ›Œν¬(Scrum, Kanban λ“±)의 μŠ€ν”„λ¦°νŠΈ μ£ΌκΈ° λ‚΄μ—μ„œ μ–΄λ–»κ²Œ λ‹€λ₯΄κ²Œ 적용될 수 μžˆλŠ”κ°€? - νŠΈλž˜ν”½μ΄ κΈ‰μ¦ν•˜λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ„ μ• μžμΌν•˜κ²Œ ꡬ좕할 λ•Œ, μ„±λŠ₯ μ €ν•˜λ‚˜ 단일 μž₯애점(SPOF) 문제λ₯Ό 사전 섀계 없이 μ μ§„μ μœΌλ‘œ λ¦¬νŒ©ν† λ§ν•˜λŠ” κ²ƒμ˜ ν•œκ³„μ™€ μœ„ν—˜ λΉ„μš©μ€ μ–Όλ§ˆμΈκ°€? ### Practical Application Contexts **μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.** (μ•„λž˜ λ‚΄μš©μ€ μ£Όμ–΄μ§„ μ†ŒμŠ€ λ‚΄μ—μ„œ μ• μžμΌκ³Ό μ•„ν‚€ν…μ²˜μ˜ 연관성을 μΆ”μΆœν•˜μ—¬ κ΅¬μ„±ν•œ λ§₯λ½μž…λ‹ˆλ‹€.) - **Implementation:** λ³΅μž‘μ„±μ„ κ΄€λ¦¬ν•˜κ³  지속적인 κ°œμ„ μ„ μ΄‰μ§„ν•˜κΈ° μœ„ν•΄ μ‹œμŠ€ν…œμ„ 단일 μ½”λ“œλ² μ΄μŠ€(Monolith)둜 λ¬ΆκΈ°λ³΄λ‹€λŠ”, λ…λ¦½μ μœΌλ‘œ 배포할 수 μžˆλŠ” μž‘μ€ λͺ¨λ“ˆμ΄λ‚˜ μ„œλΉ„μŠ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ κ°œλ°œμ„ μ§„ν–‰ν•©λ‹ˆλ‹€ [11, 15]. - **System Design:** μ²˜μŒλΆ€ν„° μ™„λ²½ν•˜κ³  κ±°λŒ€ν•œ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜λ₯Ό μ„€κ³„ν•˜κΈ°λ³΄λ‹€λŠ”, μš”κ΅¬μ‚¬ν•­μ˜ 변화에 μ‹ μ†ν•˜κ²Œ 적응할 수 μžˆλ„λ‘ λŠμŠ¨ν•˜κ²Œ κ²°ν•©λœ 섀계(예: MSA, EDA)λ₯Ό μ±„νƒν•©λ‹ˆλ‹€ [1, 3]. - **Operation / Maintenance:** μžλ™ν™”λœ 배포 νŒŒμ΄ν”„λΌμΈ(DevOps, CI/CD)을 κ΅¬μΆ•ν•˜μ—¬, μ•„ν‚€ν…μ²˜μ˜ 민첩성을 운영 λ‹¨κ³„μ˜ λΉˆλ²ˆν•˜κ³  μ•ˆμ •μ μΈ 배포둜 μ§κ²°μ‹œν‚΅λ‹ˆλ‹€ [5, 10]. - **Learning Path:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. - **My Project Relevance:** μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€. ### Adjacent Topics - [[Dynamic Systems Development Method (DSDM)]] - ν™•μž₯ λ°©ν–₯: μ• μžμΌ μ² ν•™κ³Ό 초기 μ„€κ³„μ˜ ν•„μš”μ„± μ‚¬μ΄μ˜ κ· ν˜•μ„ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ„μž…λœ μ• μžμΌ λ°©λ²•λ‘ μœΌλ‘œ, μ•„ν‚€ν…μ²˜ 기반 섀계λ₯Ό μ˜λ¬΄ν™”ν•˜λŠ” 과정에 λŒ€ν•œ μΆ”κ°€ 쑰사가 κ°€λŠ₯ν•©λ‹ˆλ‹€ [1]. - [[Conway's Law (μ½˜μ›¨μ΄μ˜ 법칙)]] - ν™•μž₯ λ°©ν–₯: 쑰직의 μ˜μ‚¬μ†Œν†΅ ꡬ쑰가 μ†Œν”„νŠΈμ›¨μ–΄ μ‹œμŠ€ν…œμ˜ 섀계(μ•„ν‚€ν…μ²˜)에 κ·ΈλŒ€λ‘œ λ°˜μ˜λœλ‹€λŠ” μ›λ¦¬λ‘œ, μ• μžμΌμ„ μ§€ν–₯ν•˜λŠ” μž‘μ€ ꡐ차 κΈ°λŠ₯ νŒ€ ꡬ쑰가 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ™€ 같은 λΆ„μ‚° μ•„ν‚€ν…μ²˜λ₯Ό λ‚³κ²Œ λ˜λŠ” 배경으둜 ν™•μž₯이 κ°€λŠ₯ν•©λ‹ˆλ‹€ [10, 16]. --- *Last updated: 2026-05-02*