warm up
๊ฐ์
์ฑ๋ฅ์ด ์ค์ํ ์๋น์ค๋ผ๋ฉด ๋ฐฐํฌ ํ ์๋น์ค๋ก ํธ๋ํฝ์ ๋ฐ๊ธฐ ์ ์ ์์
๊ณผ์ ์ ๊ฑฐ์น๋ ๊ฒ์ด ํ์์ ์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์งํ์๋ ๋ค์ํ ์์๋ค์ด ์ด๊ธฐํ๋์ง ์์ ์ํ์ด๋ฏ๋ก, ์์ ์์ด ์ฆ์ ํธ๋ํฝ์ ๋ฐ๊ฒ ๋๋ฉด ์ฑ๋ฅ ์ ํ๋ ์๋น์ค ์ค๋จ์ผ๋ก๋ ์ด์ด์ง ์ ์๋ค.
์์
์ ํนํ ๋ ์ดํด์(Latency)๊ฐ ์งง๊ณ ์ค๋ฃจํ(Throughput)์ด ๋์ ์ฑ๋ฅ ์ค์ฌ์ ์๋น์ค์์ ๋ฐ๋์ ๊ณ ๋ ค๋์ด์ผ ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ ์์ ์ ํ์ง ์์ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
์บ์(Cache) ๋ฏธ์ค ๋ฐ ์๋ณธ ์ ์ฅ์ ๋ถํ
@Cacheable("items")
public Item getItem(String id) {
return repository.findById(id);
}์คํ๋ง๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ์์๋ก, Cacheable ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํด์ ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๊ณค ํ๋ค. ์บ์๋ฅผ ์ด์ฉํ๋ฉด ์๋ณธ ์ ์ฅ์์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ์ง ์๊ณ ๋น ๋ฅด๊ฒ ์๋ตํ ์ ์๋ค.
๋ฌธ์ :
์์ ์์ด ํธ๋ํฝ์ ๋ฐ์ผ๋ฉด ์ด๊ธฐ ์์ฒญ๋ค์ด ๋ชจ๋ ์บ์ ๋ฏธ์ค๋ก ์ด์ด์ ธ ์๋ณธ DB์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฒ ๋๋ค.
์ฑ๋ฅ ์ ํ:
DB์ ๋ถํ์ํ ๋ถํ๊ฐ ๋ชฐ๋ฆฌ๊ฒ๋๋ค.
์์ฒญ์ ๋ํ ์๋ต ๋ ์ดํด์๊ฐ ์ฆ๊ฐํ๊ฒ ๋๊ณ , ์์คํ ์ ์ฒด์ ์ค๋ฃจํ์ด ์ ํ๋ ์ ์๋ค.
์์ ์ญํ :
์์ ์ ํตํด ๋ฏธ๋ฆฌ ์บ์๋ฅผ ์ฑ์๋๋ฉด(Pre-warming), ์ด๊ธฐ ์์ฒญ๋ค์ด ์บ์์์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด ์๋ณธ ์ ์ฅ์์ ๋ถํ๋ฅผ ์ค์ด๊ณ ์๋ต ์๋ ํฅ์์ด ๊ฐ๋ฅํด์ง๋ค.
์ด๋ฅผ ํตํด ๋ฎ์์ง ๋ ์ดํด์ ๋งํผ ๋จ๋ ์์์ผ๋ก ์ค๋ฃจํ์ ํค์ธ ์ ์๋ค.
์ปค๋ฅ์
ํ(Connection Pool) ๊ณ ๊ฐ ๋ฐ DB ๋ถํ
์คํ๋ง๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํต Hikari CP๊ฐ์ ์ปค๋ฅ์
ํ์ ์ฌ์ฉํ๋ค.
์ปค๋ฅ์ ํ์ DB ์ปค๋ฅ์ ๋ค์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํด์ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๋ ๋ฐ ๋์์ ์ค๋ค. ์ด ์ญ์ ์์ ์ ์งํํ์ง ์์ผ๋ฉด ์๋ก์ด ์ธ์คํด์ค๋ค์ด ๋์์ DB ์ฐ๊ฒฐ์ ์์ฒญํ๊ฒ ๋๊ณ , ์ฐ๊ฒฐ ํ์ด ์์๊ฐ์ ๊ณ ๊ฐ๋ ์ ์๋ค.
๋ฌธ์ :
์์ ์์ด ์๋ก์ด ์ธ์คํด์ค๊ฐ ํธ๋ํฝ์ ๋ฐ๊ฒ ๋๋ฉด, ๋์์ ๋ง์ DB ์ฐ๊ฒฐ ์์ฒญ์ด ๋ฐ์ํ์ฌ ์ปค๋ฅ์ ํ์ด ์์๊ฐ์ ๊ณ ๊ฐ๋ ์ ์๋ค.
์ค์ ์ ๋ฐ๋ผ์ ์ปค๋ฅ์ ํ์ ์ปค๋ฅ์ ์ซ์ ์์ฒด๊ฐ DB์ชฝ์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒ๋ณด๋ค ๋ง๊ฒ ๋๋ฉด ์ปค๋ฅ์ ์ ์์ฑ ๋ชปํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ ์ ์๋ค.
์ฑ๋ฅ ์ ํ:
์ปค๋ฅ์ ํ์ด ๊ณ ๊ฐ๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ DB ์ฐ๊ฒฐ์ ํ๋ณดํ์ง ๋ชปํ๋ค.
์ด๋ก ์ธํด, ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ๋๊ฑฐ๋ ์คํจํ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ค.
DB ์๋ฒ์๋ ๊ฐ์์ค๋ฌ์ด ๋ถํ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
์์ ์ญํ :
์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ปค๋ฅ์ ํ์ ์ฐ๊ฒฐ ์๋ฅผ ์ ์ง์ ์ผ๋ก ๋๋ ค์ฃผ๊ณ , DB ์ฐ๊ฒฐ์ ๋ํ ๋ถํ๋ฅผ ๋ถ์ฐ์์ผ ์์ ์ ์ธ ์๋น์ค ์์์ด ๊ฐ๋ฅํ๊ฒ ํ๋ค.
ํนํ ๋ธ๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด์ ๋ ์๋ ์๋ฒ๋ค ์ญ์๋ ์ปค๋ฅ์ ํ์ ๊ฐ์ง๊ณ ์ปค๋ฅ์ ์ ๋งบ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณ ๋ คํด์ผ ํ ๋ถ๋ถ์ด๋ค.
์ฐ๊ฒฐ๋ ์ธ๋ถ ์๋น์ค ๊ณผ๋ถํ
ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ๋๋ถ๋ถ ๋ค์ํ ์ธ๋ถ ์๋น์ค ํน์ API์ ์ฐ๋์ด ๋์ด์๋ค.
๊ฒฐ์ ์์คํ , ์ธ์ฆ ์์คํ , ๋ฐ์ดํฐ ๋ถ์ ๋๊ตฌ์ ๊ฐ์ด ์ฌ๋ฌ ์ธ๋ถ ์๋น์ค๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ํ ์ญํ ์ ์ฐจ์งํ๊ณ ์๋ค.
๋ฌธ์ :
์ธ๋ถ ์๋น์ค ํธ์ถ์ ๊ณ ๋ คํ์ง ์์ผ๋ฉด, ๋ฐฐํฌ๋ ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ๋์์ ์ธ๋ถ API๋ฅผ ํธ์ถํ์ฌ ํด๋น ์ธ๋ถ ์๋น์ค์ ๊ฐ์์ค๋ฌ์ด ๊ณผ๋ถํ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
์ฑ๋ฅ ์ ํ:
์ธ๋ถ ์๋น์ค์ ๋ถํ ์ฆ๊ฐ๋ ์๋ต ์ง์ฐ์ด๋ ์ค๋ฅ๋ก ์ด์ด์ ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ฅ์ ์ํฅ์ ์ค ์ ์์ผ๋ฉฐ, ์ ์ฒด ์๋น์ค์ ์ฑ๋ฅ ์ ํ๋ก๋ ์ด์ด์ง ์ ์๋ค.
์์ ์ญํ :
์ผ๋ถ ์ธ์คํด์ค๋ถํฐ ์์ํ ์ ์ง์ ์ธ ์์ ์ ํตํด ์ธ๋ถ ์๋น์ค์ ๋ํ ๋ถํ๋ฅผ ๋ถ์ฐ์ํจ๋ค.
๋ฐฉ๋ฒ์ผ๋ก๋, ์ํท ๋ธ๋ ์ด์ปค ํจํด์ ๋์ ํ์ฌ ์ธ๋ถ ์๋น์ค ์ฅ์ ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๋ก ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค.
JIT ์ปดํ์ผ๋ฌ
Java์์๋ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ค. ์ด๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ ๋์์ ์๋ฐ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ์ฑ ์์ ๊ฐ๋๋ค.
์ปดํ์ผ๋ฌ๋ ํ๋ก์ธ์ค ์คํ ์ค ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ ์๋ณํ๊ณ ์ต์ ํํด์ ์ ๋ฐ์ ์ธ ์คํ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
๋ฌธ์ :
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ์ ์คํ๋ ๋, JIT ์ปดํ์ผ๋ฌ๊ฐ ์์ง ์ต์ ํ๋ฅผ ์งํํ๊ธฐ ์ ์ด๋ฏ๋ก, ์๋์ ์ผ๋ก ๋๋ฆฌ๊ฒ ๋์ํ๋ค.
์ฑ๋ฅ ์ ํ:
์์ ์์ด ์ด๊ธฐ ํธ๋ํฝ์ ๋ฐ์ผ๋ฉด, ์ต์ ํ๋์ง ์์ ์ฝ๋๊ฐ ์คํ๋์ด ์๋ต ์๊ฐ์ด ๊ธธ์ด์ง๊ณ ์ฒ๋ฆฌ๋์ด ๋ฎ์์ง ์ ์๋ค.
์์ ์ญํ :
์์ ๊ณผ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์คํ์์ผ JIT ์ปดํ์ผ๋ฌ๊ฐ ์ฝ๋๋ฅผ ์ต์ ํ ํ๋๋ก ํ๋ค.
ํ ๋ฒ ์คํ๋ ์ฝ๋๋ ๋ ๋น ๋ฅด๊ฒ ์คํ๋๋ ์ด์ ์ ์ป๋๋ค.
์ด๋ฏธ ํ๋ฒ ์คํ๋ ์ฝ๋๋ค์ JIT ์ปดํ์ผ๋ฌ์ ์ํด ์ด๋๊ฐ์ ์บ์๋ก ์ ์ฅ๋๋ค.
ํธ๋ํฝ์ด ๋ณธ๊ฒฉ์ ์ผ๋ก ์ ์ ๋ ๋ ๋ ๋์ ์ฑ๋ฅ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๋ค.
์ถ์ฒํ๋ ์์
๋ฐฉ๋ฒ
์์ ์ ํจ๊ณผ์ ์ผ๋ก ์ํํ๊ธฐ ์ํด์๋ ์ค์ ์ด์ํ๊ฒฝ๊ณผ ์ต๋ํ ์ ์ฌํ ์กฐ๊ฑด์ ๋ง๋๋ ๊ฒ ์ค์ํ๋ค.
์ด๋ ๊ฒ ํ๊ธฐ ์ํด์ ๊ฐ์ฅ ์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ ๋ก ๋ฐ๋ ํธ๋ํฝ๊ณผ ์ ์ฌํ ํํ์ ์์ผ๋ก ์ ์ง์ ์ผ๋ก ๋ถํ๋ฅผ ๋๋ ค๋๊ฐ๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
๊ธฐ์ ์ ์ผ๋ก ์ด๋ ค์ด ์๋น์ค๋ค๋ ์กด์ฌํ๋ค. ์ค์ ๋์์ ์ํํ๋ ๊ฒ ์ฌ์ด๋ ์ดํํธ๊ฐ ์กด์ฌํ๋ค๋ฉด ์งํํ๊ธฐ ์ด๋ ค์ธ ์ ์๋ค. (ex: ๊ฒฐ์ )
๊ฒฐ์ API๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ณณ์์ ํ ์คํธ API๋ฅผ ์ ๊ณตํด ์ค ์ ์์ง๋ง, ์ค์ ์ ๋์ผํ๋ค๊ณ ๋ ์ด์ผ๊ธฐํ ์ ์๋ค.
์ ์ง์ ๋ถํ ์ฆ๊ฐ ์คํฌ๋ฆฝํธ ์์ฑ
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ ๋ก ๋ฐ๋ ํธ๋ํฝ๊ณผ ์ ์ฌํ ํํ์ ์์ผ๋ก ์ ์ง์ ์ผ๋ก ๋ถํ๋ฅผ ๋๋ ค๋๊ฐ๋ ์์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ด์์ ์ด๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๋จ๊ณ๋ถํฐ ์์ /ํ ์คํธ ๋ชจ๋๋ฅผ ๊ณ ๋ คํ์ฌ ์ฌ์ด๋ ์ดํํธ ์์ด ํต์ฌ ๋ก์ง์ ํ ์คํธ ํ ์ ์๋๋ก ์ค๊ณํ๋ ๊ฒ๋ ์ค์ํ๋ค.
๋จ์ํ GET ์์ฒญ์ผ๋ก๋ง ์์ ํ๋ ๊ฒ์ด ์๋๋ผ, POST, PUT ๋ฑ ์ค์ ์ฌ์ฉ์๊ฐ ๋ฐ์์ํค๋ ๋ฐ์ดํฐ ํจํด์ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํ๋ค.
๋ฐ๋ผ์ ์ต๋ํ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ๋ ๋์๊ณผ ์ ์ฌํ๊ฒ API๋ฅผ ํ ์คํธํ ์ ์๋๋ก ๋ง๋๋๊ฒ์ด ์ข๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ณผ์ ์์ ๊ณ ๋ ค๋๋ฉด ์ข๋ค.
๋ธ๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ:
๊ทธ๋ฆฐ ํ๊ฒฝ์ด ์ค๋น๋๋ฉด, ์ค์ ํธ๋ํฝ์ ์ ํํ๊ธฐ ์ ์ ์ฑ๋ฅ ํ ์คํธ์ฉ ๋ถํ ๋ฐ์ ์๋ฒ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ํ๊ฒฝ์ ๋ฏธ๋ฆฌ ์ค์ ํธ๋ํฝ์ ๊ฐ๊น์ด ๋ถํ๋ฅผ ์ฃผ์ด ์์ ์ ์งํํ๋ค.
์์ ์ด ์๋ฃ๋๋ฉด ํธ๋ํฝ์ ์ ํํ์ฌ ์์ ๋ ์ํ๋ก ์๋น์ค๋ฅผ ์์ํ๋ค.
๋กค๋ง ๋ฐฐํฌ:
๊ฐ ์๋ฒ๊ฐ ์ ๋ฒ์ ์ผ๋ก ์ ํ๋ ๋๋ง๋ค ํด๋น ์๋ฒ์ ๋ํด ๊ฐ๋ณ์ ์ผ๋ก ์์ ํ๋ก์ธ์ค๋ฅผ ์ ์ฉํ๋ค.
์์ ์ด ์๋ฃ๋๋ฉด ํธ๋ํฝ์ ๋ฐ์ ์ ์๋๋ก ์ค์ ํ๋ค.
๋ฐฐํฌ ์ ๋ต๊ณผ์ ์ฐ๊ณ(ex: ๋ธ๋ฃจ-๊ทธ๋ฆฐ์์์ ์์
)
๋ธ๋ฃจ-๊ทธ๋ฆฐ ๋ฐฐํฌ:
๊ทธ๋ฆฐ ํ๊ฒฝ์ด ์ค๋น๋๋ฉด, ์ค์ ํธ๋ํฝ์ ์ ํํ๊ธฐ ์ ์ ์ฑ๋ฅ ํ ์คํธ์ฉ ๋ถํ ๋ฐ์ ์๋ฒ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ํ๊ฒฝ์ ๋ฏธ๋ฆฌ ์ค์ ํธ๋ํฝ์ ๊ฐ๊น์ด ๋ถํ๋ฅผ ์ฃผ์ด ์์ ์ ์งํํ๋ค.
์์ ์ด ์๋ฃ๋๋ฉด ํธ๋ํฝ์ ์ ํํ์ฌ ์์ ๋ ์ํ๋ก ์๋น์ค๋ฅผ ์์ํ๋ค.
๋กค๋ง ๋ฐฐํฌ:
๊ฐ ์๋ฒ๊ฐ ์ ๋ฒ์ ์ผ๋ก ์ ํ๋ ๋๋ง๋ค ํด๋น ์๋ฒ์ ๋ํด ๊ฐ๋ณ์ ์ผ๋ก ์์ ํ๋ก์ธ์ค๋ฅผ ์ ์ฉํ๋ค.
์์ ์ด ์๋ฃ๋๋ฉด ํธ๋ํฝ์ ๋ฐ์ ์ ์๋๋ก ์ค์ ํ๋ค.
๋ธ๋ฃจ-๊ทธ๋ฆฐ์ด ์๋๋๋ผ๋ ๋กค๋ง ๋ฐฐํฌ์์๋ ๋์ผํ๊ฒ ๋ฐฐํฌ ๋์์ธ ์๋ฒ๋ค์ ๋ชจ๋ ์์ ์ด ๋์ง ์์ ์ํ์ด๊ธฐ ๋๋ฌธ์, ์ค์ ํธ๋ํฝ์ผ๋ก ๋ถํ๋ฅผ ์ค์ ์์ ์ ์ํค๊ณ ํธ๋ํฝ์ ์ ํํ์ฌ ํธ๋ํฝ์ ๋ฐ์ ์ ์๋ ์ํ๋ก ๋ง๋๋ ๊ฒ ์ค์ํ๋ค.
Last updated