AI๊ฐ ๋ง๋๋ ์ ๋ขฐ์ฑ ์๋ ์ฐจ์ฉ์ฆ, ์์คํฌ๋ก๋ก ์์ ํ ๊ธ์ ๊ฑฐ๋
๊ฐ๋ฐ๊ธฐ๊ฐ: 2024.08.19 ~ 2024.10.11 (7์ฃผ)
ํ๋ ์ฌํ์์ ๊ฐ์ธ ๊ฐ ๊ธ์ ๊ฑฐ๋๋ ์ผ์์ ์ธ ์ผ์ด ๋์์ง๋ง, ์ฌ์ ํ ๋ง์ ์ํ๊ณผ ๋ถํธํจ์ ๋๋ฐํฉ๋๋ค. ์๊ธฐ๋ก ์์ฑ๋ ์ฐจ์ฉ์ฆ์ ๋ฒ์ ํจ๋ ฅ์ด ๋ถํ์คํ๊ณ , ๊ฐ์ธ ๊ฐ ๊ฑฐ๋๋ ์์ ์ฑ์ ๋ณด์ฅ๋ฐ๊ธฐ ์ด๋ ค์ฐ๋ฉฐ, ์ฑ๋ฌด ๋ถ์ดํ ์ ์ ์ ํ ๋์ ๋ฐฉ์์ ์ฐพ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ํ, ์ํ ์ผ์ ๊ณผ ๋ด์ญ ๊ด๋ฆฌ๊ฐ ์ฒด๊ณ์ ์ผ๋ก ์ด๋ฃจ์ด์ง์ง ์์ ๋ถ์์ ์์ง๊ฐ ๋์์ง๊ณ ์์ต๋๋ค. ๐ธ
ํนํ ๋ถํ ์ํ์ ๊ฒฝ์ฐ, ๋งค๋ฒ ์๊ธฐ๋ก ์ํ ๋ด์ญ์ ๊ธฐ๋กํ๊ณ ๊ด๋ฆฌํด์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์์ผ๋ฉฐ, ์ข ์ข ๊ธฐ๋ก ๋๋ฝ์ด๋ ์ค๋ฅ๋ก ์ด์ด์ ธ ๋น์ฌ์ ๊ฐ ์ ๋ขฐ ๊ด๊ณ๋ฅผ ํด์น๋ ์์ธ์ด ๋๊ณ ์์ต๋๋ค. ๊ธฐ์กด์ ์๊ธฐ ์ฅ๋ถ ๋ฐฉ์์ผ๋ก๋ ๊ฑฐ๋์ ํฌ๋ช ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๊ณ , ์ค์๊ฐ์ผ๋ก ์ํ ํํฉ์ ํ์ธํ๋ ๊ฒ๋ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๐
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ์ฐจ์ฉ๋ฐ์ฌ๋ AI ๊ธฐ์ ๊ณผ ์์คํฌ๋ก ์์คํ ์ ๊ฒฐํฉํ ํ์ ์ ์ธ P2P ๋์ถ ์ค๊ฐ ํ๋ซํผ์ ์ ์ํฉ๋๋ค. ๋ฒ์ ํจ๋ ฅ์ด ์๋ ์ ์ ์ฐจ์ฉ์ฆ ๋ฐํ๋ถํฐ ์์ ํ ๊ฑฐ๋ ์์คํ , ์๋ํ๋ ์ํ ๊ด๋ฆฌ๊น์ง, ๊ฐ์ธ ๊ฐ ๊ธ์ ๊ฑฐ๋์ ํ์ํ ๋ชจ๋ ์์๋ฅผ ํฌ๊ด์ ์ผ๋ก ์ ๊ณตํฉ๋๋ค. ๐
์ฐจ์ฉ๋ฐ์ฌ๋ ๋จ์ํ ๊ธ์ ๊ฑฐ๋ ํ๋ซํผ์ ๋์ด, ๊ฐ์ธ ๊ฐ ๊ธ์ ๊ฑฐ๋์ ์๋ก์ด ํจ๋ฌ๋ค์์ ์ ์ํฉ๋๋ค. ์ ๋ขฐ์ฑ, ์์ ์ฑ, ํธ์์ฑ์ ํต์ฌ ๊ฐ์น๋ก ์ผ์, ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์์ฌํ๊ณ ์ด์ฉํ ์ ์๋ ์๋น์ค๋ฅผ ๋ง๋ค์ด๊ฐ๊ณ ์์ต๋๋ค. ์์ผ๋ก๋ ์ฐจ์ฉ๋ฐ์ฌ๋ ์ฌ์ฉ์๋ค์ ํผ๋๋ฐฑ์ ๋ฐ์ํ๋ฉฐ ์ง์์ ์ผ๋ก ์๋น์ค๋ฅผ ๊ฐ์ ํ์ฌ, ๋ ๋์ ๊ธ์ ๊ฑฐ๋ ๋ฌธํ๋ฅผ ๋ง๋ค์ด ๋๊ฐ๊ฒ ์ต๋๋ค. ๐ช
์ง์ข ๊ถ | ์กฐํ์ | ๋ฐ๊ฒฝ๋ฆผ | ๊ฐ๋ฏผ์ |
---|---|---|---|
@jijongkwon | @HyunSoo730 | @g16rim | @cjo5929 |
SSAFY ๐จโ๐ป Backend ๐ Infra |
SSAFY ๐จโ๐ป Backend |
SSAFY ๐จโ๐ป Backend |
SSAFY ๐จโ๐ป Backend ๐ค AI |
์ด์ง์ | ๊น์ ์ |
---|---|
@LEEJW1953 | @LineHero |
SSAFY ๐จ Frontend |
SSAFY ๐จ Frontend |
LLM ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ๊ฐ ๋ํ ์ปจํ ์คํธ๋ฅผ ๋ถ์ํ๊ณ ๋ฒ์ ๊ตฌ์๋ ฅ์ ๊ฐ์ถ ์ฐจ์ฉ์ฆ์ ์๋ ์์ฑํฉ๋๋ค. ์ค๋ช ๊ณ์ข ์ธ์ฆ ์์คํ ๊ณผ ์ฐ๋ํ์ฌ ๊ฑฐ๋ ๋น์ฌ์์ ์ ์์ ๊ฒ์ฆํ๊ณ , ์์ ํ ์จ๋ผ์ธ ์ ์ฅ์์์ ์ฐจ์ฉ์ฆ์ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ๋ชจ๋ ์ฐจ์ฉ์ฆ์ ๋ฒ์ ํจ๋ ฅ์ด ์๋ PDF ํํ๋ก ์ ๊ณต๋์ด ์ถํ ๋ฒ์ ๋ถ์ ๋ฐ์ ์ ์ฆ๋น ์๋ฃ๋ก ํ์ฉํ ์ ์์ต๋๋ค. ๐
- AI ๊ธฐ๋ฐ ์ฐจ์ฉ์ฆ ์์ฑ: ์ฑํ ๋ํ๋ฅผ ๋ถ์ํ์ฌ ์๋์ผ๋ก ์ฐจ์ฉ์ฆ ์ด์ ์์ฑ
- ๊ณ์ข ์ธ์ฆ ์์คํ : 1์ ์ก๊ธ์ ํตํ ์ค๋ช ๊ณ์ข ์ธ์ฆ
- ๋ฌธ์ ๊ด๋ฆฌ ์ฒด๊ณ: ์ฐจ์ฉ์ฆ ์ด๋ ฅ ๊ด๋ฆฌ ๋ฐ ์์ ํ ๋ณด๊ด
- PDF ๋ณํ: ๋ฒ์ ํจ๋ ฅ์ด ์๋ ํํ์ PDF ๋ฌธ์ ์ถ๋ ฅ ๊ธฐ๋ฅ
์์คํฌ๋ก ๊ธฐ๋ฐ์ ์์ ํ ๊ฑฐ๋ ์์คํ ์ ํตํด ์ฑ๊ถ์์ ์ฑ๋ฌด์ ๋ชจ๋๋ฅผ ๋ณดํธํฉ๋๋ค. ๋ถํ ์ํ ๊ธฐ๋ฅ์ผ๋ก ์ ์ฐํ ๊ฑฐ๋๊ฐ ๊ฐ๋ฅํ๋ฉฐ, ๋ชจ๋ ๊ฑฐ๋ ๋ด์ญ์ ์ค์๊ฐ์ผ๋ก ๊ธฐ๋ก๋ฉ๋๋ค. ๐ฆ
- ์์คํฌ๋ก ์์คํ : ์์ ํ ์ค๊ฐ ๊ฑฐ๋ ๋ณด์ฅ
- ๋ถํ ์ํ ๊ด๋ฆฌ: ์ฒด๊ณ์ ์ธ ๋ถํ ์ํ ์ผ์ ๊ด๋ฆฌ
- ์ค์๊ฐ ๊ฑฐ๋ ์ถ์ : ๋ชจ๋ ๊ฑฐ๋ ๋ด์ญ ์ค์๊ฐ ๊ธฐ๋ก
๊ฑฐ๋ ๋น์ฌ์ ๊ฐ์ ์ํํ ์ํต์ ์ํ 1:1 ์ฑํ ์์คํ ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ์ฑํ ๋ด์ญ์ ์์ ํ๊ฒ ๋ณด๊ด๋๋ฉฐ, ์ค์ํ ๋ฉ์์ง๋ ์ฆ์ ์๋ฆผ์ ํตํด ์ ๋ฌ๋ฉ๋๋ค. ๐ฌ
- 1:1 ์ฑํ : ๊ฑฐ๋ ๋น์ฌ์ ๊ฐ ์ค์๊ฐ ์ฑํ ์ง์
- ์ฑํ ํ์คํ ๋ฆฌ: ๋ํ ๋ด์ญ ๋ณด๊ด ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ
- ์๋ฆผ ์ค์ : ๋ง์ถคํ ์๋ฆผ ์ค์ ๊ธฐ๋ฅ
์ง๊ด์ ์ธ ๋์๋ณด๋๋ฅผ ํตํด ์งํ ์ค์ธ ๋ชจ๋ ๊ฑฐ๋ ํํฉ์ ํ๋์ ํ์ ํ ์ ์์ต๋๋ค. ๋ํ ๊ฑฐ๋ ์ด๋ ฅ๊ณผ ํต๊ณ ๊ธฐ๋ฅ์ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ๐
- ๊ฑฐ๋ ๋ชฉ๋ก: ์งํ ์ค์ธ ๊ฑฐ๋ ๋ชฉ๋ก ์ค์๊ฐ ์ ๊ณต
- ์์ธ ์ ๋ณด: ๊ฐ ๊ฑฐ๋๋ณ ์์ธ ์ ๋ณด ์กฐํ
์ํ ์ผ์ , ์ ๊ธ ํ์ธ, ๋ ์ด ๋ฑ ์ค์ํ ์๋ฆผ์ ๋ค์ํ ์ฑ๋์ ํตํด ์ ๋ฌํฉ๋๋ค. ์นด์นด์คํก๊ณผ ์ฑ ๋ด ์๋ฆผ์ ํตํด ์ค์ํ ์ ๋ณด๋ฅผ ๋์น์ง ์๋๋ก ํฉ๋๋ค. ๐
- ์๋ ์๋ฆผ: ์ํ ๊ธฐ์ผ ๋ฐ ๋ ์ด ์๋ ์๋ฆผ
- ๋ฉํฐ ์ฑ๋: ์ฑ ๋ด ์๋ฆผ ๋ฐ ์นด์นด์คํก ์๋ฆผ ๋์ ์ง์
- ์๋ฆผ ์ค์ : ์ฌ์ฉ์(์ฑ๊ถ์) ๋ง์ถคํ ์๋ฆผ ์ค์ ๊ธฐ๋ฅ
๐ฌ AI ๊ธฐ๋ฐ ์ฐจ์ฉ์ฆ ์๋ ์์ฑ | |
๋ํ ๊ธฐ๋ฐ ์ค์๊ฐ ์ฐจ์ฉ์ฆ ์์ฑ ๊ณผ์ |
๐ ๋ฉ์ธ ํ๋ฉด | ๐ ๊ฑฐ๋ ๋ด์ญ |
์ง๊ด์ ์ธ ๋์๋ณด๋ ํ๋ฉด |
์์ธํ ๊ฑฐ๋ ๊ธฐ๋ก ๊ด๋ฆฌ |
๐ ๊ฑฐ๋ ๋ชฉ๋ก | ๐ ๊ณ์ข ์ธ์ฆ |
์งํ ์ค์ธ ๋ชจ๋ ๊ฑฐ๋ ํํฉ ์กฐํ |
1์ ์ธ์ฆ์ ํตํ ์์ ํ ๊ณ์ข ํ์ธ |
- ์ค์๊ฐ ์ฐจ์ฉ์ฆ ์์ฑ: AI๊ฐ ๋ํ๋ฅผ ๋ถ์ํ์ฌ ์๋์ผ๋ก ์ฐจ์ฉ์ฆ์ ์์ฑ
- ์ง๊ด์ ์ธ ์ธํฐํ์ด์ค: ์ฌ์ฉ์ ์นํ์ ์ธ UI/UX ์ค๊ณ
- ์์ ํ ์ธ์ฆ ์์คํ : 1์ ๊ณ์ข ์ธ์ฆ์ ํตํ ์ ์ ํ์ธ
- ์์ธํ ๊ฑฐ๋ ๊ด๋ฆฌ: ๋ชจ๋ ๊ฑฐ๋ ๋ด์ญ์ ํ๋์ ํ์ธ
์ ํฌ ํ๋ก์ ํธ์ ์ธํ๋ผ ์ํคํ ์ฒ๋ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์์ผ๋ฉฐ, AI ์๋น์ค ํตํฉ๊ณผ ์ฑ๋ฅ ๊ฐ์ ์ ์ํ ์ง์์ ์ธ ๊ณ ๋ํ๋ฅผ ์งํํ ์์ ์ ๋๋ค.
- EC2 ์ธ์คํด์ค์์ 80(HTTP)๊ณผ 443(HTTPS) ํฌํธ๋ง ์ธ๋ถ์ ๊ฐ๋ฐฉํ์ฌ ๋ณด์์ ๊ฐํํ์ต๋๋ค.
- Nginx๋ฅผ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ์ฌ์ฉํ์ฌ ๋ค์ด์ค๋ ๋ชจ๋ ํธ๋ํฝ์ ๊ด๋ฆฌํ๊ณ ์ ์ ํ ๋ผ์ฐํ ํฉ๋๋ค.
/
: ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก ๋ผ์ฐํ/api
: ๋ฐฑ์๋ API ์๋ฒ๋ก ์์ฒญ ์ ๋ฌ/ai
: Meta AI ๋ฐ LangChain ์๋น์ค๋ก ์์ฒญ ์ ๋ฌ
- ๋ชจ๋ ์๋น์ค(ํ๋ก ํธ์๋, ๋ฐฑ์๋, AI ์๋น์ค, Redis ๋ฑ)๋ ๋จ์ผ EC2 ์ธ์คํด์ค ๋ด์์ Docker ์ปจํ ์ด๋๋ก ์คํ๋ฉ๋๋ค.
- Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ค ์ปจํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ณ ์คํํฉ๋๋ค.
- Redis ์ปจํ ์ด๋๋ฅผ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ์บ์ฑ ๋ฐ ์ธ์ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
- GitLab์ ์ฌ์ฉํ์ฌ ์์ค ์ฝ๋๋ฅผ ๊ด๋ฆฌํ๊ณ , Webhook์ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํฉ๋๋ค.
- Jenkins๋ฅผ CI/CD ๋๊ตฌ๋ก ์ฌ์ฉํ์ฌ ์๋ํ๋ ๋น๋, ํ ์คํธ, ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ์ต๋๋ค.
- MatterMost ์ฐ๋์ ํตํด ๋ฐฐํฌ ์ํ(์ฑ๊ณต/์คํจ)๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์๋ค์๊ฒ ์๋ฆฝ๋๋ค.
- Grafana๋ฅผ ํตํ ์ค์๊ฐ ์์คํ ๋ชจ๋ํฐ๋ง ๊ตฌํ
- ๋ฐฐํฌ ์ด๋ ฅ ๋ฐ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ค ์๊ฐํ
- AI ์๋น์ค๋ฅผ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๋ถ๋ฆฌ
- ์๋น์ค๋ณ ๋ ๋ฆฝ์ ์ธ ์ค์ผ์ผ๋ง ๊ฐ๋ฅํ๋๋ก ๊ตฌ์กฐ ๊ฐ์
- ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ์ํ Kubernetes ๋์ ๊ณ ๋ ค
- Blue/Green ๋ฐฐํฌ ์ ๋ต์ ํตํด ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ๊ตฌํํ ์๊ฐ์
๋๋ค.
- ์๋ก์ด ๋ฒ์ ์ Green ํ๊ฒฝ์ ๋ฐฐํฌ
- ํ ์คํธ ์๋ฃ ํ ํธ๋ํฝ์ Blue์์ Green์ผ๋ก ์ ํ
- ๋ฌธ์ ๋ฐ์ ์ ์ฆ์ ์ด์ ๋ฒ์ (Blue)์ผ๋ก ๋กค๋ฐฑ ๊ฐ๋ฅ
- ๋ก๋ ๋ฐธ๋ฐ์ ๋์ ์ ํตํ ํธ๋ํฝ ๋ถ์ฐ
- ์บ์ฑ ์ ๋ต ๊ณ ๋ํ
์ฐจ์ฉ์ฆ ์์ฑ๋ถํฐ ์ํ๊น์ง ์ ์ฒด ๊ฑฐ๋ ํ๋ก์ธ์ค๋ฅผ ๋ด๋นํ๋ ๋ฐฑ์๋ ์์คํ ์ ์ค๊ณํ๊ณ ๊ตฌํํ์ต๋๋ค. Event Driven ์ํคํ ์ฒ๋ฅผ ๋์ ํ์ฌ ์ค์๊ฐ ์ ๊ธ ๊ฐ์ง ๋ฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์๋ํ๋ ์ํ ์์คํ ์ ๊ตฌ์ถํ์ผ๋ฉฐ, ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ณด์ฅํ์ต๋๋ค. ํนํ ๊ฐ์๊ณ์ข์ ์ฐจ์ฉ์ฆ์ 1:1๋ก ๋งคํํ์ฌ ์์ ํ ์์คํฌ๋ก ๊ธฐ๋ฐ์ ์ฑ๋ฌด ์ํ ํ๋ก์ธ์ค๋ฅผ ๊ตฌํํ์ต๋๋ค.
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ์์คํ : ์ค์๊ฐ ์ ๊ธ ๊ฐ์ง ๋ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Event Driven ์ํคํ ์ฒ ๊ตฌํ
- ๋น๋๊ธฐ ์ฒ๋ฆฌ: @EventListener์ @Async ํ์ฉํ ํจ์จ์ ์ธ ํธ๋์ญ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ์ ํฉ์ฑ: ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ํตํ ์์ ํ ๊ฑฐ๋ ๋ณด์ฅ
- ๊ฐ์๊ณ์ข ๊ด๋ฆฌ: ์ฐจ์ฉ์ฆ๊ณผ 1:1 ๋งคํ๋๋ ๊ฐ์๊ณ์ข ์์คํ ๊ตฌํ
- ์๋ํ๋ ์ด์ฒด: ์ ๊ธ ๊ฐ์ง๋ถํฐ ์ฑ๊ถ์ ๊ณ์ข ์ด์ฒด๊น์ง ์๋ํ
- ์ํ ๊ด๋ฆฌ: ์ฐจ์ฉ์ฆ ์ํ ๋ฐ ์์ก ์ค์๊ฐ ๋๊ธฐํ
- ํด๋ง ๋ฐฉ์์์ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก ์ ํํ์ฌ ๋ฆฌ์์ค ์ฌ์ฉ ํจ์จํ
- ์ค๋ณต ๋ฐ์ดํฐ ์ ๊ฑฐ๋ฅผ ํตํ API ์๋ต ์ต์ ํ
- ๋น๋๊ธฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ก ์์คํ ์ฑ๋ฅ ํฅ์
- DTO ๊ตฌ์กฐ ์ต์ ํ๋ก ๋คํธ์ํฌ ๋ถํ ๊ฐ์
- ํจ์จ์ ์ธ ๊ฑฐ๋ ๋ด์ญ ์กฐํ ์์คํ ๊ตฌํ
- ํธ๋์ญ์ ๊ด๋ฆฌ ์ ๋ต ์๋ฆฝ ๋ฐ ์ ์ฉ
Problem:
- ๋ชจ๋ ํ์ฑ ์ฐจ์ฉ์ฆ์ ๊ฐ์๊ณ์ข๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํด๋งํ์ฌ ์
๊ธ ํ์ธ
- ๋ถํ์ํ API ํธ์ถ ๋ฐ์
- ์์คํ
๋ฆฌ์์ค ๊ณผ๋ค ์ฌ์ฉ
- ์ค์๊ฐ ์ฒ๋ฆฌ ๋ถ๊ฐ๋ฅ
Solution:
- ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ ๋์
- ์
๊ธ ๋ฐ์ ์์๋ง ์ด๋ฒคํธ ๋ฐ์ ๋ฐ ์ฒ๋ฆฌ
- @EventListener์ @Async๋ฅผ ํ์ฉํ ๋น๋๊ธฐ ์ฒ๋ฆฌ
- ์ค์๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ ๋ฐ ์์คํ
๋ฆฌ์์ค ์ฌ์ฉ ์ต์ ํ
Problem:
- ๊ฑฐ๋ ๋ด์ญ ์กฐํ ์ ๋งค ๊ฑฐ๋๋ง๋ค ๋์ผํ ์ฑ๊ถ์/์ฑ๋ฌด์ ์ ๋ณด ์ค๋ณต ์ ์ก
- ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ก์ผ๋ก ์ธํ ๋คํธ์ํฌ ๋ถํ
- ์๋ต ๋ฐ์ดํฐ ํฌ๊ธฐ ์ฆ๊ฐ
Solution:
- ์๋ต DTO ๊ตฌ์กฐ ์ต์ ํ
- ๊ณตํต ์ ๋ณด๋ ์์ ๋ ๋ฒจ์์ ํ ๋ฒ๋ง ํฌํจ
- ๊ฐ๋ณ ๊ฑฐ๋๋ ํ์ํ ์ ๋ณด๋ง ํฌํจํ๋ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ
- ๋ฐ์ดํฐ ์ ์ก๋ ๊ฐ์ ๋ฐ ์๋ต ๊ตฌ์กฐ ๊ฐ์
Problem:
- ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ค ๋ฐ์ํ๋ ์์ธ ์ฒ๋ฆฌ ์ด๋ ค์
- ์ด๋ฒคํธ ์ฒ๋ฆฌ ์คํจ ์ ํ์ ์กฐ์น ํ์
- ํธ๋์ญ์
๊ฒฝ๊ณ ์ค์ ๋ฌธ์
Solution:
- @Async ๋ฉ์๋์ @Transactional ์ ์ฉ
- ์์ธ ๋ฐ์ ์ ๋ก๊น
๋ฐ ์๋ฆผ ์ฒ๋ฆฌ
- AsyncUncaughtExceptionHandler ๊ตฌํ
- ์ฐจ์ฉ์ฆ ์ํ ๊ด๋ฆฌ ๋ก์ง ๊ณ ๋ํ
- ์ค์๊ฐ ๋ชจ๋ํฐ๋ง ์์คํ ๋์