์ ๋ ์ง์ง ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง, ์ ํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ๊ณ ๋ฏผํฉ๋๋ค.
๋๋ฆฌ ์ฐ์ด๋ ๊ธฐ์ ๋ ์ ๋ง ์ ์ํฉ์ ์ ์ ํ์ง ๋ฐ์ ธ๋ณด๊ณ , ๋ ์ฝ๊ณ ๋จ์ํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ๊ทธ์ชฝ์ ํํฉ๋๋ค.
| 2019.03 ~ 2025.02 | ๐ ์ฑ๊ท ๊ด๋ํ๊ต ์ํํธ์จ์ดํ๊ณผ (์ ๊ณต 4.31 / 4.5 ยท ์ฐ๋ฑ ์กธ์ ) |
| 2024.09 ~ 2024.12 | ๐ผ ์ฃผ์ํ์ฌ ์๋ธ ์ธํด์ญ โ SI ์น๊ฐ๋ฐ |
| 2025.03 ~ 2025.08 | ๐ [KB] IT's Your Life 6๊ธฐ ์๋ฃ, ์ฐ์ ํ๋ จ์ ์์ |
| 2026.01 ~ ์งํ ์ค | ๐ SSAFY 15๊ธฐ(Java ์ ๊ณต), 1ํ๊ธฐ ์ฑ์ ์ฐ์ ์์ |
์๊ฒฉ / ์ธ์ฆ ย ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ SQLD ์ผ์ฑ์ ์ SW ์ญ๋ํ
์คํธ Bํ(Professional) TOPCIT
๋งค์ผ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฃจํด์ ์ ์งํ๊ณ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ด์ง ์ ์ฝ ์์์ ๋ฌด์์ ํฌ๊ธฐํ ์ง ๊ณ ๋ฅด๋ ํ๋ จ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ ๊ฒ ์์ ๊ฐ๊ฐ์ ์ค๋ฌด์์ ์ฝ๋๋ฅผ ๊ฒ์ฆํ๊ณ ๋ ๋์ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฐ๋ฐํ์ด ๋ฉ๋๋ค.
[KB] IT's Your Life ์ฝ๋ฉํ
์คํธ ์คํฐ๋ Repository (2025.03 ~ 2025.06)
SSAFY ์ฝ๋ฉํ
์คํธ ์คํฐ๋ Repository (2026.02 ~ 2026.04)
- ํ์์ด ๊ฐ์ ธ๋ค ์ธ ๊ณตํต ๊ธฐ๋ฐ์ ๋ง๋๋ ์ญํ โ ํ์๋ง๋ค ๋ฐ๋ก ๋ง๋ ์ค๋ณต ์ปดํฌ๋ํธ๋ฅผ ํ๋๋ก ํฉ์น๊ณ , ๋๋ฌด ์ปค์ง ํ๋ฉด์ ์ฑ ์ ๋จ์๋ก ์ชผ๊ฐฐ์ต๋๋ค. ์ด๋ฐ ์ ๋ฆฌ๋ ๊ธฐ๋ฅ์ด ๋๋ ๋ค ๋ชฐ์์ ํ์ง ์๊ณ ๊ฐ๋ฐ ์ค์ ๊พธ์คํ ํ๋ ํธ์ด๊ณ , ์ธ ํ๋ก์ ํธ์์ ๊ฐ์ ์ญํ ์ ๋ฐ๋ณตํด ๋งก์์ต๋๋ค.
- ํ๋ก์ ํธ์ ๋นํ์ ๋ฉ์ฐ๋ ์ญํ โ ๋๋ฌ๋์ง ์์ ์ํ์ ์๋์ง ์ดํผ๊ณ , ํ์์ง๋์ ๋จ์ ์ผ์ ์๊ธฐ์ํค๋ ํธ์ ๋๋ค. ํ์๋ค์๊ฒ "๊ฑฐ๊ธฐ๊น์ง ์๊ฐ ๋ชป ํ๋ค"๋ ๋ง์ ๋ค์ ๋๊ฐ ๋ง์์ต๋๋ค.
- ํ๋จ ๊ทผ๊ฑฐ๋ฅผ ๋จ๊ธฐ๋ ์ปค๋ฐ๊ณผ PR โ ๋ฌด์์ ์ ๋ฐ๊ฟจ๋์ง ๊ธฐ๋ฅ ๋จ์๋ก ๋๋ ์ ๊ณ , ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟ ๋๋ ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ ๊ณจ๋๋์ง๊น์ง ํจ๊ป ์ ์ต๋๋ค. PR์ ์์ ๋ด์ญ / ๋ณ๊ฒฝ ์ฌํญ / ํ ์คํธ ํ๋ ํ์์ผ๋ก ์๋๋ค.
์ฒ์์ AI๋ฅผ ๋ถ๋ถ์ ์ผ๋ก๋ง ์ผ์ต๋๋ค. ๊ฐ์ ์ ๋ ฅ์๋ ๋ค๋ฅธ ๋ต์ ๋ด๋ ํ๋ฅ ์ ํน์ฑ์ ๋ฏฟ๊ธฐ ์ด๋ ค์ ๊ณ , ์๊ธฐ์น ๋ชปํ ์ฌ๊ณ ๋ก ์ด์ด์ง ์ํ์ด ํฌ๋ค๊ณ ๋ดค๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ต๊ทผ ํ๋ก์ ํธ์ ์กฐ๊ธ์ฉ ๋ค์ฌ๋ณด๋ ๊ฒฐ๊ณผ๊ฐ ์๊ฐ๋ณด๋ค ํจ์ฌ ์ข์๊ณ , ๊ด์ ์ด ๋ฐ๋์์ต๋๋ค โ ์ฌ๋๋ ์ค์ํ๊ณ AI๋ ์ค์ํ๋ค๋ฉด, ์์ฐ์ฑ์ด ๋์ ์ชฝ์ ์ฐ๋ ํ๋ฆฐ ๋ถ๋ถ์ ์ง์ด๋ผ ์ ์์ผ๋ฉด ๋์ง ์๋.
๊ทธ๋์ AI๋ฅผ ๊ทธ๋ฅ ์ฐ๋ ๊ฒ ์๋๋ผ ์ ๋ขฐํ ์ ์๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋ฐ ์ง์คํ์ต๋๋ค. ๋ฐ๋ณตํด ์ฐ๋ ์์ ์ ์คํฌ๋ก ๋ง๋ค๊ณ , AI๊ฐ ๋ฐ๋ณตํด์ ์ค์ํ๋ ๋ถ๋ถ์ ์์คํ ํ๋กฌํํธ๋ก ๋ชป ๋ฐ๊ณ , ์ค๊ฐ ๊ณผ์ ์ ๊ณ์ ๊ฒํ ํ๋ฉฐ ์ํฌํ๋ก์ฐ ์์ฒด๋ฅผ ๋ค๋ฌ์ด ๊ฐ๋๋ค.
๐ ์ด ๊ณผ์ ์ ์ ๋ฆฌํ ๊ฐ์ธ ์ค์ ์ ๊ณต๊ฐํด ๋์์ต๋๋ค โ claude-dotfiles
์ด ๋ณํ๋ ํ ์คํธ์ ๋ํ ์๊ฐ๋ ๋ฐ๊ฟจ์ต๋๋ค. TDD์ ๊ฐ์ฅ ํฐ ๊ฑธ๋ฆผ๋์ ๋ ์์ฐ์ฑ์ด์๋๋ฐ, AI๊ฐ ํ ์คํธ ์์ฑ ๋น์ฉ์ ํฌ๊ฒ ๋ฎ์ถ๋ฉด์ ๊ทธ ๋ถ๋ด์ด ์ฌ๋ผ์ก์ต๋๋ค. ์ค์ ๋ก ํ ์คํธ๋ฅผ ๋จผ์ ๋๋ฅด๊ณ ๊ฐ๋ฐํด๋ณด๋ ์ง์ ์์ผ๋ก ์งค ๋๋ณด๋ค ์คํ๋ ค ์ค์๊ฐ ์ค์๊ณ , ๊ฒ์ฆ ๊ฐ๋ฅํ ๊ตฌ์กฐ๊ฐ ์ฌ๊ณ ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋๋ค๋ ๊ฑธ ๊ฒช์ด์ ์๊ฒ ๋์ต๋๋ค.
ICT ํ์ ์ฐ๊ณ ํ๋ก์ ํธ๋ก ์ฐธ์ฌํ SI ์น๊ฐ๋ฐ ์ธํด์ญ์ ๋๋ค. ์ค์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฉํ๋๋ ์๋น์ค๋ฅผ ๋ค๋ฃฌ ์ฒซ ๊ฒฝํ์ด์์ต๋๋ค.
๋ด๋น ์ ๋ฌด
- ํ๊ตญMICEํํ ์น์ฌ์ดํธ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์
- Artitutor(๋ฐ๋ ์จ๋ผ์ธ ์๊ฐ ยท ์ฝฉ์ฟจ ์ ์ฒญ ํ๋ซํผ) ๊ธฐ๋ฅ ๊ฐ๋ฐ
- AI ๊ธฐ๋ฐ ์น๋น๋ Zaemit / Z-Studio QA
์ฌ์ฉ ๊ธฐ์ ย jQuery PHP MariaDB Git Docker
jQueryยทPHP ๊ธฐ๋ฐ ์ฌ๋ด ํ๋ ์์ํฌ ์์์ ๊ฐ๋ฐํด์ผ ํ๋๋ฐ, ์ธ์ด๋ ํ๋ ์์ํฌ ๊ฐ๋ ๋ ์ฒ์์ด๋ผ ๊ฐ ํจ์์ ์ญํ ๊ณผ ๋ฐ์ดํฐ ํ๋ฆ์ ํ์ ํ๋ ๋ฐ ์ด๋ฐ ์๊ฐ์ ๋ง์ด ์ผ์ต๋๋ค. ์ถ๋ ฅ๋ฌธ์ผ๋ก ์ง์ํ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ค๋จ์ ๊ณผ PHP ๋๋ฒ๊ฑฐ๋ก ์คํ์ ๋ฐ๋ผ๊ฐ๋ ๋ฐฉ์์ ์ต์ํด์ก์ต๋๋ค. ๊ธฐ์กด ์ฝ๋ ํ๋ฆ๊ณผ ํ์ฌ ์ปจ๋ฒค์ ์ ๋ง์ถ๋ฉฐ, ์ด๋ก ๊ณผ ๋ค๋ฅธ ์ ํ์ด ์ค๋ฌด์์ ์ฐ์ผ ์ ์์์ ๊ฒช์ด ํธ๋ ์ด๋์คํ๋ฅผ ๋ ๊น๊ฒ ์๊ฐํ๊ฒ ๋์ต๋๋ค.
์ธํด์ญ ๋์ค, ์ ์ ์์ ์ฒ๋ฆฌํ ์ ์๋ ์ผ์ ํ๋ฃจ ์ข ์ผ ๋ถ๋ค๊ณ ์๋ค๊ฐ ์ผ์ ์ ๋ฆ์ถ ์ ์ด ์์ต๋๋ค. ํ์ ์์๋ ๋ฌด์๋ณด๋ค ๋น ๋ฅธ ์ํต์ด ์ค์ํ๋ค๋ ๊ฑธ ๊นจ๋ซ๊ณ , ๊ทธ ๋ค๋ก๋ ๋งํ๊ฑฐ๋ ์๋ฌธ์ด ์๊ธฐ๋ฉด ๋ฐ๋ก ํ๊ณผ ๊ณต์ ํฉ๋๋ค.
6์ธ ํ (์ ๊ณต์ 4 ยท ๋น์ ๊ณต์ 2) ยท 2๊ฐ์ ยท KB IT's Your Life 6๊ธฐ Final ๋ด๋น: ์ค๊ฑฐ๋๊ฐ ์ธ๋ถ API ์ฐ๋ ๊ตฌ์กฐ, ๋๋ค ๊ฒ์ ์ฑ๋ฅ ๊ฐ์ , ๊ด์ฌ ๋ชฉ๋ก, ๊ณต์ฉ ์ปดํฌ๋ํธ, ๋ฐฑ์๋ ํ๊ฒฝ ๊ตฌ์ฑ, ์ค์น ๊ฐ์ด๋ Backend ยท Frontend
์ ์ธ์ฌ๊ธฐ ํผํด์์ 75%๊ฐ 2030์ด๋ผ๋ ๋ฐ์ดํฐ์์ ์ถ๋ฐํด, ์ฃผ์๋ง ๋ฃ์ผ๋ฉด ์ค๊ฑฐ๋๊ฐยท๊ฑด์ถ๋ฌผ๋์ฅยท์ฌ์ ์์ ์ฑ์ ์ข ํฉํ ์์ฌ ๋ฆฌํฌํธ๋ฅผ ์ฃผ๋ ์๋น์ค์ ๋๋ค. ๊ท๋ชจ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ์ ๋ค๋ค๋ณธ ์ค์ ํ ํ๋ก์ ํธ์์ต๋๋ค.
Java 17 Spring Framework 5.3.38 MyBatis MySQL Spring Security JWT Vue 3 TypeScript ๊ณต๊ณต๋ฐ์ดํฐํฌํธ CODEF Naver Cloud
๊ณต๊ณต๋ฐ์ดํฐ API์ ์ํํธ / ์ฐ๋ฆฝ๋ค์ธ๋ / ์คํผ์คํ / ๋จ๋ ๋ค๊ฐ๊ตฌ ร ๋งค๋งค / ์ ์์ธ โ ์๋ํฌ์ธํธ๋ ์๋ต ๊ตฌ์กฐ๋ ์กฐ๊ธ์ฉ ๋ฌ๋์ต๋๋ค. 8๊ฐ๋ฅผ ๊ฐ๊ฐ ๊ตฌํํ๋ฉด ํธ์ถยทํ์ฑยท์ ์ฅ ํ๋ฆ์ด ์ ์ฌํ๊ฒ ๋ณต์ ๋ฉ๋๋ค.
์๋ต ํ์
๋ง ๋ค๋ฅด๊ณ ํ๋ฆ์ ๊ฑฐ์ ๊ฐ๋ค๋ ๋ฐ ์ฐฉ์ํด, ์ ์ฅ ๋์์ SaveHandler<T> ํจ์ํ ์ธํฐํ์ด์ค๋ก ๋บ์ต๋๋ค โ ๋ง์นจ ์๋ฐ ์ธํฐํ์ด์ค๋ฅผ ๋ฐฐ์ด ์ฐธ์ด๋ผ ์ค์ ๋ก ์ ์ฉํด๋ณด๊ณ ์ถ๊ธฐ๋ ํ์ต๋๋ค. ๊ฐ API๋ VO ํ์
๊ณผ ๋งคํผ ๋ฉ์๋ ๋ ํผ๋ฐ์ค๋ง ๋๊ธฐ๊ณ , XML ์๋ต์ XmlMapper + constructParametricType์ผ๋ก ์ ๋ค๋ฆญ DTO ํ๋๊ฐ 8์ข
์ ๋ค ๋ฐ๊ฒ ํ์ต๋๋ค.
insertCommon(APT_TRADE_ENDPOINT, lawdCd, dealYmd,
ApartmentTradeVO.class, mapper::insertApartmentTradeBatch, "์ํํธ ๋งค๋งค");์๋ต ๊ตฌ์กฐ๊ฐ ๊ฐ์ ์ด 8์ข ์์์๋ ์ค๋ณต์ ์ค์ด๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ๋ค๋ง ๋์ค์ ์ฑ๊ฒฉ์ด ๋ค๋ฅธ API(๋ฒ์ ๋ ์ฝ๋ยท๊ฑด์ถ๋ฌผ๋์ฅ)๋ฅผ ๋ถ์ผ ๋๋ ์ด ๊ตฌ์กฐ๊ฐ ๊ทธ๋๋ก ๋ง์ง ์์ ๊ฒฐ๊ตญ ๋ณ๋ ๊ฒฝ๋ก๋ก ๊ฐ์ต๋๋ค.
์ง๊ธ ๋ณด๋ฉด "์ด 8๊ฐ๋ฅผ ์ด๋ป๊ฒ ๋ฌถ์๊น"๋ง ๋ดค์ง "์์ผ๋ก ์ด๋ค API๋ฅผ ๋ ์ผํฌ๊น"๋ ๋ฌป์ง ์์, ์ ์ฅ๋ง ์ถ์ํํ ์ข์ ๊ตฌ์กฐ๊ฐ ๋์ต๋๋ค. ๋์์ ์ค๋ณต์ ์ค์ด๋ ๊ฒ๊ณผ ์์คํ ์ด ์๋ ๋ฐฉํฅ์ ๋ณด๋ ๊ฑด ๋ค๋ฅธ ๋ฌธ์ ๋ผ๋ ๊ฑธ ๋ฐฐ์ ์ต๋๋ค.
์ค๊ฑฐ๋๊ฐ ๋ฐ์ดํฐ ์ ์ฌ๊ฐ ํ ๋ฒ์ 2๋ถ ๋๊ฒ ๊ฑธ๋ ค, ๋ณ๋ชฉ์ด ํธ์ถ์ธ์ง ์ ์ฅ์ธ์ง ์ค์ธกํ์ต๋๋ค. ์์ธ์ ๋จ๊ฑด INSERT์์ต๋๋ค.
| ๋ฐฉ์ | 1,000๊ฑด ์์ ์๊ฐ |
|---|---|
| ๋จ๊ฑด INSERT ๋ฐ๋ณต | ์ฝ 2๋ถ |
| bulk INSERT | ์ฝ 2์ด |
I/O๋ฅผ ํ ๋ฒ์ ๋ฌถ๋ ๊ฒ ๋ซ๋ค๋ ๊ฑธ ์๊ณ ๋ ์์์ง๋ง, ๊ทธ ์ฐจ์ด๊ฐ ์ค์ ๋ก ์ด๋ ๊ฒ ํฌ๋ค๋ ๊ฑธ ์ฒ์ ๊ฒฝํํ์ต๋๋ค. ์ดํ ๋๋จธ์ง API ์ ์ฌ๋ ์ ๋ถ bulk๋ก ๋ฐ๊พธ๊ณ , ์ธก์ ์น๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ ๋์ค์ ์ด ๊ฐ์ ๊ฑด๋๋ฆด ์ฌ๋์ด ๊ทผ๊ฑฐ๋ฅผ ๋ณด๊ฒ ํ์ต๋๋ค.
๋ฒ์ ๋ ๊ฒ์์ด ํ๋ณด๋ฅผ ํ์ดํํ ๋๋ง๋ค DB ์กฐํ๊ฐ ๋ฐ์ํ์ฌ ๋ฐ์์ด ๋๋ ธ์ต๋๋ค. ์ฒ์์ ๋๋ฐ์ด์คยท์บ์ฑ์ผ๋ก ํธ์ถ์ ์ค์ด๋ ค ํ์ง๋ง, ๊ทธ๊ฒ ๊ทผ๋ณธ ๊ฐ์ ์ธ์ง ๊ณ ๋ฏผํ์ต๋๋ค.
๋ฒ์ ๋ ์ฝ๋๋ ๋ฐ๋ ์ผ์ด ๊ฑฐ์ ์๋ ์ ์ ๋ฐ์ดํฐ์ด๊ณ 5,000๊ฑดยท6ํ๋์ ์๊ท๋ชจ์์ต๋๋ค. ๋งค๋ฒ ์๋ณตํ๋ ๊ฒ๋ณด๋ค ์ฒ์ ํ ๋ฒ ๋ค ๋ฐ์๋๊ณ ๊ฒ์์ ๋ธ๋ผ์ฐ์ ์์ ํ๋ ๊ฒ ์ธ๋ค๊ณ ํ๋จํด ๊ตฌ์กฐ๋ฅผ ๋ฐ๊ฟจ์ต๋๋ค.
๋ฐ์ดํฐ ๊ท๋ชจ๊ฐ ๋ ํฌ๊ฑฐ๋ ๋์ ๋ฐ์ดํฐ์๋ค๋ฉด ๋ฐฑ์๋ ์กฐํ๊ฐ ๋ ์ข์ ๋ฐฉ์์ด์๊ฒ ์ง๋ง, ์ํฉ์ ๋ถ์ํ๊ณ ํ๋จํ์ฌ ์ ์ ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ ํ ๊ฒฝํ์ด์์ต๋๋ค.
๋ค๋ง ๋ง์ดํธ ์์ ์ ๋ฐ์ ์ฌ๋ฐฉ๋ฌธ๋ง๋ค ๋ค์ ๋ฐ์์ค๋ ๊ฑด ์์ฝ์ต๋๋ค. ์ง๊ธ์ด๋ผ๋ฉด ํ์์คํฌํ๋ก ๋ง๋ฃ๋ฅผ ๊ด๋ฆฌํ๊ฑฐ๋ HTTP ์บ์์ ๋งก๊ฒผ์ ๊ฒ์ ๋๋ค.
์ฃผ์๋ ํ๊ธฐ๊ฐ ์ ๊ฐ๊ฐ(์์ธ์ / ์์ธํน๋ณ์)์ด๋ผ ๋ฌธ์์ด๋ก ๋น๊ตํ๋ฉด ๊ฐ์ ๊ฑด๋ฌผ์ด ๋ค๋ฅธ ๋งค๋ฌผ๋ก ์ค๋ณต ์ ์ฅ๋ฉ๋๋ค. ๊ทธ๋์ ์ฃผ์๋ฅผ ์ขํ(์ยท๊ฒฝ๋)๋ก ๋ณํํด ์๋ณ์๋ก ์ฐ๊ธฐ๋ก ํ์์ ์ ํ๊ณ , ์ ๋ ๊ด์ฌ ๋ชฉ๋ก์์ ๊ทธ ์ขํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ์ ๋งค๋ฌผ์ ์ค๋ณต์ ๋ง์์ต๋๋ค. ์ฐ ํด์ ๋ row ์ญ์ ๋์ ์ํ๊ฐ(์ฐ / ํด์ )์ผ๋ก ๊ด๋ฆฌํด ๊ธฐ๋ก์ ํ ์ค๋ก ์ ์งํ๊ณ ์ด๋ ฅ์ ๋จ๊ฒผ์ต๋๋ค.
๋ค๋ง ์ขํ๋ฅผ ์๋ณ ๊ธฐ์ค์ผ๋ก ์ผ์์ผ๋ฉด์ ์ ์ ์กฐํ์ ์ฐ๋ ์ยท๊ฒฝ๋ ์ปฌ๋ผ์๋ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์ง ์์์ต๋๋ค. ์ง๋ ์กฐํ๊ฐ WHERE ์๋ BETWEEN ... AND ๊ฒฝ๋ BETWEEN ...์ธ๋ฐ ์ธ๋ฑ์ค๊ฐ ์์ด, ๊ฑด๋ฌผ์ด 30๋ง ๊ฑด ๊ฐ๊น์ด ์์ด์ ๋งค๋ฒ ์ ์ฒด๋ฅผ ์ค์บํ๋ฉฐ 2~3์ด์ฉ ๊ฑธ๋ ธ์ต๋๋ค. ๋ฌด์์ ์๋ณ์๋ก ์ผ์์ง์, DB๊ฐ ๊ทธ๊ฑธ ๋น ๋ฅด๊ฒ ์ฐพ๊ฒ ๋ง๋๋ ๊ฑด ๋ค๋ฅธ ๋ฌธ์ ๋ผ๋ ๊ฑธ ๋์ณค๊ณ , ์ดํ ํ๋ก์ ํธ์์ ๋ฐ์ดํฐ ๊ท๋ชจ์ ์กฐํ ๋ฐฉ์์ ๋จผ์ ๋ณด๊ฒ ๋ ๊ณ๊ธฐ๊ฐ ๋์ต๋๋ค.
- "์ด๋ป๊ฒ ์ต์ ํํ ๊น"๋ณด๋ค "์ด ๋ฐ์ดํฐ๊ฐ ์ด๋ค ์ฑ๊ฒฉ์ธ๊ฐ"๋ฅผ ๋จผ์ ๋ฌป๊ฒ ๋์ต๋๋ค. ๋ฌธ์ ํด๊ฒฐ์ด ์๋๋ผ ๋ฌธ์ ์ ์๊ฐ ๋จผ์ ๋ผ๋ ๊ฑธ ๋ฐฐ์ ์ต๋๋ค.
- ๋ฐ๋ณต๋๋ ๊ตฌ์กฐ๋ฅผ ์ถ์ํํ ๋ ๋ฌด์์ ๊ณตํต์ผ๋ก ๋ฌถ๊ณ ๋ฌด์์ ํ๋ผ๋ฏธํฐ๋ก ๋บ์ง ํ๋จํ๋ ๊ธฐ์ค์ด ์๊ฒผ์ต๋๋ค.
3์ธ ํ ยท 17์ผ ยท SSAFY ๊ดํต ํ๋ก์ ํธ ๋ด๋น: AI ์ฐ๋ ํ์ดํ๋ผ์ธ, ์๋ฒ ๋ฉยท๋ฒกํฐ ๊ฒ์, ๋ฐ์ดํฐ ๋ฐฐ์น ์ ์ฌ, ์ถ์ฒยท๋ฆฌํฌํธ API, ๋ฐฑ์๋ยทํ๋ก ํธ์๋ ๊ณตํต ๊ธฐ๋ฐ(์๋ต ๊ท๊ฒฉยท์ ์ญ ์์ธยทJWT ์ธํฐ์ ํฐยท์ธ์ฆ ๊ฐ๋) Backend ยท Frontend
์ฌ์ง ํ ์ฅ๊ณผ ์์น ์ ๋ณด๋ก ๋ฌธํ์ ์ฐ์ ์๋ณํด AI ํด์ค์ ์ฃผ๊ณ , ํ๋ฐฉ์ด ๋๋๋ฉด ํด์ฆ์ ๋ฆฌํฌํธ๋ก ๋ณต์ตํ๊ฒ ํ๋ ์๋น์ค์ ๋๋ค.
AI๋ฅผ ์๋น์ค ์์ ๋ฃ์ด๋ณธ ์ฒซ ํ๋ก์ ํธ์ ๋๋ค. ํด์ค์ ์ฐ๊ณ ์ค์ ๋ฐ์ดํฐ์์ ํด์ฆ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ผ์ด LLM์ ์์ฑ ๋ฅ๋ ฅ์ ์ ํํ ๋ง๋ ๋ฌธ์ ๋ผ๊ณ ๋ดค๊ณ , ํ๋ฅ ์ ์ด๋ผ๋ ๋ถํ์ค์ฑ์ ๊ฐ์ํ ๊ฐ์ด์น๊ฐ ์๋ค๊ณ ํ๋จํ์ต๋๋ค. ๊ทธ๋์ ๊ณ ๋ฏผ์ ์์ฑ ๊ฒฐ๊ณผ๋ฅผ ์ด๋๊น์ง ๋ฏฟ์ ๊ฒ์ธ๊ฐ์ ์ ํํ ํ ํฐ์ ์ด๋ป๊ฒ ์ธ ๊ฒ์ธ๊ฐ๋ก ๋ชจ์์ต๋๋ค.
Java 21 Spring Boot 3.5.1 MyBatis MySQL(SRID 4326) Redis Stack Jedis Vue 3 TypeScript Kakao Maps
์ฌ์ง์ ์ฃผ๊ณ "์ด๊ฒ ๋ญ์ผ?"์ฒ๋ผ ์ด์ด๋๊ณ ๋ฌผ์ผ๋ฉด ๋ชจ๋ธ์ ๊ทธ๋ด๋ฏํ ์ค๋ต์ ๋ง๋ค๊ณ , ์๋ ๋ฌธํ์ ์ฐ ์ด๋ฆ์ด ๋์๋ ์๋น์ค๋ ํ๋ ธ๋์ง ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ๋ชจ๋ธ์ด ๋ผ ์ ์๋ ๋ต์ ๋ฒ์๋ฅผ ์ฝ๋๊ฐ ๋ฏธ๋ฆฌ ์ ํด๋๋ ๊ตฌ์กฐ๋ก ๊ฐ์ต๋๋ค.
๋จผ์ ๊ธฐ์ค ์ขํ์์ ๋ฐ๊ฒฝ 500m ์์ ํ๋ณด๋ฅผ DB์์ ๋ฝ๊ณ , ์ฌ์ง๊ณผ ๊ทธ ๋ชฉ๋ก์ ํจ๊ป ๋๊ธด ๋ค ๋ฒํธ ํ๋๋ง ๋ฐ์ต๋๋ค. ์ถ๋ ฅ์ด ์ซ์๋ฟ์ด๋ผ max_tokens๋ฅผ 50์ผ๋ก ๋ฌถ์๊ณ , ํ๋ณด์ ์์ผ๋ฉด 0์ ๋ฐํํ๋๋ก ํ๋กฌํํธ์ ๊ท์ ํ๊ณ , ์๋น์ค๋จ์์๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๋ฒํธ๋ ์๋ณ ์คํจ๋ก ๋์ต๋๋ค. ์์ ๋กญ๊ฒ ์์ฑ์ํจ ๋ค ํ์ฒ๋ฆฌ๋ก ๊ฑฐ๋ฅด๊ธฐ๋ณด๋ค, ์ ์ด์ ๊ณ ๋ฅผ ์ ํ์ง๋ง ์ฃผ๋ ์ชฝ์ด ํ์คํ๋ค๊ณ ๋ดค์ต๋๋ค.
ํ๋ณด๋ฅผ ์ขํ๋ ๊ธฐ์ค ์ขํ๋ EXIF๋ฅผ ์ฐ์ ์ผ์ต๋๋ค โ ์ฐ์ ๊ณณ๊ณผ ์ ์๋ ๊ณณ์ด ๋ค๋ฅผ ์ ์์ด, ์ฌ์ง์ ์ดฌ์ ์ขํ๊ฐ ์์ผ๋ฉด ๊ทธ๊ฒ์, ์์ผ๋ฉด ๊ธฐ๊ธฐ ์์น๋ฅผ ์๋๋ค. ๊ฑธ๋ฆผ๋์ ์์ดํฐ์ด์๋๋ฐ, HEIC๋ฅผ ๋ธ๋ผ์ฐ์ ์์ JPEG๋ก ๋ณํํ ๋ ์บ๋ฒ์ค ์ฌ์ธ์ฝ๋ฉ ๊ณผ์ ์์ EXIF๊ฐ ์ ์ค๋์ด ์ขํ๋ ๋ณํ๋ณธ์ด ์๋๋ผ ์๋ณธ์์ ์ฝ๋๋ก ํ์ต๋๋ค. ์ฌ์ง ์์ฒด๋ 512px ยท JPEG 70%๋ก ์์ถํด ๋ณด๋์ต๋๋ค โ ๋น์ ์ ๋ ฅ์ ํด์๋๊ฐ ํด์๋ก ํ ํฐ์ ๋ ๋จน๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ต์ก ๊ณผ์ ์์ ๋ฐ์ AI ๊ฒ์ดํธ์จ์ด ํ ํฐ์ด ๋๋ํ์ง ์์, "๋๊ฒ ๋ง๋๋ ๊ฒ"๊ณผ "์ธ๊ฒ ๋๊ฒ ๋ง๋๋ ๊ฒ"์ ์ฒ์๋ถํฐ ๊ฐ์ ๋ฌธ์ ๋ก ๋์์ต๋๋ค.
ํธ์ถ์ ์ชผ๊ฐ ์บ์๊ฐ ๊ฐ๋ฅํ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ต๋๋ค. ์ฒ์์ ๋ถ๋ฅ์ ํด์ค์ ํ ์์ฒญ์ ๋ด์๋๋ฐ, ๋ฌธํ์ ์ฐ์ ์๋ณํ๋ ค๋ฉด ์ฌ์ง์ด ํ์ํ์ง๋ง ํด์ค์ ์ฐ๋ ๋ฐ๋ ํ์ ์์์ต๋๋ค. ์ฌ์ง์ด ๊ฑธ๋ฆฐ ๋ถ๋ฅ๋ ์ฌ์ฉ์๋ง๋ค ๋ฌ๋ผ ์บ์ฑ์ด ๋ถ๊ฐ๋ฅํ์ง๋ง ํด์ค์ ๋ฌธํ์ ์ฐ ๋จ์๋ก ๊ณต์ ํ ์ ์์ต๋๋ค. ๋์ ๋๋์ ๊ฐ์ ๊ณณ์ ๋ฐฉ๋ฌธํ ๋ ๋ฒ์งธ ์ฌ์ฉ์๋ถํฐ ๋น์ผ ํด์ค ํธ์ถ์ด 0ํ๊ฐ ๋๊ณ , ์ธ๊ธฐ ์๋ ๊ณณ์ผ์๋ก ํด์ค ๋น์ฉ์ด ๋ฐฉ๋ฌธ์ ์๊ฐ ์๋๋ผ ๋ฌธํ์ ์ฐ 1๊ฐ๋น 1ํ๋ก ์๋ ดํฉ๋๋ค. ์บ์ ์ ์ฅ์๋ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๊ฐ๋์ต๋๋ค โ ํด์ค์ ๊ณ์ ์ฐ๋ ๋ฐ์๊ตฌ ๋ฐ์ดํฐ๋ผ MySQL์, ๋ฆฌํฌํธ ์์ฝ์ด๋ ํธ์ถ ์นด์ดํฐ์ฒ๋ผ ์ฌ๋ผ์ ธ๋ ๋๋ ๊ฐ์ Redis์ ๋์ต๋๋ค.
- ์ฉ๋๋ณ ํ ํฐ ์ํ ์ฐจ๋ฑ โ ๋ถ๋ฅ 50 / ์์ฝ 500 / ๊ธฐ๋ณธ ํด์ค 1500 / ์ฌํ ํด์ค 2048 / ํด์ฆ ์์ฑ 4096
- ์์ ์ฑ๊ฒฉ๋ณ ๋ชจ๋ธ ๋ผ์ฐํ โ ์ ํํ ๋น์ ๋ถ๋ฅ๊ฐ ํ์ํ ์๋จ์ GPT-4o, ์ถ๋ ฅ์ด ํฌ๊ณ ๋๋์ผ๋ก ์์ฑ๋๋ ์ฌํ ํด์คยทํด์ฆ๋ ์ ๋น์ฉ ๋ชจ๋ธ(Claude Haiku)
- ์ฌ์ฉ์๋น ํธ์ถ ์ ํ โ Redis
INCR+ TTL 1๋ถ์ผ๋ก ํด์ค API๋ฅผ ๋ถ๋น 3ํ๋ก ์ ํ - ๋์ ์์ฒญ ์ค๋ณต ์ฐจ๋จ โ ๊ฐ์ ๋ฌธํ์ ์ฐ์ด ์บ์ ์ฐจ๊ธฐ ์ ๊ฒน์ณ ๋ค์ด์ค๋ฉด ID ๋จ์ ๋ฝ์ผ๋ก ๋น์ผ ํด์ค ํธ์ถ์ ํ ๋ฒ์ผ๋ก (๋จ์ผ ์ธ์คํด์ค ์ ์ )
์๋ฏธ๊ฐ ๋น์ทํ ๋ฌธํ์ ์ฐ์ ์ฐพ๋ ์ถ์ฒ์๋ ๋ฒกํฐ ์ ์ฌ๋ ๊ฒ์์ด ํ์ํ๊ณ , ์ฝ์ฌ์ธ KNN์ HashMapยทRDB๋ก ํ ์ ์์ด Redis Stack์ ๋ฒกํฐ ์ธ๋ฑ์ค๋ก ๊ตฌํํ์ต๋๋ค. ์บ์ยท์นด์ดํฐยท๋ ์ดํธ๋ฆฌ๋ฐ๋ ๊ฐ์ Redis๋ก ์ฒ๋ฆฌํ์ต๋๋ค. ๋ฌธํ์ ์ฐ ์ ๋์ text-embedding-3-small๋ก ์๋ฒ ๋ฉํด 1536์ฐจ์ ๋ฒกํฐ๋ก ๋ง๋ค๊ณ ์ฝ์ฌ์ธ ๊ฑฐ๋ฆฌ๋ก ์ธ๋ฑ์ฑํ์ผ๋ฉฐ, Spring Data Redis๊ฐ RediSearch๋ฅผ ์ง์ํ์ง ์์ ๋ฒกํฐ ์ง์๋ง Jedis๋ก FT.SEARCH๋ฅผ ์ง์ ํธ์ถํ์ต๋๋ค.
์ด ์ธ๋ฑ์ค๋ฅผ ์ถ์ฒ ๊ธฐ๋ฅ ๋ ๊ฐ๊ฐ ๋๋ ์ฐ๋๋ฐ, ๋ ๋ค ๊ฐ์ ์ ์ฌ๋๋ฅผ ์ฐ๋ฉด์ ๊ฑฐ๋ฆฌ ์กฐ๊ฑด์ ์ ๋ฐ๋๋ก ์ง์ ํ์ต๋๋ค.
| ์ฌํ ์ค ์ถ์ฒ | ๋ฆฌํฌํธ์ ๋ค์ ์ฝ์ค ์ถ์ฒ | |
|---|---|---|
| ๋ชฉ์ | ์ง๊ธ ๊ฐ ๊ณณ | ๋ค์์ ๊ฐ ๊ณณ |
| ๊ฑฐ๋ฆฌ ์กฐ๊ฑด | ๋ฐ๊ฒฝ ์ด๋ด ๊ฐ๊น์ธ์๋ก | ๋ฐฉ๋ฌธ ์ค์ฌ์์ 50km ์ด์ ๋ฉ์ด์ผ |
์ ์ฌ๋ ์ ์๋ง ๋ณด๋ฉด ๋ ๋ค ๋ง๋ ๋ต์ด์ง๋ง, "๋ค์ ์ฌํ์ง"๋ก ์ง๊ธ ์๋ ๋๋ค๋ฅผ ์ถ์ฒํ๋ ๊ฑด ์ฌ์ฉ์ ๋งฅ๋ฝ์์ ์์ ํ ์ธ๋ชจ์์์ต๋๋ค. ๊ฐ์ ์ ์ฌ๋ ์งํ๋ผ๋ ๋ฌด์์ด ์ข์ ๊ฒฐ๊ณผ์ธ์ง๋ ์ฐ๋ ๋งฅ๋ฝ์ด ์ ํ๋ค๋ ์ ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ค์ ์ฝ์ค ์ชฝ์ ๋ฉ๋ฆฌ ๋จ์ด์ง ํ๋ณด๋ง ๋จ๊ธด ๋ค ๋ฐ๊ฒฝ 25km๋ก ํด๋ฌ์คํฐ๋ฅผ ๋ฌถ์ด "ํ๋ฃจ์ ๋ ์ ์๋ ๋ฌถ์"์ ๋ง๋ค๊ณ , ๊ฒฝ๋ก๋ TSP ๊ทผ์ฌ๋ก ์ ๋ ฌํ์ต๋๋ค.
๐
CourseService.java#L21-L22โ ํด๋ฌ์คํฐ ๋ฐ๊ฒฝ 25km ยท ์ต์ ์ด๊ฒฉ ๊ฑฐ๋ฆฌ 50km
๊ตญ๊ฐ์ ์ฐ์ฒญ ๋ฐ์ดํฐ 8,313๊ฑด์ ๋ฐฐ์น๋ก ์ ์ฌํด ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ก ์ผ์์ต๋๋ค.
๋ค ๊ฐ์ ์๋ํฌ์ธํธ ์ค ์ด๋ฏธ์ง API๋ง ์๋ต์ด ๊ท๊ฒฉ์ ๋ฒ์ด๋ฌ์ต๋๋ค. ํ ํญ๋ชฉ ์์์ ํ๋๋ฅผ ๋ฐ๋ณตํ๊ณ , ๋ฌธํ์ ์ฐ ์ด๋ฆ ์์ฒด๋ฅผ XML ํ๊ทธ๋ก ์๋๋ค(<๋์ฑ์ >, <๊ถ1-5>). ์ ์ธํ ํ์๋ก๋ ์ฝ๋ค๊ฐ ๊นจ์ก์ต๋๋ค.
LightHouse์์ ์ฑ๊ฒฉ์ด ๋ค๋ฅธ API๋ฅผ ์ต์ง๋ก ๊ธฐ์กด ๊ตฌ์กฐ์ ๋ง์ถ๋ ค๋ค ๋ณ๋ ๊ฒฝ๋ก๋ก ๋์๊ฐ ์ ์ด ์์ด, ์ด๋ฒ์ ์ฒ์๋ถํฐ ๊ฐ๋์ต๋๋ค. ์ ์ ์๋ต ์ธ ๊ฐ๋ XmlMapper๋ก ๋๊ณ , ์ด๋ฏธ์ง API๋ง ๋น์ ์ ํ๊ทธ๋ฅผ ๊ฑท์ด๋ธ ๋ค StAX๋ก ์ํํด ํ๋ ์๋ง๋ค ํญ๋ชฉ ํ๋๋ก ์ธ๋๋ก ๋ฐ๋ก ์งฐ์ต๋๋ค. ๊นจ์ง ์ผ์ด์ค๋ ํ
์คํธ๋ก ๊ณ ์ ํ์ต๋๋ค.
LightHouse์์ ์ขํ์ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฑธ์ด ์ง๋ ์กฐํ๊ฐ ์ ์ฒด ์ค์บ์ด ๋๋ ํ์, ์ด๋ฒ์ ์คํค๋ง ๋จ๊ณ์์ ์ฑ๊ฒจ ๋ ํ
์ด๋ธ ๋ชจ๋ ์ขํ๋ฅผ POINT(SRID 4326)์ผ๋ก ๋๊ณ ๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ๊ฑธ์์ต๋๋ค. ๋ค๋ง ์ด๊ฒ ์ค์ ๋ก ์ธ๋ฑ์ค๋ฅผ ํ๋์ง๊น์ง ํ์ธํ์ง ๋ชปํ ๋ฐ์ชฝ์ง๋ฆฌ ๊ฐ์ ์ด์๊ณ , ๊ทธ ์ด์ผ๊ธฐ๋ ์๋ ์์ฌ์ด ์ ์์ ์ด์ด์ง๋๋ค.
- ์์ฑ์ ๋ฒ์๋ฅผ ๋ฏธ๋ฆฌ ์ขํ๋ ์ค๊ณ. ์ด๋ฆฐ ์ง๋ฌธ์ ๋์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ๋ณด๋ค, ๋ต์ด ๋ ์ ์๋ ๊ฒ๋ง ์ฃผ๊ณ ๊ณ ๋ฅด๊ฒ ํ๋ ์ชฝ์ด ํจ์ฌ ์์ ํ์ต๋๋ค. ํ ๋ฃจ์๋ค์ด์ ์ ์ฌํ์ ๊ฑธ๋ฌ๋ด๋ ๋ฌธ์ ์์ ์ ์ด์ ์๊ธธ ์ ์๊ฒ ๋ง๋๋ ๋ฌธ์ ๋ก ๋ฐ๊ฟ ๋ณธ ๊ฒฝํ์ ๋๋ค.
- ๋น์ฉ์ด ๊ตฌ์กฐ๋ฅผ ์ ํ ์ ์๋ค๋ ๊ฐ๊ฐ. ์บ์๋ฅผ ์ด๋ ๋จ์๋ก ์ก์์ง, ๋ฌด์์ ์ด๋์ ์ ์ฅํ ์ง, ์ด๋ค ์์ ์ ์ด๋ค ๋ชจ๋ธ๋ก ๋ณด๋ผ์ง๋ฅผ ์ ๋ถ "์ผ๋ง๋ ์ธ๊ฒ ๋๋๊ฐ"์์ ์ญ์ฐํ์ต๋๋ค. ์ฑ๋ฅ์ด ์๋๋ผ ๋น์ฉ์ด ์ค๊ณ๋ฅผ ๋๊ณ ๊ฐ ์ฒซ ๊ฒฝํ์ด์์ต๋๋ค.
- AI ์๋ต์ ๋ฏฟ์ ์ ์๋ ์ ๋ ฅ์ด๋ผ๋ ๊ด์ . JSON ํ์์ ๊ฐ์ ํ๊ณ , ๋งํฌ๋ค์ด ์ฝ๋๋ธ๋ก์ผ๋ก ๊ฐ์ธ ์ค๋ ๊ฒฝ์ฐ์ ํ ํฐ ์ํ์ ์๋ ค ์ค๋ ๊ฒฝ์ฐ๊น์ง ํ์ธํ ๋ค์์ผ ์๋น์ค์ ๋ฐ์ํ์ต๋๋ค. ์๋ฆฐ ์๋ต์ ์กฐ์ฉํ ๋๊ธฐ์ง ์๊ณ ๋ช ํํ ์์ธ๋ก ๋ฐ๊ฟจ์ต๋๋ค.
AI๊ฐ ๋ง๋ ๊ฒฐ๊ณผ์ ํ์ง์ ์ ๋๋ก ๊ฒ์ฆํ์ง ๋ชปํ์ต๋๋ค. ์ ๋ ฅ์ด ๊ฐ์ผ๋ฉด ์ถ๋ ฅ์ด ๊ฐ์ ์ธ์ฆยทํด์ฆยท๋ฐฐ์น์๋ ํ ์คํธ๋ฅผ ๊น์์ง๋ง, ์ ์ ํต์ฌ์ธ ์ฌ์ง ํ๋ณ ์ ํ๋์ ํด์คยทํด์ฆ ํ์ง์ ์ฅ์ 10~20๊ณณ์ ์ง์ ์ฐ์ด ๋์ผ๋ก ํ์ธํ ๊ฒ ์ ๋ถ์์ต๋๋ค. ํ๋กฌํํธ๋ ์ ๋๋ ์ผ์ด์ค๋ฅผ ๋ณด๊ณ ๊ณ ์น ๋ค ๊ทธ ์ผ์ด์ค๋ก ๋๋๋ ค๋ณด๋ ์์ด๋ผ, ์ง์ง ์ข์์ง ๊ฑด์ง ๊ณผ์ ํฉ์ธ์ง ์ ์ ์์์ต๋๋ค. ์ง๊ธ์ด๋ผ๋ฉด ์ ๋ต์ ๋ถ์ธ ํ๊ฐ์ ์ ๋จผ์ ๋ง๋ค์ด ๊ณ ์น๋ ์ผ์ด์ค์ ์ฌ๋ ์ผ์ด์ค๋ฅผ ๋ถ๋ฆฌํ์ ๊ฒ์ ๋๋ค โ AI๋ฅผ ์๋น์ค์ ๋ฃ๋ ๊ฑด ๊ฒฐ๊ตญ ์ ๋ต์ด ํ๋๊ฐ ์๋ ์ถ๋ ฅ์ ์ด๋ป๊ฒ ๊ฒ์ฆํ๋๋์ ๋ฌธ์ ๋ผ, ์ดํ AI ๊ธฐ๋ฅ์์ ๊ฐ์ฅ ๋จผ์ ์ฑ๊ธฐ๋ ๋ถ๋ถ์ด ๋์ต๋๋ค.
์ถ์ฒ๋ ๊ฐ์ ๋ฟ๋ฆฌ์์ ์์ฝ์ต๋๋ค โ ๋ฌด์์ ๊ธฐ์ค์ผ๋ก ๋น์ทํ๋ค ํ ์ง ์ ํ์ง ์๊ณ ์ด๋ฆยท๋ถ๋ฅยท์๋ยท์ค๋ช ์ ํ ๋ฒ์ ๋ฒกํฐ๋ก ๋ญ์ณ ๋ ๊ธฐ๋ฅ์ด ๊ทธ๋๋ก ๋๋ ์ผ๊ณ , ํ์ง ๊ธฐ์ค์ด ์์ผ๋ ๋ ์ ๊ตํ๊ฒ ๋ง๋ค ๊ทผ๊ฑฐ๋ ์์์ต๋๋ค. ๊ณต๊ฐ ์ธ๋ฑ์ค๋ ๊ฑธ์ด๋๊ธฐ๋ง ํ๊ณ ์กฐํ ์ฟผ๋ฆฌ์์ ์ธ๋ฑ์ค ์ปฌ๋ผ์ ํจ์๋ก ๊ฐ์ธ ์ ์ ํ์ง ๋ชปํ๊ฒ ์งฐ๋๋ฐ, ์คํ ๊ณํ์ ํ ๋ฒ๋ ํ์ธํ์ง ์์ ํ์ ๋๋ค โ 8์ฒ์ฌ ๊ฑด์ด๋ผ ๋ฌธ์ ๋ ์ ๋์ง๋ง ๋ค์์ DB๋ฅผ ๊ตฌ์ฑํ๋ฉด ๊ผญ ์ฑ๊ธธ ๋ถ๋ถ์ ๋๋ค.
โซ Omok โ ์ค์๊ฐ ์จ๋ผ์ธ ์ค๋ชฉ (1์ฐจ 2025.06 ~ 2025.08 ยท 2์ฐจ 2026.05 ~ 2026.06 ์ฌ๊ฐ๋ฐ)
๊ฐ์ธ ํ๋ก์ ํธ Backend ยท Frontend ยท โถ Live Demo
STOMP/SockJS ๊ธฐ๋ฐ ์ค์๊ฐ ๋์ ์ค๋ชฉ. Oracle Cloud์ ์ง์ ๋ฐฐํฌํด ์ด์ ์ค์ ๋๋ค. 1์ฐจ๋ ๋ถํธ์บ ํ์์ ๋ฐฐ์ด ๊ฑธ ๋ณต์ตํ๊ณ ๋ฐฐํฌ๊น์ง ์ง์ ๊ฒฝํํ๋ ค๊ณ , 2์ฐจ๋ AI ์์ด์ ํธ ํ์ฉ์ ์ํํ๋ ค๊ณ ์งํํ ํ๋ก์ ํธ์ ๋๋ค.
Java 21 Spring MVC 6 WebSocket/STOMP Vue 3 Pinia Tomcat 10 GitHub Actions
๋ ์ฃผ๋ฃฐ ๊ธ์(3-3, 4-4, ์ฅ๋ชฉ) ํ์ ์ ํ๋ก ํธ์ ๋ฐฑ์๋ ์์ชฝ์ ๋์ต๋๋ค. ํ๋ก ํธ๋ ํด๋ฆญ ์ฆ์ ํผ๋๋ฐฑ์ ์ฃผ๊ธฐ ์ํ ๊ฒ์ด๊ณ , ๋ฐฑ์๋๋ ์ ๋ขฐ ๊ฒฝ๊ณ์ ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์กฐ์๋ ์ ์์ผ๋ ์๋ฒ๊ฐ ํด ์์ยท์ค๋ณต ์ฐฉ์ยท๊ธ์ ์ฌ๋ถ๋ฅผ ์ ๋ถ ๋ค์ ๊ฒ์ฆํ ๋ค์๋ง ์ํ๋ฅผ ๋ฐ์ํฉ๋๋ค.
๊ท์น ์์ฒด๋ ๋จ์ํ์ง ์์์ต๋๋ค. ํ์ ์ ํํ 5๋ชฉ์ด์ด์ผ ์น๋ฆฌ(6๋ชฉ์ ์ฅ๋ชฉ ๊ธ์)์ด๊ณ ๋ฐฑ์ 5๋ชฉ ์ด์์ด๋ฉด ์น๋ฆฌ๋ผ, ๊ฐ์ ํจ์๋ก ์ฒ๋ฆฌํ ์ ์์์ต๋๋ค. ๋ ๊ธ์ ์กฐ๊ฑด์ด ์ฑ๋ฆฝํด๋ ๊ทธ ์๋ก 5๋ชฉ์ด ์์ฑ๋๋ฉด ์น๋ฆฌ๊ฐ ์ฐ์ ํฉ๋๋ค.
๐
GameService.javaโ ํ์ ๋ก์ง (๋ฒ๊ทธ ์์ ๊ทผ๊ฑฐ๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ฒจ๋ )
๋ชจ๋ฐ์ผ์์๋ ์ ๊น ํฐ๋์ ๋ค์ด๊ฐ๋ ์์ผ์ด ๋๊น๋๋ค. ์ฆ์ ํด์ฅ์ํค๋ฉด ์ต์ธํ๊ณ , ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ฉด ์๋๊ฐ ๋ฌถ์ ๋๋ค. 30์ด ์ ์๋ฅผ ์ฃผ๊ณ ๊ทธ ์์ ์ฌ์ ์ํ๋ฉด ๊ฒ์์ ์ด์ด๊ฐ๋, ๋๊ธฐ๋ฉด ์๋ ํด์ฅํ๋๋ก ํ์ต๋๋ค. ๋ฐ๋ฉด ๋๊ฐ๊ธฐ ๋ฒํผ์ ๋ช ์์ ์์ฌํํ์ด๋ผ ์ ์ ์์ด ์ฆ์ ์ฒ๋ฆฌํฉ๋๋ค. ๊ฐ์ "์ฐ๊ฒฐ ์ข ๋ฃ"๋ผ๋ ์๋๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅด๊ฒ ๋ค๋ค์ผ ํ๋ค๊ณ ๋ดค์ต๋๋ค.
๐
WebSocketEventListener.java#L68-L93โ ๊ฒ์ ์ค ๋๊น vs ๊ฒ์ ์ธ ๋๊น ๋ถ๊ธฐ
1์ฐจ์์๋ ๋ฐฐ์ด ๊ฑธ ์ค์ ์ ์จ๋ณด๊ณ ๋ฐฐํฌยท์ด์๊น์ง ๊ฐ๋ณ๊ฒ๋๋ง ๊ฒช์์ต๋๋ค. ๋๋ฉ์ธ์ ์ฌ์ ์ฐ๊ฒฐํ๊ณ , ์ธ๋ถ๋ HTTPS๋ก ๋ฐ์ ๋ด๋ถ๋ HTTP๋ก ๋๊ธฐ๋ ํ๋ก์๋ฅผ ๋๊ณ , ๋ก์ปฌ์์ ๋๋ ๊ฒ ์๋ฒ์์ ์ ๋๋ ์ง์ ๋ค์ ํ๋์ฉ ํ์์ต๋๋ค. ๊ฐ๋ฐ์ด ๋์ด ์๋๋ผ ์ด์์์ ์ ๊ฒฝ ์ธ ๊ฒ ํจ์ฌ ๋ง๋ค๋ ๊ฑธ ํฌ๊ฒ ๋๊ผ์ต๋๋ค.
2์ฐจ๋ AI ์์ด์ ํธ๋ฅผ ๊ฐ๋ฐ์ ๋ณธ๊ฒฉ์ ์ผ๋ก ์จ๋ณธ ์ฒซ ํ๋ก์ ํธ๋ก, ๊ฐ๋ฐ ๋ฐฉ์ โ ํนํ ํ ์คํธ์ ๋ํ ์๊ฐ์ด ํฌ๊ฒ ๋ฐ๋์์ต๋๋ค. 1์ฐจ์์ ํ ์คํธ๋ฅผ ๊ฑด๋๋ด ๊ฑด ์์ฐ์ฑ ๋๋ฌธ์ด์๋๋ฐ, AI๊ฐ ํ ์คํธ ์์ฑ ๋น์ฉ์ ํ ๋ฎ์ถ์ ํ์ ๋ก์ง์ ํ ์คํธ๋ฅผ ๋๋ฅผ ์ ์์๊ณ , ์ ๋ก์ง์ด 3-3์ ์๋ชป ํ์ ํ๋ ๋ฒ๊ทธ๋ ๊ทธ ๊ณผ์ ์์ ๋๋ฌ๋ฌ์ต๋๋ค. ๊ทธ๋์ ์์ผ๋ก๋ AI๋ฅผ ๋ค๋ฃจ๋ ๋๋ง์ ๋ฐฉ์์ ์ผ๋ง๋ ๋จ๋จํ ๊ฐ์ถ๋๋๊ฐ ๊ฐ๋ฐ์ ํฌ๊ฒ ์ข์ฐํ๊ฒ ๋ค๊ณ ์๊ฐํ๊ฒ ๋์ต๋๋ค.












