์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ต์ ํ๋
- ์ ํ๋ฆฌ์ผ์ด์ : ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๊ธฐ ์ํ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ๊ฐ์ ํ์ฌ ์์ฒญ์ ๋ฐ๋ฅธ ์๋ต์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ฃผ๊ธฐ ์ํ ์ต์ ํ๋ฅผ ์๋ฏธํ๋ค.
โ 1. ๋น์ฆ๋์ค ๋ก์ง ์ต์ ํ
- ๋ถํ์ํ ์ฝ๋ ์ ๊ฑฐ: ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ, ์ฐ์์ ์ต์ํ
- ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ: ๋ ๋์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒด
โ 2. DB ์ต์ ํ
- ์ฟผ๋ฆฌ ์ต์ ํ: ๋นํจ์จ์ ์ผ๋ก ์์ฑ๋ DB ์ฟผ๋ฆฌ ๊ฐ์ ( ์์: ์ธ๋ฑ์ค ์ถ๊ฐ, ์ฟผ๋ฆฌ ๋ฆฌํฉํ ๋ง, ์กฐ์ธ ์ต์ ํ )
- ์ปค๋ฅ์ ํ: DB์์ ์ฐ๊ฒฐ์ ์ฌํ์ฉํ๊ธฐ ์ํด ์ปค๋ฅ์ ํ(HikariCP ๋ฑ)์ ์ค์ ํ์ฌ DB ์ปค๋ฅ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ
- N+1 ๋ฌธ์ ํด๊ฒฐ: JPA๋ ORM์์ ๋ฐ์ํ๋ N+1 ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ DB ์์ฒญ ์ต์ํ
โ 3. ์บ์ฑ
- ๋ฐ์ดํฐ ์บ์ฑ: ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ DB๋ ์ธ๋ถ API ์์ฒญ์ ์ค์(Redis, Memcached)
- ์๋ต ์บ์ฑ: HTTP ์๋ต์ ์บ์ํ์ฌ ๋์ผํ ์์ฒญ์ ๋ํด ์๋ฒ์ ๋ถ๋ด์ ์ค์.
โ 4. ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ๋น๋๊ธฐ I/O: I/O ์์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ค๋ฅธ ์์ ์ ๋์์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํจ.
- ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ: ์ด๋ฉ์ผ ๋ฐ์ก, ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฑ ๊ธด ์๊ฐ ์์ ์ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ์ฌ ์ฃผ์ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ฒ ํจ.
[ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ ]
[ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ - ์ค์ ํ๋ฆ ์์ (์ฃผ๋ฌธ ์์คํ
) ]
1. ์ฃผ๋ฌธ ์์ฒญ -> ์๋ฒ
2. ์ฃผ์ ํธ๋์ญ์
- ์ฃผ๋ฌธ ์ ๋ณด๋ฅผ DB์ ์ ์ฅ
- ๊ฒฐ์ ์น์ธ
3. DB commit ์๋ฃ -> ํธ๋์ญ์
๋
4. ์๋ต ์ ์ก
- ์ฃผ๋ฌธ ์๋ฃ๋์์ต๋๋ค ๋ฐ๋ก ์ฌ์ฉ์์๊ฒ ๋ฆฌํด
5. ๋ถ๊ฐ ์์
(๋ฐฑ๊ทธ๋ผ์ด๋)
- ์ฃผ๋ฌธ์๋ฃ ์ด๋ฉ์ผ ๋ฐ์ก
- ์ฃผ๋ฌธ์๋ฃ ์๋ฆผ ๋ฉ์์ง ์ ์ก
- ์ ๋ฆฝ๊ธ ์ ๋ฆฝ ๋ฑ
- ํ๋์ ํธ๋์ญ์ ์์ ์ฌ๋ฌ๊ฐ์ ์์ ์ด ๋ฌถ์ฌ์๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๋ ๋ถ๊ฐ ์์ ์ด ์ํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ ค์ผํจ.
- ๋ฉ์ธ ์์ ์ธ ์ฃผ๋ฌธ์ ๋ํ ๊ฒฐ์ ๋ฅผ ์ฒ๋ฆฌํ ๋ค ์ด๋ค์ง๋ ๋ถ๊ฐ ์์ ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ต์ ํ
- ์์: ์คํ๋ง์์ @Async ์ ๋ํ ์ด์ ์ด์ฉ, ํ์ง๋ง ๋ฉ์์ง ํ๋ฅผ ์ฐ๋๊ฒ ๋ ์์ ์ ์ด๊ณ ํ์ฅ์ฑ์ด ์ข์.
โ 5. ๋ฉํฐ์ค๋ ๋ฉ ๋ฐ ์ฐ๋ ๋ํ ๊ด๋ฆฌ
- ์ฐ๋ ๋ํ ์ค์ : ์๋ฒ์ ๋์์ ์ฌ๋ฌ ์์ฒญ์ด ๋ค์ด์ฌ ๋, ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋๋ก ์ ์ ํ ์ฐ๋ ๋ํ์ ์ค์
- ์ค๋ ๋ ๋ณ๋ชฉ ํด๊ฒฐ: ๋ถํ์ํ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ๊ฑฐ๋ ์ ์ ํ ์ค๋ ๋ ์ฌ์ฉ์ผ๋ก ์ฑ๋ฅ ํฅ์
โ 6. ์์ถ๊ณผ ์ ์ก ์ต์ ํ
- gzip ์์ถ: HTTP ์๋ต์ ์์ถํ์ฌ ์ ์ก ์๋๋ฅผ ํฅ์์ํค๋ฉฐ, ์ค์ ๋ก JSON ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ฅผ 60~80% ์ค์ฌ์ ๋ณด๋ด์ค
โ 7. ๋ฆฌ๋ฒ์ค ํ๋ก์ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ
- NGINX ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ : ์์ฒญ์ด ์ค๋ฉด ํ๋ก์ ์๋ฒ ์ค์ ์ ํตํด ๋ถํ ๋ถ์ฐ, ๋ฐฑ์๋ ๋ถํ ๊ฐ์(๋จ, ๋ฐฑ์๋ ์๋ฒ 2๊ฐ ์ด์)
- ๋ก๋ ๋ฐธ๋ฐ์ฑ: ์ฌ๋ฌ ์๋ฒ์ ๋ถํ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋ถ์ฐํ์ฌ ์๋น์ค๊ฐ ๋ค์ด๋์ง ์๋๋ก ํจ.
โ 8. ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ํฐ๋ง๊ณผ ์ฑ๋ฅ ํ ์คํธ
- ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ๋ํ์ ์ธ Prometheus, Grafana ํ์ฉ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง์ ํตํ ๋ณ๋ชฉ ์ง์ ์ฐพ์ ์ต์ ํ ์งํ
- ์ฑ๋ฅ ํ ์คํธ: JMeter, Gatling ๋ฑ์ ์ฌ์ฉํด ๋ฐฑ์๋ ์๋ฒ์ ๋ถํ๋ฅผ ๊ฑธ์ด ์ฑ๋ฅ ํ ์คํธ ๋ฐ ๊ฐ์ ์ ๋์ถ
'๐ ๏ธBackend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Backend] ์ฑ๋ฅ ์ต์ ํ๋? (0) | 2025.04.27 |
---|