-
Notifications
You must be signed in to change notification settings - Fork 1
Description
๐ฏ ํ ์คํธ ์๋๋ฆฌ์ค ์ ์
์ด๋ค ๊ธฐ๋ฅ์ ๋ํด ์ด๋ค ์ํฉ์ ๊ฐ์ ํ์ฌ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํ ๊ฒ์ธ์ง ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํฉ๋๋ค.
- ํ
์คํธ ๋์ API:
[HTTP Method] /api/v1/... - ํต์ฌ ๋ก์ง: (์: ๊ฒ์๊ธ ๋ชฉ๋ก ์กฐํ, ๋ณต์กํ ์กฐ์ธ ์ฟผ๋ฆฌ ํฌํจ)
- ๋ถํ ํ ์คํธ ๋๊ตฌ: (์: nGrinder, JMeter, k6)
- ํ ์คํธ ํ๊ฒฝ: (์: ๋ก์ปฌ MacBook Pro (M1, 16GB), DB๋ Docker, ์ ํ๋ฆฌ์ผ์ด์ ๋ฉ๋ชจ๋ฆฌ 1GB)
๐ 1์ฐจ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ (๊ฐ์ ์ )
๊ฐ์ ์์ ์ ์งํํ๊ธฐ ์ ์ ์ฑ๋ฅ ์งํ๋ฅผ ๊ธฐ๋กํฉ๋๋ค. (Before)
| ์งํ (Metric) | ์ธก์ ๊ฐ (Value) | ๋จ์ (Unit) |
|---|---|---|
| VUser (๊ฐ์ ์ฌ์ฉ์ ์) | ๋ช | |
| TPS (์ด๋น ํธ๋์ญ์ ์) | tps | |
| ํ๊ท ์๋ต ์๊ฐ (Avg. Latency) | ms | |
| ์ต๋ ์๋ต ์๊ฐ (Max. Latency) | ms | |
| ์๋ฌ์จ (Error Rate) | % |
[nGrinder, JMeter ๋ฑ ๊ฒฐ๊ณผ ๊ทธ๋ํ ์คํฌ๋ฆฐ์ท์ ์ฌ๊ธฐ์ ์ฒจ๋ถํด ์ฃผ์ธ์]
๐ง ๋ณ๋ชฉ ์ง์ ๋ถ์ ๋ฐ ๊ฐ์ค
1์ฐจ ์ธก์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์ด๋ค ๋ถ๋ถ์์ ๋ณ๋ชฉ์ด ๋ฐ์ํ๊ณ ์๋์ง ๋ถ์ํ๊ณ , ์์ธ์ ๋ํ ๊ฐ์ค์ ์ธ์๋๋ค.
๊ฐ์ค:
(์: N+1 ์ฟผ๋ฆฌ ๋ฌธ์ ๋ก ์ธํด DB ์กฐํ ์๊ฐ์ด ๊ณผ๋ํ๊ฒ ์์๋ ๊ฒ์ผ๋ก ์ถ์ ๋จ.)
๊ทผ๊ฑฐ:
- APM(Pinpoint, Sentry ๋ฑ)์์ ํน์ ๋ฉ์๋ ์ง์ฐ ํ์ธ
- ๋๋ฆฐ ์ฟผ๋ฆฌ ๋ก๊ทธ(Slow Query Log)์์ ํด๋น ์ฟผ๋ฆฌ ๋ฐ๊ฒฌ
- ๋์ CPU / Memory ์ฌ์ฉ๋ ํ์ธ (๊ตฌ๊ฐ: )
- ์ฝ๋ ๋ฆฌ๋ทฐ (๋นํจ์จ์ ์ธ ๋ก์ง, ๋ถํ์ํ API ํธ์ถ ๋ฑ)
- ๊ธฐํ:
๐ ๏ธ ๊ฐ์ ์ ๋ต ๋ฐ ์คํ
์ ๊ฐ์ค์ ๋ฐํ์ผ๋ก ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ธ์ง ๊ตฌ์ฒด์ ์ธ ์ ๋ต์ ์์ฑํ๊ณ ์คํํฉ๋๋ค.
์ ๋ต:
(์: JPA์ Fetch Join์ ์ฌ์ฉํ์ฌ N+1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐ. ๋๋, ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ๋ฐ์ดํฐ์ ์บ์ฑ(Redis, Caffeine)์ ์ ์ฉ.)
๊ด๋ จ PR:
- #(PR ๋ฒํธ)
๐ 2์ฐจ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ (๊ฐ์ ํ)
๊ฐ์ ์์ ํ, 1์ฐจ ์ธก์ ๊ณผ ๋์ผํ ์กฐ๊ฑด์ผ๋ก ๋ค์ ์ฑ๋ฅ์ ์ธก์ ํ์ฌ ๊ธฐ๋กํฉ๋๋ค. (After)
| ์งํ (Metric) | ์ธก์ ๊ฐ (Value) | ๋จ์ (Unit) |
|---|---|---|
| VUser (๊ฐ์ ์ฌ์ฉ์ ์) | ๋ช | |
| TPS (์ด๋น ํธ๋์ญ์ ์) | tps | |
| ํ๊ท ์๋ต ์๊ฐ (Avg. Latency) | ms | |
| ์ต๋ ์๋ต ์๊ฐ (Max. Latency) | ms | |
| ์๋ฌ์จ (Error Rate) | % |
[๊ฐ์ ํ ๊ฒฐ๊ณผ ๊ทธ๋ํ ์คํฌ๋ฆฐ์ท์ ์ฌ๊ธฐ์ ์ฒจ๋ถํด ์ฃผ์ธ์]
โจ ์ต์ข ๊ฒฐ๋ก
๊ฐ์ ์ /ํ ์งํ๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ ๋์ ์ผ๋ก ์์ฝํ๊ณ , ๊ฒฐ๋ก ์ ์์ฑํฉ๋๋ค.
๊ฐ์ ํจ๊ณผ ์์ฝ:
- TPS:
(๊ฐ์ ์ ๊ฐ)->(๊ฐ์ ํ ๊ฐ)( ์ฝ O ๋ฐฐ ์ฆ๊ฐ ) - ํ๊ท ์๋ต ์๊ฐ:
(๊ฐ์ ์ ๊ฐ)->(๊ฐ์ ํ ๊ฐ)( ์ฝ O % ๊ฐ์ )
๊ฒฐ๋ก :
(์: Fetch Join ์ ์ฉ์ผ๋ก N+1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ DB I/O๋ฅผ ํฌ๊ฒ ์ค์๊ณ , ๊ทธ ๊ฒฐ๊ณผ TPS๋ 2.5๋ฐฐ ์ฆ๊ฐ, ํ๊ท ์๋ต ์๊ฐ์ 60% ๊ฐ์ํ๋ ํจ๊ณผ๋ฅผ ํ์ธํ์ต๋๋ค.)
์ถ๊ฐ ๋
ผ์ ์ฌํญ:
(์: ํฅํ ํธ๋ํฝ ์ฆ๊ฐ ์ ์ค์ผ์ผ ์์ ์ ๋ต ํ์, ์บ์ ๋๊ธฐํ ๋ฌธ์ ์ ๋ํ ์ถ๊ฐ ๋
ผ์ ํ์ ๋ฑ)