
๋ฐ์ดํฐ๋ฒ ์ด์ค
MySQL
StackOverflow ์ง๋ฌธ ์: 661984
์ฌ์ฉ ๊ธฐ์

ํด๋ผ์ธ

ํธ๋ ๋น

์ํผ๋ธ์์ด์์ด

๋ ๋ง

์๋ผ์ดํผ

ํ ์ค๋ฉ

ํ๋ค

๋๋ฆฌ์
์ค

ํ์ดํธ

์ง๋ฐฉ

์์ด๋ธ๋ฆฌ

ํ๋ ์ค

๋๋ผ๋ง์ค์ปดํผ๋

ํด๋์คํ

์์ค์ต

๋๋ฆผ์ด์ค์ปดํผ๋

์จ๊ณ

์คํผ
๋ ๋ณด๊ธฐ
SKํ
๋ ์ฝค
FastAPI์์์ ์์กด์ฑ ์ฃผ์
: ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋น์ค ๊ตฌ์กฐ ๋ง๋ค๊ธฐ
FastAPI๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น ํ๋ ์์ํฌ๋ก, Python์ ์ฌ์ฉํด REST API๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.์ด ํ๋ ์์ํฌ๋ ๋ํ ์์กด์ฑ ์ฃผ์
(Dependency Injection)์ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ, ๋ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋น์ค ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋ ๋ฐ ๋์์ ์ค๋๋ค.์ด๋ฒ ๊ธ์์๋ ์์กด์ฑ ์ฃผ์
์ด ๋ฌด์์ธ์ง, ๊ทธ๋ฆฌ๊ณ FastAPI์์ ์ด๋ฅผ ์ด๋ป๊ฒ ์ ์ฉํ ์ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.SOLID ์์น๊ณผ ์์กด์ฑ ์ญ์ ์์น (DIP)SOLID ์์น์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ๋ค์ฏ ๊ฐ์ง ์ฃผ์ ์์น์ ์๋ฏธํ๋ฉฐ, ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ ์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค.๊ทธ์ค์์๋ DIP(Dependency Inversion Principle, ์์กด์ฑ ์ญ์ ์์น)์ ์ค๋ฌด์์ ํนํ ๋ง์ด ํ์ฉ๋๋ ์์น ์ค ํ๋์
๋๋ค.DIP๋ ๊ณ ์์ค ๋ชจ๋(๋น์ฆ๋์ค ๋ก์ง)์ด ์ ์์ค ๋ชจ๋(๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด)์ ์์กดํ์ง ์๊ณ , ์ถ์ํ์ ์์กดํ๋๋ก ์ค๊ณํจ์ผ๋ก์จ ์์คํ
์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ ์ ์ฐ์ฑ์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.์๋๋ ์ด ๊ตฌ์กฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํํํ ๋ค์ด์ด๊ทธ๋จ์
๋๋ค.๋ค์ด์ด๊ทธ๋จ์์ ๋ณผ ์ ์๋ฏ์ด, ๊ณ ์์ค ๋ชจ๋์ ์ถ์ํ๋ ์ธํฐํ์ด์ค์๋ง ์์กดํ๊ณ , ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด๋ ์ถ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณ๋ฉ๋๋ค.DIP๋ ์ฝ๊ฒ ๋งํด ๊ตฌ์ฒด์ ์ธ ๊ตฌํ ๋์ ์ถ์ํ์ ์์กดํจ์ผ๋ก์จ, ์ฝ๋์ ์์ ์์ด๋ ๊ตฌํ์ฒด๋ฅผ ๊ต์ฒดํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.์ด๋ก ์ธํด ๋น์ฆ๋์ค ๋ก์ง์ ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐฉ์์ ๋ณํ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฉฐ, ์์คํ
์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ต๋๋ค.DIP์ ์์กด์ฑ ์ฃผ์
(DI)์์กด์ฑ ์ฃผ์
(Dependency Injection, DI)์ ์์กด์ฑ ์ญ์ ์์น(DIP)์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์
๋๋ค.DI๋ ๊ฐ์ฒด๊ฐ ์ง์ ์ ์ผ๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฐธ์กฐํ์ง ์๊ณ , ์ธ๋ถ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฃผ์
๋ฐ๋๋ก ํจ์ผ๋ก์จ DIP๋ฅผ ์คํํฉ๋๋ค.์ด๋ฅผ ํตํด ์์คํ
์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ๊ตฌํ์ฒด๋ฅผ ์ฝ๊ฒ ๊ต์ฒดํ๋ฉฐ, ํ
์คํธ ์ฉ์ด์ฑ์ ๋์ผ ์ ์์ต๋๋ค.์ด๋ฒ ๊ธ์์๋ ์ด๋ฌํ ์์กด์ฑ ์ฃผ์
์ FastAPI์์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋์ง, ๊ตฌ์ฒด์ ์ธ ์์๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค.์์กด์ฑ ์ฃผ์
์ ํ๋ก๊ทธ๋จ์ ๊ฐ ๊ตฌ์ฑ ์์๊ฐ ์๋ก ๊ฐํ๊ฒ ๊ฒฐํฉ๋๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์
๋๋ค.๋ณดํต ์๋น์ค ๋ก์ง์ ๋ฐ์ดํฐ ์ ๊ทผ ๋ก์ง๊ณผ ๊ฐ์ ํน์ ๋ชจ๋์ ์ง์ ์์กดํ๊ฒ ๋๋๋ฐ, ์ด๋ ์์คํ
์ ์ ์ง๋ณด์์ฑ์ ๋จ์ด๋จ๋ฆฌ๊ณ ํ์ฅ ๊ฐ๋ฅ์ฑ์ ์ ํํฉ๋๋ค.์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์์กด์ฑ ์ฃผ์
์ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ์ฒด ๋์ ์ถ์ํ๋ ์ธํฐํ์ด์ค์ ์์กดํ๋๋ก ํ์ฌ ์ ์ฐ์ฑ์ ๋์
๋๋ค.๊ฐ๋จํ ๋งํด, ์์กด์ฑ ์ฃผ์
์ ํน์ ๊ฐ์ฒด๊ฐ ์ง์ ์ ์ผ๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ์์กดํ์ง ์๋๋ก ํ๊ณ , ์ธ๋ถ์์ ํ์ํ ๊ฐ์ฒด๋ฅผ ์ฃผ์
ํจ์ผ๋ก์จ ์์คํ
์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ๋ฐฉ๋ฒ์
๋๋ค.์ด๋ฅผ ํตํด ๊ตฌํ์ฒด ๋ณ๊ฒฝ์ด ์ฝ๊ณ , ํ
์คํธ ์ ๋ชจ์ ๊ฐ์ฒด(mock)๋ฅผ ์ฃผ์
ํ์ฌ ๋
๋ฆฝ์ ์ธ ํ
์คํธ๋ฅผ ์ํํ ์ ์์ต๋๋ค.FastAPI์์ ์์กด์ฑ ์ฃผ์
์ ํ์์ฑFastAPI์์๋ ์์กด์ฑ ์ฃผ์
์ ์ฌ์ฉํด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ ์ ๊ทผ ๋ก์ง ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ์ ์ฐํ๊ฒ ์๋น์ค ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ
fastapi
mysql
๋น๊ทผ
LLM์ ํ์ฉํ ์ค๋งํธํฐ ์์ธ์กฐํ ์๋น์ค ๊ตฌ์ถ
์ค๋งํธํฐ์ ๋ฐ๊พผ ํ ์ด์ ์ ์ผ๋ ๊ธฐ๊ธฐ๋ฅผ ์ค๊ณ ๋ก ํ์๋ณด์ ์ ์์ผ์ธ์? โ์ด ์ ๋ ์ํ์ ๊ธฐ๊ธฐ๋ฉด ์ด๋ ์ ๋ ๊ฐ๊ฒฉ๋๊ฐ ์ ๋นํ ๊ฑฐ์ง?โ ๊ณ ๋ฏผํ๋ฉฐ, ์๋ง์ ์ค๊ณ ๋งค๋ฌผ ๊ฒ์๊ธ์ ์ผ์ผ์ด ํ์ธํ์ง๋ ์์ผ์
จ๋์? ์ด์ ๋ LLM(๋ํ ์ธ์ด ๋ชจ๋ธ) ๋๋ถ์ ์ด๋ ๊ฒ ๋ฒ๊ฑฐ๋กญ๊ณ ์ด๋ ค์ ๋ ์์
์ด ํจ์ฌ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํด๊ฒฐ๋๊ณ ์์ด์.์ด ๊ธ์์๋ LLM์ ํ์ฉํด ์ค๊ณ ๊ฑฐ๋ ๊ฒ์๊ธ์์ ์ค๋งํธํฐ ์ ๋ณด๋ฅผ ์ถ์ถํ๊ณ , ์ด๋ฅผ ํตํด ์์ธ๋ฅผ ์ฐ์ถํ ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ค๊ณ ํด์. ๋จผ์ ์ค๋งํธํฐ ์์ธ์กฐํ ์๋น์ค๋ฅผ ์ ๋ง๋ค๊ฒ ๋๋์ง ๋ฐฐ๊ฒฝ์ ๊ฐ๋จํ ์ดํด๋ณธ ํ, LLM์ผ๋ก ๊ฒ์๊ธ์ ๋ถ๋ฅยท์ ์ ํ๋ ๊ณผ์ , BigQuery๋ฅผ ์ด์ฉํด ์ ๋ณด๋ฅผ ํ์ฒ๋ฆฌํ๊ณ ์์ธ๋ฅผ ์ง๊ณํ๋ ๊ณผ์ , ๋ง์ง๋ง์ผ๋ก ๋ฒกํฐ DB ๊ธฐ๋ฐ์ผ๋ก ์ ์ฌ ๊ฒ์๊ธ์ ์ถ์ฒํ๋ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์๊ฐํด ๋๋ฆด๊ฒ์. LLM์ผ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ํจ๊ณผ์ ์ผ๋ก ๊ฐ์ ํ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผ ์ค์ธ ๋ถ๋ค์๊ฒ ์ด ์ฌ๋ก๊ฐ ํฐ ๋์์ด ๋๋ฉด ์ข๊ฒ ์ด์.์ค๋งํธํฐ ์์ธ์กฐํ ์๋น์ค์ ๋ชจ์ต์ค๋งํธํฐ ์์ธ์กฐํ๋ ์ ํ์ํ ๊น์?๋ง์ ์ค๊ณ ๊ฑฐ๋ ํ๋งค์๋ค์ด ๋ฌผํ์ ์ ์ ํ ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํ๋ ๊ฑธ ์ด๋ ค์ํด์. ๊ฐ์ธ ๊ฐ ๊ฑฐ๋๋ ์๋ ๋ค์ํ ์ํ์ด ํผ์ฌ๋์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ์. ์ข
๋ฅ๋ ์๋ ๋ค์ํ๋ฐ ์ํ๋ ๊ฐ์ง๊ฐ์์ด๋ผ, ๋ฌผํ์ ์ ํํ ์์ธ๋ฅผ ํ๋์ ํ์
ํ๊ธฐ ์ด๋ ค์ด ๊ฑฐ์ฃ . ์ค๋งํธํฐ์ ์๋ก ๋ค๋ฉด ๋จ์ํ ๊ฐ์ ๊ธฐ์ข
๋ง ๊ฒ์ํด์ ๋๋ ์ผ์ด ์๋๋ผ, ์ฌ์ฉ ๊ธฐ๊ฐ, ๋ฐฐํฐ๋ฆฌ ํจ์จ, ์คํฌ๋์น ์ฌ๋ถ ๋ฑ ์ํ๊ฐ ๋น์ทํ ๊ธฐ๊ธฐ๊ฐ ์ผ๋ง์ ํ๋ฆฌ๋์ง ์ผ์ผ์ด ํ์ธํด์ผ ํ๋ ๊ฑฐ์์.์ค๊ณ ๊ฑฐ๋ํ์ ์ฌ์ฉ์๊ฐ ๋ฌผํ์ ์์ธ๋ฅผ ํ๋์ ํ์ธํ๊ณ ๋ ์ฝ๊ฒ ๊ฐ๊ฒฉ์ ๊ฒฐ์ ํ ์ ์๋๋ก, ์์ดํฐ, ๊ฐค๋ญ์ ๊ธฐ์ข
์ ๋์์ผ๋ก ํ ์ค๋งํธํฐ ์์ธ ์กฐํ ์๋น์ค๋ฅผ ํ
์คํธํ๊ธฐ๋ก ํ์ด์. ๋ค์ํ ๋ฌผํ ์ค ์ค๋งํธํฐ์ ๋ฒ ํ ํ
์คํธ ๋์์ผ๋ก ์ ์ ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์์. ์ค๋งํธํฐ์ ์ ํ ๋ชจ๋ธ์ด ๋ช
ํํ๊ณ ๊ฒ์๊ธ ์๊ฐ ๋ง์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ธ ๊ณ์ฐ์ ์ ๋ฆฌํด์. ๋ ํ๋งค ๋จ๊ฐ๊ฐ ๋์ ๊ฐ๊ฒฉ ๊ฒฐ์ ์ด ์ค์ํ ์ํ์ด๊ธฐ๋ ํ๊ณ ์.๊ฒฐ๊ณผ์ ์ผ๋ก ๋ชจ๋ธ, ์ฉ๋, ์ ์ํ ์ฌ๋ถ, ์คํฌ๋์น ๋ฐ ํ์, ๋ฐฐํฐ๋ฆฌ ํจ์จ ๋ฑ ๊ตฌ์ฒด์ ์ธ ๋ฌผํ ์ํ์ ๋ฐ๋ผ ์์ธ๊ฐ ์ด๋ ์ ๋์ธ์ง ํ์
ํ ์ ์๋ ์๋น์ค๋ฅผ ๋ง๋ค์์ด์. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ โ์์ดํฐ 16 Pro 128GBโ๋ฅผ ์ ํํ๊ณ ํํฐ์์ ๊ตฌ์ฒด์ ์ธ โ์ฌ์ฉ ์ํโ๋ โ๋ฐฐํฐ๋ฆฌ ์ฑ๋ฅโ์ ์ค์ ํ๋ฉด, ๊ณง๋ฐ๋ก ๊ทธ์ ๋ฐ๋ฅธ ์์ธ ์ ๋ณด๋ฅผ โOOO๋ง์-OOO๋ง์โ๊ณผ ๊ฐ์ ๊ฐ๊ฒฉ ๋ฒ์์ ํํ๋ก ํ์ธํ ์ ์์ด์. ์ด๋ฒ ํ๋ก์ ํธ๋ ๋จธ์ ๋ฌ๋์ ํ์ฉํด ๋น๊ทผ ์ค๊ณ ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ํํ ์์ธ๋ฅผ ์ ๊ณตํ ์ฒซ ๋ฒ์งธ ์๋๋ก, ํ ๋ด์์๋ ์๋ฏธ๊ฐ ํฐ ํ๋ก์ ํธ์ด๊ธฐ๋ ํ๋๋ฐ์. ๊ทธ๋ผ ๋ณธ๊ฒฉ์ ์ผ๋ก ๊ธฐ๋ฅ์ ๊ตฌํํด ๋๊ฐ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์๊ฐํด ๋๋ฆด๊ฒ์.Step 1. ์ํ ์ ๋ณด ์ถ์ถ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๊ฒ์๊ธ์์ ์ํ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ๊ฒ์ด์์. ๋น๊ทผ์ ํ๋งค์์ ๊ธ์ฐ๊ธฐ ํ๋ค์ ๋ฎ์ถ๊ธฐ ์ํด ์ค๊ณ ๊ฑฐ๋ ๊ฒ์๊ธ์ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ข
์ด๋ ๋ฌผํ ์ํ๋ฅผ ์
๋ ฅํ๋๋ก ์๊ตฌํ์ง ์์์. ํ์ง๋ง ๊ตฌ์ฒด์ ์ธ ๋ฌผํ ์ํ๋ณ๋ก ์ค๋งํธํฐ ์์ธ๋ฅผ ์ ๊ณตํ๋ ค๋ฉด ๋ชจ๋ธ, ์ฉ๋, ์ ์ํ ์ฌ๋ถ, ์คํฌ๋์น ๋ฐ ํ์ ์ฌ๋ถ, ๋ฐฐํฐ๋ฆฌ ํจ์จ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ๋ค์ํ ์กฐ๊ฑด์ ์์๋ด์ผ ํ์ด์.๊ธฐ์กด์๋ ์ด๋ฐ
googlebigquery
mysql
์นด์นด์คํ์ด
JPA Transactional ์ ์๊ณ ์ฐ๊ณ ๊ณ์ ๊ฐ์?
dory.m ์ ํ๋ฆฌ์ผ์ด์
์ ์ต๊ทผ์ ๋ค์ด์ ์ฝ๊ฒ ์ค์ผ์ผ ์์ ํ ์ ์๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง, ์์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ๊ท์คํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ณ ์๋์ง ๋ค์๊ธ ์๊ฐํ๊ฒ ํด์ฃผ๋ ๊ธ์
๋๋ค.wade.hong JPA๋ฅผ ๋ค๋ฃจ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ตฌ๋๋๋ ์๋ฆฌ๋ฅผ ์ ํํ๊ฒ ์์์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฐ ์ ์์ ์ด ๋ด์ฉ์ ํ์์ ์ผ๋ก ๋ด์ผ ํ๋ ๋ด์ฉ์
๋๋ค. ํ ๋ฒ ๋ JPA Transactional๋ฅผ ์ ๊ฒํ ๊ธฐํ์ธ ๊ฑฐ ๊ฐ์ต๋๋ค.wonny.p ๋น์ฐํ๊ฒ ์ฌ์ฉํ๋ Transactional์ ๋ํด์ ๊ณ ์ฐฐํ ์ ์๋ ์๊ฐ์ ๊ฐ๊ฒ ํด์ฃผ๋ ์ข์ ๊ธ์ด๋ผ ์๊ฐํฉ๋๋ค.๐๐ป ์ค์ ๊ฐ์ ํ๋ ๋ด์ฉ๋ค์ด ๋ค์ด ์์ด์ ๋์ฑ ์ฝ๊ธฐ ์ข์์ต๋๋ค.์๋
ํ์ธ์ ์นด์นด์คํ์ด์์ ์จ๋ผ์ธ๊ฒฐ์ ์๋น์ค ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋งก๊ณ ์๋ bri.ghten์
๋๋ค.๋ณธ ํฌ์คํ
์์๋ JPA Transactional๊ณผ ๊ทธ์ ๋ฐ๋ฅธ DB ์ฟผ๋ฆฌ ์ฑ๋ฅ๊ณผ์ ๊ด๊ณ์ ๋ํด์ ์ค๋ช
ํฉ๋๋ค. ๋ฐ๋ผ์ DB Transaction๊ณผ Spring Transactional, JPA, Spring data source์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ํ์ํฉ๋๋ค.DataSource๋ก๋ Mysql์ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํ๋ฉฐ ์ฟผ๋ฆฌ ํ๋ ๋ฐ ์ธ๋ฑ์ค ํ๋์ผ๋ก ์ธํ ์ฑ๋ฅ ๊ฐ์ ์ ๋ํด์๋ ์ค๋ช
ํ์ง ์์ต๋๋ค.์ด๋ ๋ DBA ์๊ฒ์ ์ํ ์๋ฆผ์ด ์๋ค.์ด๋ ๋ , DBA๊ฐ ์๋น์ค ์ํ์ ๊ฐ์งํ๊ณ ์๋ฆผ์ ๋ณด๋์ต๋๋ค.๋น์ ์งํ๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.peak total qps๋ 24K ์ ๋๋ก ์กํ์์์ง๋ง select์ commit ์ฟผ๋ฆฌ๋ ์ฝ 5K, update์ insert ์ฟผ๋ฆฌ๋ 3K ๋ฏธ๋ง์ผ๋ก ์๋ณ์ด ํ๋ค์๊ณ , set_option ์ฟผ๋ฆฌ๊ฐ ์ฝ 14K ์ ๋๋ก ๋๋ค๋ ์ ์ด ์์ํ์ต๋๋ค. set_option ์ฟผ๋ฆฌ๋ฅผ ์ดํด๋ณผ ํ์๊ฐ ์์์ต๋๋ค.Mysql์์์ set_option์ ๋ง ๊ทธ๋๋ก option setting ํ๋ ๋ชจ๋ ์ฟผ๋ฆฌ์
๋๋ค. ์นด์นด์คํ์ด ์จ๋ผ์ธ๊ฒฐ์ ์๋น์ค์ ๊ฐ๋ฐํ๊ฒฝ์์ DB ๋ก๊ทธ๋ฅผ ์ฝ 4์ผ๊ฐ ์ผ๋๊ณ ์ด๋ค ์ฟผ๋ฆฌ๋ค์ด ๊ฐ์ฅ ๋ง์ด ํธ์ถ๋๋์ง 10์๊น์ง์ ์์๋ฅผ ์ฐพ์๋ดค์ต๋๋ค.์ด ์ค set_option๊ณผ ์ฐ๊ด๋ ์ฟผ๋ฆฌ๋ค์ ๋ณด๋ , , , ๋ฑ์ด ์๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค. ์ ํฌ๋ ์ฌ๊ธฐ์ autocommit๊ณผ transaction ๊ด๋ จ ์ฟผ๋ฆฌ๋ฅผ ๋์ฌ๊ฒจ๋ณด์์ต๋๋ค.์นด์นด์คํ์ด ์จ๋ผ์ธ๊ฒฐ์ ์๋น์ค ๋ฐฑ์๋์์๋ JPA๋ฅผ ํตํ DB Access ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋๋ฐ์. ์ฌ๊ธฐ์ JPA Transactional์ด DB ๋ฆฌ์์ค ์ฌ์ฉ, ์ฆ DB ์กฐํ ์ฑ๋ฅ์ ์๊ฒ ๋ชจ๋ฅด๊ฒ ์ํฅ์ ๋ผ์น๊ณ ์์์ ์๊ฒ ๋์์ต๋๋ค.์ค์ ๋ก set_option๊ณผ commit์ด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ๊น?autocommit๊ณผ transaction ๊ด๋ จ ์ฟผ๋ฆฌ๊ฐ ์กฐํ ์ฟผ๋ฆฌ๋ ์๋๊ณ DB cpu๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์๋จน๋ ํฐ ํ๋ค์ด ๋ ๊น ์ถ์์ง๋ง ์ง์ ํ
์คํธ๋ฅผ ์งํํด ํ์ธํด ๋ณด๊ธฐ๋ก ํ์ต๋๋ค. ํ
์คํธ๋ ์ด์ ์ค์ธ ์๋น์ค์์ ์ค์ ์ต๋ค ์กฐํ๋๋ ํ
์ด๋ธ์ ๊ธฐ์ค์ผ๋ก ์งํํ์ต๋๋ค.์๋ ์์ ์ฝ๋๋ ํ
์คํธํ ์ค์ ์์ ์ฝ๋์ ์ต๋ํ ๋น์ทํ๊ฒ ์์ฑํ ์ฝ๋์
๋๋ค.ํด๋น ์ฝ๋๋ก ์ฑ๋ฅ ํ
์คํธ๋ฅผ ์งํํ์๊ณ ์ธ๋ถ ์์ธ์ ์ ๊ฑฐํ๊ธฐ ์ํด osiv=false๋ก ๋
mysql
spring
์ฌ๊ธฐ์ด๋์ปดํผ๋
Aurora Serverless ์์๋ณด๊ธฐ
์๋
ํ์ธ์, SREํ์ DBA๋ก ์๋ก ํฉ๋ฅํ ๋ธ๋ผ์ฐ๋์
๋๋ค.AWS Service์ ์ฌ๋ฌ ์๋น์ค๊ฐ ์์ง๋ง ๊ทธ ์ค์์๋ ์ฌ๋ฌ ์๋น์ค์ ํ์ฉํ ์ ์๋ ์ฃผ์ ๋ฅผ ๋ค๋ค๋ณด๊ณ ์ ํฉ๋๋ค. ๊ทธ๋์ ์ ํํ ์ฃผ์ ๋ AWS์์ ์ ๊ณตํ๋ Aurora Serverless v2์
๋๋ค. Aurora Serverless v2๋ Aurora MySQL ํธํ ๋ฒ์ ๋ฐ PostgreSQL ํธํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณธ ํฌ์คํ
์์๋ ๋ช
์นญ์ ํผ์ ์ ์์ ๊ธฐ ์ํด Aurora Serverless(Aurora Serverless Mysql v2)์ Aurora MySQL(๊ธฐ์กด Aurora MySQL)๋ก ์ง์นญํ๊ฒ ์ต๋๋ค. Aurora Serverless ์ ๋ํ ๊ฐ๋ตํ ์๊ฐ์ ๋๋ถ์ด Aurora MySQL๊ณผ ๋์กฐ๋ฅผ ํด ๋ณด๊ณ , ๊ทธ ์ค ์ฃผ๋ชฉํ ๋งํ ์ ์ ๋ํด ์ฑ๋ฅ ์์ฃผ๋ก ๊ณต์ ํ๊ณ ์ ํฉ๋๋ค.์ฐธ์กฐ : Aurora Serverless v2 ์ฌ์ฉํ๊ธฐโโโAmazon AuroraAmazon AuroraAurora Serverless์ ๊ฐ์ ๋ฐ ์ฃผ์ ํน์งAurora Serverless๋?Aurora Serverless๋ Aurora MySQL์ ๋ํ ์จ๋๋งจ๋ ๋ฐฉ์์ ์๋ ํฌ๊ธฐ ๊ตฌ์ฑ์ ํ ์ ์๊ฒ ํด์ฃผ๋ AWS ์๋น์ค์
๋๋ค. ๊ธฐ์กด์๋ Aurora MySQL์ ๊ด๋ฆฌํ๋ ค๋ฉด ์๋ก์ด ๋ถํ ์ํฉ์ ๋ฏธ๋ฆฌ ์์ํ์ฌ ์ฆ์คํด์ผ๋ง ํ์์ต๋๋ค. ํ์ง๋ง, Aurora Serverless ๋ ์ ํ๋ฆฌ์ผ์ด์
์๊ตฌ ์ฌํญ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋์ผ๋ก ํ์ฅ/์ถ์๋ฉ๋๋ค. ๋ํ, ์ฌ์ฉํ์ง ์๋ ๋ฆฌ์์ค์ ๋ํด์๋ ์๊ธ์ ์ง๋ถํ์ง ์๊ณ Aurora์ ๊ณ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ์ ๊ทธ๋๋ก ํ์ฉํ ์ ์์ผ๋ฉฐ, ๋น ๋ฅธ ์๋๋ก ์ด์ฉํ ์ ์์ต๋๋ค. ์ฆ, ํธ๋ํฝ์ ์์ธกํ ์ ์์ ๋ ์ ์ ํ ๊ตฌ์ฑ์ผ๋ก ๋ณผ ์ ์์ต๋๋คAurora Serverless๋ v1, v2๋ก ๋ฒ์ ์ด ๋๋์ด์ ธ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Aurora MySQL์ v1,v2,v3๊ฐ ์๋๋ฐ, ํ์ฌ๋ Aurora MySQL v3์์ Aurora Serverless v1 ์ฌ์ฉ์ ๋ถ๊ฐํฉ๋๋ค.์ฐธ์กฐ : https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/AuroraUserGuide/Concepts.Aurora_Fea_Regions_DB-eng.Feature.ServerlessV1.html#Concepts.Aurora_Fea_Regions_DB-eng.Feature.ServerlessV1.amyAurora Serverless์์ ACU(Aurora Capacity Unit)๋ผ๋ ๋จ์๋ฅผ ์ด์ฉํ์ฌ Resource๋ฅผ ์ ํ๊ฒ ๋ฉ๋๋ค. 0.5 ~ 128 ACU๊น์ง ๋ฒ์๋ฅผ ์ ํ ์ ์์ผ๋ฉฐ ์ต์๋จ์ ACU๋ก ์ด๋น ๊ณผ๊ธ๋ฉ๋๋ค. 1 ACU= ๋๋ต ์ ์ผ๋ก 2GB Memory + CPU + Network ์ ์กฐํฉ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ACU๋ ServerlessDatabaseCapacity์ ACUUtilization, ๋ ๊ฐ์ง ์งํ๋ฅผ ํตํด ์์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.์ฐธ์กฐ : Aurora Serverless v2์ ์ฑ๋ฅ ๋ฐ ํฌ๊ธฐ ์กฐ์ โโโAmazon AuroraScale Up / Down์ ๋ฐ๋ผ
awsauroradb
mysql
์ฐ๊ด ๊ธฐ์ ์คํ

AWS AuroraDB

AWS MariaDB

OracleDB

PostgreSQL