diff --git a/README.md b/README.md
index 4380a1d..7250069 100644
--- a/README.md
+++ b/README.md
@@ -1,128 +1,123 @@
-# ๐ฑ UMC 7th FarmON BackEnd
-
-## ๐พ Introduce
-
-**๋์
์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ** **FarmON**์ UMC 7๊ธฐ์์ ์งํ๋ ํ๋ก์ ํธ ๋ฐ ๋์
์ ํ์ ์ ์ด๋๋ ๋์งํธ ์๋ฃจ์
์ผ๋ก,
-**๋์งํธ ์ปค๋ฎค๋ํฐ**๋ฅผ ํตํด ์๊ท๋ชจ ์์ธ๋์
์ **๊ณต๋๋์
์ ํ์ฑํ**ํ๊ณ , ํ๋ซํผ์ ํ์ฉํ์ฌ **์ ๊ตญ์ ๋์
์ ๋ฌธ๊ฐ๋ฅผ ์ฐ๊ฒฐ**ํ๋ฉฐ, **๋์
๋ฐ์ดํฐ**๋ฅผ ๊ธฐ๋ฐ์ผ๋ก **์ฒด๊ณ์ ์ธ ๋์
์๋น์ค**๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
-
-## ๐ง Tech Stack
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## โจ Main Feature
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-## ๐ฉโ๐ป๐จโ๐ป Backend Developers
-
-
-
-
-## ๐ ERD
-
-
-
-## ๐ Backend Architecture
-
-
-
-
-## ๐ git flow
-- `main`
- - ํ๋ก์ ํธ ์ต์ข
merge
- - ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ธํ
, ๋ฐฐํฌ ๊ฐ๋ฅํ ๋ธ๋์น, ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์ง
-- `develop`
- - ๋ฐ๋ชจ๋ฐ์ด ์ ๊น์ง ์์ฑํ ๊ธฐ๋ฅ๋ค์ ๊ณ์ํด์ merge
- - ๋ฐฐํฌ ๊ฐ๋ฅํ ๋ธ๋์น, ํญ์ ๋ฐฐํฌ ๊ฐ๋ฅํ ์ํ๋ฅผ ์ ์ง
-- `{type}/{description}`: ๊ฐ๋ฐ ๋ธ๋์น
- - ์:ย `feat/login`, `fix/login-token`
-
-
-## ๐ป Commit Message Convention
-
-| Type | Description |
-| -------------------- | ------------------------------------------------------------ |
-| **Feat** | ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
-| **Fix** | ๋ฒ๊ทธ ์์ |
-| **Docs** | ๋ฌธ์ ์์ |
-| **Style** | ์ฝ๋ formatting, ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ์ฝ๋ ์์ฒด์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ |
-| **Refactor** | ์ฝ๋ ๋ฆฌํฉํ ๋ง |
-| **Test** | ํ
์คํธ ์ฝ๋, ๋ฆฌํฉํ ๋ง ํ
์คํธ ์ฝ๋ ์ถ๊ฐ |
-| **Chore** | ํจํค์ง ๋งค๋์ ์์ , ๊ทธ ์ธ ๊ธฐํ ์์ (์: .gitignore) |
-| **Design** | CSS ๋ฑ ์ฌ์ฉ์ UI ๋์์ธ ๋ณ๊ฒฝ |
-| **Comment** | ํ์ํ ์ฃผ์ ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝ |
-| **Rename** | ํ์ผ ๋๋ ํด๋ ๋ช
์ ์์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์
๋ง์ธ ๊ฒฝ์ฐ |
-| **Remove** | ํ์ผ์ ์ญ์ ํ๋ ์์
๋ง ์ํํ ๊ฒฝ์ฐ |
-| **!BREAKING CHANGE** | ์ปค๋ค๋ API ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ |
-| **!HOTFIX** | ๊ธํ๊ฒ ์น๋ช
์ ์ธ ๋ฒ๊ทธ๋ฅผ ๊ณ ์ณ์ผ ํ๋ ๊ฒฝ์ฐ |
-
-ex. `Feat : ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ`
+# [์ฑ๋ฅ ๊ฐ์ ๋ณด๊ณ ์] ํ ํ๋ฉด API ๋จ๊ณ๋ณ ์ต์ ํ ๋ฐ 1,000 VUs ๊ฐ์ฉ์ฑ ๊ฒ์ฆ
+
+๋ณธ ๋ณด๊ณ ์๋ ํ ํ๋ฉด์ ์ปค๋ฎค๋ํฐ ๊ฒ์๊ธ ์กฐํ API๋ฅผ ๋์์ผ๋ก, ์ด๊ธฐ ์ฑ๋ฅ ์ธก์ ๋ถํฐ ๋ก์ง/์ธํ๋ผ/์ํคํ
์ฒ ์ต์ ํ์ ๋ฐ๋ฅธ ์์คํ
์๊ณ์น ๋ณํ๋ฅผ ์ ๋์ ์ผ๋ก ๋ถ์ํ ๊ธฐ๋ก์
๋๋ค.
+
+---
+
+## 1. ์คํ ๊ฐ์ ๋ฐ ํ๊ฒฝ
+
+### 1.1 ์คํ ํ๊ฒฝ ๋ฐ ์๋๋ฆฌ์ค
+- **ํ
์คํธ ๋๊ตฌ**: k6 (ramping-vus)
+- **ํ
์คํธ ์๋๋ฆฌ์ค**: 32๋ถ๊ฐ ๊ฐ์ ์ฌ์ฉ์(VU)๋ฅผ 1์์ 1,000๊น์ง 13๋จ๊ณ์ ๊ฑธ์ณ ์ ์ง์ ์ฆ๊ฐ
+- **๋์ API**: ํ ํ๋ฉด ์นดํ
๊ณ ๋ฆฌ๋ณ ๊ฒ์๋ฌผ ์ ๋ณด ๋ฐํ API (์ข์์/๋๊ธ ์ ํฌํจ)
+- **๋ชจ๋ํฐ๋ง**: Prometheus, Grafana
+- **๋ฐฑ์๋**: Spring Boot(3.0.0), Java(17)
+- **์ธํ๋ผ**: AWS (EC2, RDS), Docker
+
+### 1.2 ์คํ ์งํ ๋ฐ ๋ชฉํ
+- **์๋ฌ์จ (http_req_failed)**: ๋ชฉํ < 1.0%
+- **์๋ต ์๊ฐ (http_req_duration)**: ํต์ฌ ๋ชฉํ p(95) < 2.0s / ๊ฐ์ด๋๋ผ์ธ p(99) < 5.0s
+- **์ฒ๋ฆฌ๋ (http_reqs)**: VU ์ฆ๊ฐ์ ๋ฐ๋ฅธ RPS(Throughput) ์ ํ ์ฆ๊ฐ ์ฌ๋ถ ํ์ธ
+
+---
+
+## 2. [v1] Baseline: ๊ธฐ์กด ์ฝ๋ ๋ถ์ (N+1 ๋ฐ์ ๊ตฌ์กฐ)
+
+### ๐ฉ ๊ธฐ์กด ๋ก์ง ๋ฐ ๋ฌธ์ ์
+- **๋ฐ์ดํฐ ์กฐํ ๊ตฌ์กฐ**: ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ(1ํ) + ๊ฐ ๊ฒ์๋ฌผ๋ณ ์ข์์ COUNT(Nํ) + ๋๊ธ COUNT(Nํ)
+- **๋ณ๋ชฉ ์์ธ**: ์ด **1 + 2N ์ฟผ๋ฆฌ**๊ฐ ๋ฐ์ํ์ฌ, ํธ๋ํฝ ์ฆ๊ฐ ์ DB I/O ๋ถํ ๋ฐ ์ปค๋ฅ์
์ ์ ์๊ฐ ๊ธ์ฆ
+
+### 2.1 ๊ตฌ๊ฐ๋ณ ์ฑ๋ฅ ๋ณํ ๋ถ์
+- **โ [์์ ๊ตฌ๊ฐ] VUs 0~500๋ช
**: RPS๊ฐ ์ ํ์ ์ผ๋ก ์์นํ๋ฉฐ p(95) 1์ด ๋ฏธ๋ง ์ ์ง.
+- **โก [์ง์ฐ ๋ฐ์ ๊ตฌ๊ฐ] VUs 500~800๋ช
**: 500๋ช
์ง์ ์์ **์ฑ๋ฅ ๋ณ๊ณก์ (Elbow Point)** ๋ฐ์. ์์ฒญ์ด Queue์ ์์ด๋ฉฐ ์ง์ฐ ์๊ฐ ๊ธ์ฆ.
+- **โข [๋ถ๊ดด ๋ฐ ์๊ณ ๊ตฌ๊ฐ] VUs 800~1,000๋ช
**: p(95) ์๋ต ์๊ฐ์ด **6.7s**๋ก ์น์์ผ๋ฉฐ RPS๋ **155 req/s**์์ ์ ์ฒด(Saturation).
+
+
+
+
+### 2.2 ์คํ ๊ฒฐ๊ณผ (1,000 VUs)
+| ์งํ ํญ๋ชฉ | ์ธก์ ๊ฒฐ๊ณผ | ํ์ ๋ฐ ์๋ฏธ |
+| :--- | :--- | :--- |
+| **p(95) Latency** | **6.7s** | **Fail**: ๋ชฉํ์น(2s) ๋๋น 3๋ฐฐ ์ด์ ์ง์ฐ |
+| **p(99) Latency** | **7.94s** | **Fail**: ์ต์
์ ์ํฉ ์๋ต์ฑ ๋ถ๊ดด |
+| **Peak RPS** | **155 req/s** | ์ธํ๋ผ ํ๊ฒฝ์ ๋ฌผ๋ฆฌ์ ์ฒ๋ฆฌ ํ๊ณ ๋
ธ์ถ |
+| **Error Rate** | **0.00% (15๊ฑด)** | `dial: i/o timeout` ๋ฑ ์์ ํ๋ ์๋ฌ ๋ฐ์ |
+
+---
+
+## 3. [v2] 1์ฐจ ๊ฐ์ : QueryDSL ๊ธฐ๋ฐ ๋จ์ผ ์กฐํ (N+1 ์ ๊ฑฐ)
+
+### โ
๋ณ๊ฒฝ ์ฌํญ (What was changed?)
+- **์ฟผ๋ฆฌ ํตํฉ**: QueryDSL์ ์ด์ฉํด `JOIN` ๋ฐ `GROUP BY`๋ฅผ ํ์ฉํ **๋จ์ผ ์ง๊ณ ์ฟผ๋ฆฌ**๋ก ๋ฆฌํฉํ ๋ง
+- **์ต์ ํ ๊ธฐ๋ฒ**: `COUNT(DISTINCT ...)`๋ฅผ ์ ์ฉํ์ฌ ์กฐ์ธ ์ ์ค๋ณต ์ง๊ณ ๋ฐฉ์ง
+- **DTO Projection**: Entity ๋์ ์กฐํ ์ ์ฉ DTO(**HomePostRow**)๋ฅผ ์ฌ์ฉํ์ฌ ์์์ฑ ์ปจํ
์คํธ ๋ถํ ์ ๊ฐ
+
+### 3.1 ๊ตฌ๊ฐ๋ณ ์ฑ๋ฅ ๋ณํ ๋ถ์
+- **โ [์ฑ๋ฅ ๊ฐ์ ํ์ธ]**: ์ด์ ํ
์คํธ ๋๋น RPS๊ฐ **์ต๋ 268.29 req/s**๊น์ง ์์นํ๋ฉฐ ์ฐ์ฐ ํจ์จ **88%** ํฅ์ ์
์ฆ.
+- **โก [๋ณ๋ชฉ ์์กด]**: 600 VUs ์ดํ ์ฒ๋ฆฌ๋์ ๋์์ผ๋ DB ์ปค๋ฅ์
์์ ๋ถ์กฑ์ผ๋ก ์ธํ ํ์์์ ๊ฒฝ๊ณ ์ฌ๋ฐ์.
+- **โข [์ง์ฐ ๊ฐ์]**: p(95) ์๋ต ์๊ฐ์ **3.38s**๋ก v1 ๋๋น ์ฝ **50% ๊ฐ์ **๋์์ผ๋ ๋ชฉํ์น(2s)์๋ ๋ฏธ๋ฌ.
+
+
+
+
+### 3.2 ์ฑ๋ฅ ์งํ ๋น๊ต (v1 vs v2)
+| ์งํ ํญ๋ชฉ | v1 (Baseline) | v2 (๋ก์ง ์ต์ ํ) | ์ฑ๊ณผ |
+| :--- | :--- | :--- | :--- |
+| **p(95) Latency** | 6.7s | **3.38s** | **50% ๋จ์ถ** |
+| **Avg Throughput** | 142.4 req/s | **268.29 req/s** | **88% ํฅ์** |
+| **Peak RPS** | 155 req/s | **312 req/s** | **101% ํฅ์** |
+
+---
+
+## 4. [v3] 2์ฐจ ๊ฐ์ : ์ธํ๋ผ ์ค์ ์ต์ ํ (WAS/DB ํ๋)
+
+### โ
๋ณ๊ฒฝ ์ฌํญ (What was changed?)
+- **HikariCP**: `maximum-pool-size: 30`, `connection-timeout: 30000` (์ปค๋ฅ์
๋ถ์กฑ ํด์)
+- **Tomcat**: `threads.max: 400`, `max-connections: 8192` (๋์ ์์ฒญ ์์ฉ๋ ์ฆ๋)
+- **RDS**: DB ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน ์์ ์ ํตํด `max_connections: 300` ํ๋ณด
+
+### 4.1 ๊ตฌ๊ฐ๋ณ ์ฑ๋ฅ ๋ณํ ๋ถ์
+- **โ [์ธํ๋ผ ๋ณ๋ชฉ ํด์]**: v2 ๋๋น Peak RPS๊ฐ **358 req/s**๋ก ์ฝ **130%** ์์นํ๋ฉฐ ์ค์ ํ๋ ํจ๊ณผ ์
์ฆ.
+- **โก [์ฒ๋ฆฌ ์ฉ๋ ๊ทน๋ํ]**: ์ด ์ฒ๋ฆฌ ์์ฒญ ์ **584,006๊ฑด**์ผ๋ก ํ์ฅ.
+- **โข [๋ฌผ๋ฆฌ ์๊ณ์ ์๋ณ]**: ์ค์ ์ ํ์ฅํ์์๋ p(95)๊ฐ **3.30s**์์ ์ ์ฒด๋จ. ํ์ฌ ๊ตฌ์กฐ์ **๋ฌผ๋ฆฌ์ Disk I/O ํฌํ**๋ก ํ๋จ๋จ.
+
+
+
+
+---
+
+## 5. [v4] ๊ฐ์ : Redis ์บ์ ๋์
(In-memory ์ํคํ
์ฒ)
+
+### โ
๋ณ๊ฒฝ ์ฌํญ (What was changed?)
+- **์บ์ฑ ์ ๋ต**: ํ ์ปค๋ฎค๋ํฐ ๋ฐ์ดํฐ๋ฅผ `category:{PostType}` ํค ๊ตฌ์กฐ๋ก **Redis**์ ์ ์ฅ (In-memory)
+- **์ ํจ ์ ์ฑ
**: `TTL 60์ด` ์ ์ฉ ๋ฐ ์ข์์/๋๊ธ ๋ณ๊ฒฝ ์ `afterCommit` ์์ ์ **์ ํ์ ์บ์ ๋ฌดํจํ(Evict)**
+- **์ง๋ ฌํ**: `GenericJackson2JsonRedisSerializer`๋ฅผ ํตํ DTO ์ง๋ ฌํ
+
+### 5.1 ๊ตฌ๊ฐ๋ณ ์ฑ๋ฅ ๋ณํ ๋ถ์
+- **โ [์๋ต ํ์ ]**: ๋ฌผ๋ฆฌ Disk๋ฅผ ํ์ง ์๋ ์กฐํ๋ก p(95) ์๋ต ์๊ฐ์ **2.56s**๋ก ๋จ์ถ (**v3 ๋๋น 22% ์ถ๊ฐ ๊ฐ์ **).
+- **โก [RPS ๊ทน๋ํ]**: Peak RPS **498** ๋ฌ์ฑ. ์์คํ
์ฒ๋ฆฌ ์ฉ๋์ด ์ด๊ธฐ ๋๋น ์ฝ **3.2๋ฐฐ** ํ์ฅ๋จ.
+- **โข [์์ ์ฑ ์ ์ง]**: ์ด ์์ฒญ ์ **77.3๋ง ๊ฑด**์ผ๋ก ํญ์ฆํ์ผ๋, ์๋ฌ์จ **0.009%**๋ก ์ ๋ขฐ์ฑ ์๋ ์๋ต ์ ์ง.
+
+
+
+
+### 5.2 ์ฑ๋ฅ ์งํ ๋น๊ต (v1 ~ v4)
+| ์งํ ํญ๋ชฉ | v1 (Baseline) | v2 (๋ก์ง) | v3 (์ค์ ) | v4 (Redis) | ์ฑ๊ณผ (v1 vs v4) |
+| :--- | :---: | :---: | :---: | :---: | :---: |
+| **p(95) Latency** | 6.71s | 3.38s | 3.30s | **2.56s** | **62% ๋จ์ถ** |
+| **Avg Throughput**| 142.4 | 268.29 | 300.49 | **401.7** | **182% ํฅ์** |
+| **Peak RPS** | 155 | 312 | 358 | **498** | **221% ํฅ์** |
+| **Total Requests**| 27.7๋ง | 52.0๋ง | 58.4๋ง | **77.3๋ง** | **2.8๋ฐฐ ์ฆ๊ฐ** |
+
+---
+
+## 6. ์ต์ข
์ฑ๋ฅ ๊ฐ์ ๋ชฉํ ๋ฐ ๋ฌ์ฑ ํํฉ ์์ฝ
+
+| ๊ตฌ๋ถ | ๋ชฉํ์น (Thresholds) | v1 (๊ธฐ์กด) | v4 (์ต์ข
) | ๊ฒฐ๊ณผ |
+| :--- | :--- | :--- | :--- | :--- |
+| **p(95) Latency** | **2.0s ๋ฏธ๋ง** | 6.71s | **2.56s** | **๋ฏธ๋ฌ (CPU ์์ ์๊ณ)** |
+| **p(99) Latency** | **5.0s ๋ฏธ๋ง** | - | **3.98s** | **ํต๊ณผ** |
+| **Error Rate** | **1.0% ๋ฏธ๋ง** | 0.005% | **0.009%** | **ํต๊ณผ** |
+
+**ํฅํ ๋ชฉํ**:
+๋ก์ง, ์ธํ๋ผ, ์บ์ฑ ์ต์ ํ๋ฅผ ํตํด ๋น์ฝ์ ์ธ ์ฑ๋ฅ ํฅ์์ ๊ฑฐ๋์์ผ๋, 1,000 VU ํ๊ฒฝ์์ ๋จ์ผ ์ธ์คํด์ค์ CPU ๋ถํ๋ก ์ธํด p(95) 2.0s ๋ชฉํ์๋ ๋ฏธ๋ฌํ์ต๋๋ค. ํฅํ **์ธ์คํด์ค ํ์ฅ(Scale-out)** ๋ฐ **๋ก๋๋ฐธ๋ฐ์(ALB)** ์ ์ฉ์ ํตํด ์์ ๋ถํ๋ฅผ ๋ถ์ฐํ๊ณ ์ต์ข
๋ชฉํ ์งํ๋ฅผ ๋ฌ์ฑํ ์์ ์
๋๋ค.
\ No newline at end of file