Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -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`λ₯Ό λ°˜ν™˜ν•˜κ³  λ°±κ·ΈλΌμš΄λ“œμ—μ„œ 뢄석을 μ²˜λ¦¬ν•¨μœΌλ‘œμ¨ κ°€μš©μ„±μ„ ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€.
Expand All @@ -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)

Expand All @@ -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)**: λ³΅μž‘ν•œ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ λ„λ©”μΈλ³„λ‘œ λΆ„λ¦¬ν•˜μ—¬ μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ„±κ³Ό ν™•μž₯성을 λ†’μ˜€μœΌλ©°, 각 도메인 κ°„μ˜ 독립성을 ν™•λ³΄ν–ˆμŠ΅λ‹ˆλ‹€.

Expand Down Expand Up @@ -136,7 +135,7 @@ OPENVIDU_SECRET=[OpenVidu_μ‹œν¬λ¦Ώ_ν‚€]

---

## πŸŽ“ Learning Points (Insights)
## πŸŽ“ Learning Points
- λΆ„μ‚° μ‹œμŠ€ν…œ ν™˜κ²½μ—μ„œ **RabbitMQ**λ₯Ό ν™œμš©ν•œ 비동기 톡신이 전체 μ‹œμŠ€ν…œμ˜ μŠ€λ£¨ν’‹(Throughput) κ°œμ„ μ— λ―ΈμΉ˜λŠ” 영ν–₯을 깊이 있게 μ΄ν•΄ν–ˆμŠ΅λ‹ˆλ‹€.
- **DDD** μ•„ν‚€ν…μ²˜λ₯Ό μ‹€λ¬΄μ μœΌλ‘œ μ μš©ν•΄λ³΄λ©°, 도메인 κ°„μ˜ 독립성을 ν™•λ³΄ν•˜κ³  객체지ν–₯적인 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ²½ν—˜μ„ μŒ“μ•˜μŠ΅λ‹ˆλ‹€.
- **OpenVidu/WebRTC** 연동을 톡해 μ‹€μ‹œκ°„ 슀트리밍 λ°μ΄ν„°μ˜ μ•ˆμ •μ μΈ μ²˜λ¦¬μ™€ μ„œλ²„ μ‚¬μ΄λ“œ μ„Έμ…˜ κ΄€λ¦¬μ˜ μ€‘μš”μ„±μ„ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€.
- **OpenVidu/WebRTC** 연동을 톡해 μ‹€μ‹œκ°„ 슀트리밍 λ°μ΄ν„°μ˜ μ•ˆμ •μ μΈ μ²˜λ¦¬μ™€ μ„œλ²„ μ‚¬μ΄λ“œ μ„Έμ…˜ κ΄€λ¦¬μ˜ μ€‘μš”μ„±μ„ ν•™μŠ΅ν–ˆμŠ΅λ‹ˆλ‹€.