From cf0e68f0adc25e8e75154aeec9024c67772d8479 Mon Sep 17 00:00:00 2001 From: kz <98440593+kz770@users.noreply.github.com> Date: Fri, 13 Feb 2026 10:16:17 +0900 Subject: [PATCH] Update README.md --- README.md | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4dcd919..8e8a13e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -# πŸŽ™οΈ λ°”λ₯΄λ―Έ (Barmi) - AI-Optimized Orchestration & High-Performance Backend +# πŸŽ™οΈ λ°”λ₯΄λ―Έ (Barmi) Backend -**λ°”λ₯΄λ―Έ(Barmi)** λŠ” 인곡지λŠ₯(AI) 기반 발음 뢄석 기술과 μ‹€μ‹œκ°„ WebRTC 코칭을 κ²°ν•©ν•œ 청각μž₯애인을 μœ„ν•œ μ˜μ–΄ 발음 ν•™μŠ΅ ν”Œλž«νΌμž…λ‹ˆλ‹€. +**λ°”λ₯΄λ―Έ(Barmi)** λŠ” AI 기반 발음 뢄석 기술과 μ‹€μ‹œκ°„ WebRTC 코칭을 κ²°ν•©ν•œ 청각μž₯애인을 μœ„ν•œ μ˜μ–΄ 발음 ν•™μŠ΅ ν”Œλž«νΌμž…λ‹ˆλ‹€. -λ³Έ λ ˆν¬μ§€ν† λ¦¬λŠ” **κ³ λΆ€ν•˜ AI μ—”μ§„κ³Ό μ‹€μ‹œκ°„ μ‚¬μš©μž 사이λ₯Ό μž‡λŠ” 'μ§€λŠ₯ν˜• μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°'**λ‘œμ„œμ˜ λ°±μ—”λ“œ κ΅¬ν˜„μ— μ§‘μ€‘ν–ˆμŠ΅λ‹ˆλ‹€. λ‹¨μˆœ CRUDλ₯Ό λ„˜μ–΄, AI λͺ¨λΈμ˜ 비결정적 μ§€μ—° μ‹œκ°„μ„ κ·Ήλ³΅ν•˜κ³  νŒŒνŽΈν™”λœ AI 데이터λ₯Ό 의미 μžˆλŠ” μΈμ‚¬μ΄νŠΈλ‘œ κ°€κ³΅ν•˜λŠ” μ—”μ§€λ‹ˆμ–΄λ§ μ—­λŸ‰μ„ λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€. +λ³Έ λ ˆν¬μ§€ν† λ¦¬λŠ” **AIμ„œλ²„μ™€ μ‚¬μš©μž 사이λ₯Ό μž‡λŠ” 'μ§€λŠ₯ν˜• μ˜€μΌ€μŠ€νŠΈλ ˆμ΄ν„°'** λ‘œμ„œμ˜ λ°±μ—”λ“œ κ΅¬ν˜„μ— μ§‘μ€‘ν–ˆμŠ΅λ‹ˆλ‹€. --- -## πŸ”₯ AI μ΅œμ ν™” 및 핡심 문제 ν•΄κ²° (AI-First Engineering) - +## πŸ”₯ AI μ΅œμ ν™” 및 핡심 문제 ν•΄κ²° - **[AI νŒŒμ΄ν”„λΌμΈ μ΅œμ ν™”] RabbitMQλ₯Ό ν†΅ν•œ GPU μ„œλ²„ μ§€μ—° μ‹œκ°„ 격리** - **문제**: AI μ—”μ§„μ˜ 비결정적 μ—°μ‚° μ§€μ—°μœΌλ‘œ 인해 API 응닡이 λŠ¦μ–΄μ§€κ±°λ‚˜ μ„œλ²„ κ°€μš©μ„±μ΄ μ €ν•˜λ˜λŠ” λ¬Έμ œκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. - **ν•΄κ²°**: κ³ λΆ€ν•˜ 뢄석 μž‘μ—…μ„ RabbitMQ 기반 비동기 λ©”μ‹œμ§• μ‹œμŠ€ν…œμœΌλ‘œ λΆ„λ¦¬ν•˜μ—¬, μ‚¬μš©μžμ—κ²ŒλŠ” μ¦‰μ‹œ `taskId`λ₯Ό λ°˜ν™˜ν•˜κ³  λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 뢄석을 μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ κ°€μš©μ„±μ„ ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€. @@ -26,29 +25,29 @@ --- -## πŸ— System Architecture +## πŸ— μ‹œμŠ€ν…œ 아킀텍쳐 μ‹œμŠ€ν…œμ˜ 전체적인 흐름과 λ°±μ—”λ“œ λ‚΄λΆ€μ˜ 상세 계측 ꡬ쑰λ₯Ό μ‹œκ°ν™”ν•œ κ΅¬μ‘°λ„μž…λ‹ˆλ‹€. -### 1. High-Level Backend Overview +### 1. λ°±μ—”λ“œ 전체 아킀텍쳐 μŠ€ν”„λ§ λΆ€νŠΈ λ°±μ—”λ“œμ˜ μ£Όμš” 기술적 μ—­ν• κ³Ό μ™ΈλΆ€ μ‹œμŠ€ν…œ κ°„μ˜ 데이터 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ νλ¦„μž…λ‹ˆλ‹€. ![High-Level Backend Overview](./1.%20High-Level%20Backend%20Overview.png) --- -### 2. Detailed Internal Architecture +### 2. λ°±μ—”λ“œ μ„ΈλΆ€ 아킀텍쳐 λ°±μ—”λ“œ λ‚΄λΆ€μ˜ 각 도메인 μ˜μ—­λ³„ 상세 계측 ꡬ쑰와 기술적 섀계 λ°©μ‹μž…λ‹ˆλ‹€. -#### 2-1. Security & Entry Pipeline (V1) +#### 2-1. λ³΄μ•ˆκ³„μΈ΅ (V1) μ‚¬μš©μž 인증 및 API μ§„μž…μ μ— λŒ€ν•œ λ³΄μ•ˆ 계측 κ΅¬μ‘°μž…λ‹ˆλ‹€. ![Security & Entry Pipeline](./2-1.%20Security%20&%20Entry%20Pipeline.png) -#### 2-2. Domain Logic & Performance (V2) +#### 2-2. 도메인 둜직 (V2) Caffeine μΊμ‹œλ₯Ό ν™œμš©ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 μ΅œμ ν™” 및 μ˜μ†μ„± 계측 νλ¦„μž…λ‹ˆλ‹€. ![Domain Logic & Performance](./2-2.%20Domain%20Logic%20&%20Performance.png) -#### 2-3. Async AI Orchestration (V3) +#### 2-3. AI 비동기 μš”μ²­ (V3) RabbitMQ와 비동기 처리λ₯Ό ν™œμš©ν•œ AI 연동 μ—”μ§„ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€. ![Async AI Orchestration](./2-3.%20Async%20AI%20Orchestration.png) @@ -64,11 +63,11 @@ RabbitMQ와 비동기 처리λ₯Ό ν™œμš©ν•œ AI 연동 μ—”μ§„ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€ λ‹¨μˆœνžˆ κΈ°λŠ₯적으둜 λ™μž‘ν•˜λŠ” 것을 λ„˜μ–΄, **청각μž₯μ•  μ‚¬μš©μžμ˜ ν•™μŠ΅ λͺ°μž…을 λ°©ν•΄ν•˜λŠ” μ§€μ—° μ‹œκ°„κ³Ό 데이터 νŒŒνŽΈν™” 문제**λ₯Ό 기술적으둜 ν•΄κ²°ν•˜λŠ” 데 μ§‘μ€‘ν–ˆμŠ΅λ‹ˆλ‹€. -### 1. μ§€μ—° μ—†λŠ” ν•™μŠ΅ ν™˜κ²½ (Low-Latency Experience) +### 1. μ§€μ—° μ—†λŠ” ν•™μŠ΅ ν™˜κ²½ - **비동기 λ©”μ‹œμ§• 기반 μž‘μ—… 처리**: μ—°μ‚° λΆ€ν•˜κ°€ 큰 AI 뢄석을 **RabbitMQ**λ₯Ό ν†΅ν•œ 비동기 μž‘μ—…μœΌλ‘œ λΆ„λ¦¬ν–ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 μ„œλ²„ μŠ€λ£¨ν’‹(Throughput)을 μ΅œμ ν™”ν•˜κ³  μ‚¬μš©μžμ—κ²Œ 즉각적인 μΈν„°λž™μ…˜μ„ 보μž₯ν•©λ‹ˆλ‹€. - **μ‹€μ‹œκ°„ 데이터 톡합**: νŒŒνŽΈν™”λ˜μ–΄ μ „λ‹¬λ˜λŠ” AI μ—”μ§„μ˜ 뢄석 κ²°κ³Ό(발음, μ–΅μ–‘, ν”Όλ“œλ°± λ“±)λ₯Ό λ°±μ—”λ“œμ—μ„œ λ…Όλ¦¬μ μœΌλ‘œ ν†΅ν•©ν•˜μ—¬, μ‚¬μš©μžμ—κ²Œ μ™„μ„±λœ ν˜•νƒœμ˜ 리포트λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€. -### 2. μ§€λŠ₯ν˜• 데이터 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ (Smart Coordination) +### 2. μ§€λŠ₯ν˜• 데이터 μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ - **λ§₯락 기반 ν”Όλ“œλ°± 생성**: μˆ˜μΉ˜ν™”λœ AI 뢄석 데이터λ₯Ό κ·ΈλŒ€λ‘œ λ…ΈμΆœν•˜μ§€ μ•Šκ³ , DB에 적재된 μ‚¬μš©μžμ˜ λˆ„μ  ν•™μŠ΅ 데이터와 κ²°ν•©ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 **LLM(Large Language Model)**이 κ°œμΈν™”λœ μΈμ‚¬μ΄νŠΈλ₯Ό μ œκ³΅ν•˜λ„λ‘ μ‘°μœ¨ν•©λ‹ˆλ‹€. - **도메인 쀑심 섀계(DDD)**: λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ„λ©”μΈλ³„λ‘œ λΆ„λ¦¬ν•˜μ—¬ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 λ†’μ˜€μœΌλ©°, 각 도메인 κ°„μ˜ 독립성을 ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€. @@ -136,7 +135,7 @@ OPENVIDU_SECRET=[OpenVidu_μ‹œν¬λ¦Ώ_ν‚€] --- -## πŸŽ“ Learning Points (Insights) +## πŸŽ“ Learning Points - λΆ„μ‚° μ‹œμŠ€ν…œ ν™˜κ²½μ—μ„œ **RabbitMQ**λ₯Ό ν™œμš©ν•œ 비동기 톡신이 전체 μ‹œμŠ€ν…œμ˜ μŠ€λ£¨ν’‹(Throughput) κ°œμ„ μ— λ―ΈμΉ˜λŠ” 영ν–₯을 깊이 있게 μ΄ν•΄ν–ˆμŠ΅λ‹ˆλ‹€. - **DDD** μ•„ν‚€ν…μ²˜λ₯Ό μ‹€λ¬΄μ μœΌλ‘œ μ μš©ν•΄λ³΄λ©°, 도메인 κ°„μ˜ 독립성을 ν™•λ³΄ν•˜κ³  객체지ν–₯적인 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ²½ν—˜μ„ μŒ“μ•˜μŠ΅λ‹ˆλ‹€. -- **OpenVidu/WebRTC** 연동을 톡해 μ‹€μ‹œκ°„ 슀트리밍 λ°μ΄ν„°μ˜ μ•ˆμ •μ μΈ μ²˜λ¦¬μ™€ μ„œλ²„ μ‚¬μ΄λ“œ μ„Έμ…˜ κ΄€λ¦¬μ˜ μ€‘μš”μ„±μ„ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€. \ No newline at end of file +- **OpenVidu/WebRTC** 연동을 톡해 μ‹€μ‹œκ°„ 슀트리밍 λ°μ΄ν„°μ˜ μ•ˆμ •μ μΈ μ²˜λ¦¬μ™€ μ„œλ²„ μ‚¬μ΄λ“œ μ„Έμ…˜ κ΄€λ¦¬μ˜ μ€‘μš”μ„±μ„ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€.