--- id: wiki-2026-0508-bpm title: BPM category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-REINFORCE-WIKI-0C43BD75] duplicate_of: none source_trust_level: A confidence_score: 0.95 tags: [bpm, event-driven-architecture, mediator-topology, bpel, jbpm, architecture-principles] raw_sources: [] last_reinforced: 2026-05-02 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[BPM]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) BPM(Business Process Management) μ‹€ν–‰ 엔진은 이벀트 기반 μ•„ν‚€ν…μ²˜(Event-Driven Architecture)의 메디에이터 ν† ν΄λ‘œμ§€(Mediator Topology) λ‚΄μ—μ„œ, 주둜 μΈκ°„μ˜ κ°œμž…μ΄ ν•„μš”ν•˜κ±°λ‚˜ μ‹€ν–‰ μ‹œκ°„μ΄ κΈ΄ λ³΅μž‘ν•œ 이벀트 μ‘°μ • 및 였λ₯˜ 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” μ •κ΅ν•œ ν”„λ‘œμ„ΈμŠ€ μžλ™ν™” μ—”μ§„μž…λ‹ˆλ‹€ [1]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μ†ŒμŠ€μ—μ„œ μ œκ³΅ν•˜λŠ” BPM에 λŒ€ν•œ 핡심 λ‚΄μš©μ€ 이벀트 기반 μ•„ν‚€ν…μ²˜μ˜ 메디에이터(Mediator) κ΅¬ν˜„ 방식과 μ—°κ΄€λ˜μ–΄ μ œν•œμ μœΌλ‘œ μ„€λͺ…λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. * **μΈκ°„μ˜ κ°œμž…κ³Ό μž₯κΈ° μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€ 처리:** 이벀트 μ‘°μ • 및 였λ₯˜ 처리 κ³Όμ •μ—μ„œ μΈκ°„μ˜ μƒν˜Έμž‘μš©(human intervention)이 ν•„μš”ν•˜μ—¬ 처리 μ‹œκ°„μ΄ κΈΈμ–΄μ§€λŠ”(long run times) 경우, BPEL(Business Process Execution Language) λ§€λ‹ˆμ €λ³΄λ‹€ 더 κ³ λ„ν™”λœ BPM μ‹€ν–‰ 엔진을 μ‚¬μš©ν•˜λŠ” 것이 μ ν•©ν•©λ‹ˆλ‹€ [1]. * **κ³ λ„ν™”λœ ν”„λ‘œμ„ΈμŠ€ μžλ™ν™”:** BPM 엔진은 λ‹€μˆ˜μ˜ 도메인 νŠΉν™” μ–Έμ–΄(DSL, Domain Specific Language)λ₯Ό μ‚¬μš©ν•˜μ—¬ 보닀 μ •κ΅ν•œ ν”„λ‘œμ„ΈμŠ€ μžλ™ν™” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€ [1]. * **κ΅¬ν˜„ 인프라:** μ΄λŸ¬ν•œ BPM 기반의 이벀트 메디에이터 κ΅¬ν˜„μ„ μ§€μ›ν•˜λŠ” 인프라 라이브러리의 λŒ€ν‘œμ μΈ μ˜ˆμ‹œλ‘œ jBPM이 ν™œμš©λ©λ‹ˆλ‹€ [1]. *μ°Έκ³ : BPM의 세뢀적인 μž‘λ™ μ›λ¦¬λ‚˜ ꡬ쑰, κ·Έ μ™Έ μ•„ν‚€ν…μ²˜μ  νŠΉμ„±μ— λŒ€ν•΄μ„œλŠ” μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.* ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) *μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.* (λ‹€λ§Œ μ†ŒμŠ€ λ‚΄μš©μ„ 톡해 μΆ”λ‘ ν•  λ•Œ, λ‹¨μˆœν•œ ν”„λ‘œκ·Έλž˜λ° 기반 λ©”λ””μ—μ΄ν„°λ‚˜ BPELλ‘œλŠ” μ²˜λ¦¬ν•˜κΈ° μ–΄λ €μš΄ 'μΈκ°„μ˜ κ°œμž…' 및 'κΈ΄ μ‹€ν–‰ μ‹œκ°„'을 닀루기 μœ„ν•΄ 더 μ •κ΅ν•œ(sophisticated) 닀쀑 DSL 기반의 엔진이 ν•„μš”ν•˜λ‹€λŠ” μ œμ•½μ—μ„œ BPM이 λ„μž…λ¨μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€ [1]. ꡬ체적인 λ‹¨μ μ΄λ‚˜ λΆ€μž‘μš©μ— λŒ€ν•œ 언급은 μ†ŒμŠ€μ— ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.) ## πŸ”— 지식 μ—°κ²° (Graph) ### Related Concepts #### [μ•„ν‚€ν…μ²˜/기반 기술] - [[Event-Driven Architecture]] - μ—°κ²° 이유: BPM 엔진은 이벀트 기반 μ•„ν‚€ν…μ²˜ μƒνƒœκ³„ λ‚΄μ—μ„œ λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€μ™€ 이벀트의 흐름을 ν†΅μ œν•˜λŠ” λͺ©μ μœΌλ‘œ ν™œμš©λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€ [1-3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: BPM이 비동기 톡신 ν™˜κ²½μ—μ„œ 이벀트λ₯Ό μ–΄λ–»κ²Œ μ†ŒλΉ„ν•˜κ³  후속 처리λ₯Ό νŠΈλ¦¬κ±°ν•˜λŠ”μ§€μ— λŒ€ν•œ ꡬ쑰적 배경을 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. - [[Mediator Topology]] - μ—°κ²° 이유: BPM은 이벀트 흐름을 μ€‘μ•™μ—μ„œ ν†΅μ œν•˜κ³  μ—λŸ¬ 처리λ₯Ό λ‹΄λ‹Ήν•˜λŠ” 이벀트 메디에이터(Event Mediator)의 ν•œ κ΅¬ν˜„ ν˜•νƒœλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€ [1, 3]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 쀑앙 집쀑식 이벀트 μ‘°μ •, ν”„λ‘œμ„ΈμŠ€ μƒνƒœ μœ μ§€(State management), 그리고 λ³΅μž‘ν•œ 둜직 처리 방법을 깊이 있게 ν•™μŠ΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. #### [κ΅¬ν˜„/ν™œμš© 도ꡬ] - [[BPEL]] - μ—°κ²° 이유: BPEL μ—­μ‹œ λ³΅μž‘ν•œ 이벀트 메디에이터λ₯Ό μ„ μ–Έμ μœΌλ‘œ κ΅¬ν˜„ν•˜λŠ” 데 μ‚¬μš©λ˜μ§€λ§Œ, μΈκ°„μ˜ κ°œμž…μ΄ ν•„μš”ν•œ μž₯κΈ° μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€μ—μ„œλŠ” BPM이 더 μ ν•©ν•˜λ‹€λŠ” μ μ—μ„œ 직접적인 비ꡐ λŒ€μƒμ΄ λ©λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 이벀트 처리 μžλ™ν™”λ₯Ό μœ„ν•œ 언어적 접근법과 λ³΅μž‘λ„μ— λ”°λ₯Έ 도ꡬ 선택 기쀀을 비ꡐ할 수 μžˆμŠ΅λ‹ˆλ‹€. - [[jBPM]] - μ—°κ²° 이유: μ†ŒμŠ€μ—μ„œ λͺ…μ‹œμ μœΌλ‘œ μ–ΈκΈ‰λœ BPM 이벀트 메디에이터 κ΅¬ν˜„μ„ μœ„ν•œ 인프라 λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€ [1]. - 이 κ°œλ…μ„ 톡해 더 깊게 이해할 수 μžˆλŠ” λΆ€λΆ„: 이둠적인 BPM κ°œλ…μ΄ μ‹€μ œ μ‹œμŠ€ν…œ 섀계 및 μ½”λ“œ λ ˆλ²¨μ—μ„œ μ–΄λ–»κ²Œ μΈν”„λΌλ‘œ ν†΅ν•©λ˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. ### Deeper Research Questions - 이벀트 기반 μ•„ν‚€ν…μ²˜μ˜ 메디에이터 ν† ν΄λ‘œμ§€μ—μ„œ BPEL을 μ‚¬μš©ν•˜λŠ” 것과 BPM μ‹€ν–‰ 엔진을 μ‚¬μš©ν•˜λŠ” 것을 κ²°μ •ν•˜λŠ” μ •ν™•ν•œ λ³΅μž‘λ„ μž„κ³„μ (Threshold)은 무엇인가? - μΈκ°„μ˜ κ°œμž…μ΄ ν•„μš”ν•œ μž₯κΈ° μ‹€ν–‰ ν”„λ‘œμ„ΈμŠ€(long run times)μ—μ„œ BPM 엔진은 μ‹œμŠ€ν…œ μž₯μ•  μ‹œ μƒνƒœ(State) 손싀을 막기 μœ„ν•΄ μ–΄λ– ν•œ 볡ꡬ 및 μ €μž₯ λ©”μ»€λ‹ˆμ¦˜μ„ μ‚¬μš©ν•˜λŠ”κ°€? - λ‹€μˆ˜μ˜ DSL(Domain Specific Language)을 ν™œμš©ν•˜λŠ” BPM μ—”μ§„μ˜ νŠΉμ„±μ΄ μ‹œμŠ€ν…œ 개발 및 μœ μ§€λ³΄μˆ˜ ν•™μŠ΅ 곑선(Learning Curve)에 λ―ΈμΉ˜λŠ” 영ν–₯은 무엇인가? - κ³ λ„λ‘œ λΆ„μ‚°λœ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ ν™˜κ²½μ—μ„œ 쀑앙 μ§‘μ€‘ν˜• ꡬ쑰인 BPM 기반 메디에이터λ₯Ό λ„μž…ν•  λ•Œ λ°œμƒν•  수 μžˆλŠ” 병λͺ© ν˜„μƒ(Bottleneck)κ³Ό 해결책은 무엇인가? - jBPMκ³Ό 같은 BPM 라이브러리λ₯Ό 이벀트 브둜컀(Event Broker) νŒ¨ν„΄κ³Ό ν˜Όν•©ν•œ ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜μ—μ„œ μ‚¬μš©ν•  λ•Œ 이벀트 톡신 μ§€μ—°(Latency)은 μ–΄λ–»κ²Œ κ΄€λ¦¬λ˜λŠ”κ°€? ### Practical Application Contexts - **Implementation:** λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­ 쀑 μΈκ°„μ˜ 승인 절차(결재 λ“±)κ°€ ν¬ν•¨λ˜μ–΄ 즉각적인 μ²˜λ¦¬κ°€ λΆˆκ°€λŠ₯ν•œ μ›Œν¬ν”Œλ‘œμš°λ₯Ό κ΅¬ν˜„ν•  λ•Œ, jBPMκ³Ό 같은 라이브러리λ₯Ό μΈν”„λΌλ‘œ λ„μž…ν•˜μ—¬ 이벀트λ₯Ό μ œμ–΄ν•©λ‹ˆλ‹€ [1]. - **System Design:** λ‹¨μˆœ λΌμš°νŒ… μ΄μƒμ˜ λ³΅μž‘ν•œ 쑰건 λΆ„κΈ° 및 ν”„λ‘œμ„ΈμŠ€ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜μ΄ ν•„μš”ν•œ 이벀트 슀트림이 μžˆμ„ 경우, μ‹œμŠ€ν…œ 섀계 μ‹œ 쀑앙 ν†΅μ œ 역할을 ν•˜λŠ” BPM Event Mediatorλ₯Ό λ°°μΉ˜ν•©λ‹ˆλ‹€ [1, 4]. - **Operation / Maintenance:** *μ†ŒμŠ€μ— κ΄€λ ¨ 정보가 λΆ€μ‘±ν•©λ‹ˆλ‹€.* - **Learning Path:** 이벀트 기반 μ•„ν‚€ν…μ²˜μ˜ κΈ°λ³Έ 원리 ν•™μŠ΅ -> 메디에이터 및 브둜컀 ν† ν΄λ‘œμ§€ 비ꡐ -> ν”„λ‘œμ„ΈμŠ€ 쑰정을 μœ„ν•œ BPEL ν•™μŠ΅ -> 더 μ •κ΅ν•œ μƒν˜Έμž‘μš© 처리λ₯Ό μœ„ν•œ BPM μ‹€ν–‰ μ—”μ§„(jBPM) 순으둜 μ‹œμŠ€ν…œ 섀계 지식을 ν™•μž₯ν•©λ‹ˆλ‹€. - **My Project Relevance:** λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 μˆ˜λ™ κ²€ν†  과정이 μ–½ν˜€ μžˆλŠ” 이벀트 νŒŒμ΄ν”„λΌμΈμ„ 섀계할 λ•Œ, μ‹œμŠ€ν…œμ˜ ν”„λ‘œμ„ΈμŠ€ μƒνƒœ 좔적과 처리λ₯Ό μžλ™ν™”ν•˜κΈ° μœ„ν•œ 핡심 기술둜 BPM λ„μž…μ„ κ²€ν† ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ### Adjacent Topics - [[Microservices Architecture]] - ν™•μž₯ λ°©ν–₯: MSA ν™˜κ²½μ—μ„œλŠ” 각 μ„œλΉ„μŠ€κ°€ 독립적인 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό κ°€μ§€λ―€λ‘œ(λΆ„μ‚° μ‹œμŠ€ν…œ), μ—¬λŸ¬ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ— 걸친 λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ νŠΈλžœμž­μ…˜μ„ μ‘°μ •ν•  λ•Œ BPMκ³Ό 같은 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°(Orchestrator)κ°€ μ–΄λ–»κ²Œ ν™œμš©λ  수 μžˆλŠ”μ§€ 탐ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€. --- *Last updated: 2026-05-02* ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*