๊ตฌ๋งค์๊ฐ ์ํ๋ ๋ฌผํ์ ๋ฑ๋กํ๋ฉด, ํ๋งค์๋ค์ด ๊ฒฝ์์ ์ผ๋ก ๊ฐ๊ฒฉ์ ๋ฎ์ถฐ ์ ์ฐฐํ๋ ์ญ๊ฒฝ๋งค(Reverse Auction) ์๋น์ค์ ๋๋ค.
๊ตฌ๋งค์ โ ๊ฒฝ๋งค ๋ฑ๋ก (์ต๋ ํฌ๋ง๊ฐ ์ค์ )
ํ๋งค์ โ ์
์ฐฐ (๋ ๋ฎ์ ๊ฐ๊ฒฉ ๊ฒฝ์)
๋ง๊ฐ โ ์ต์ ๊ฐ ํ๋งค์ ์๋ ๋์ฐฐ
![]() ํ์ฅ ์กฐํํฌ โโโโโโโโโโ ์ ์ฐฐ ๋ถํํ ์คํธ ๊ฒฝ๋งค ์ํ ์๋ํ Outbox ํจํด ์ ์ฉ |
![]() ํ์ ์ค๋ฏผ๊ธฐ โโโโโโโโโโ AI ์๋ด ์ฑ๋ด ๋ชจ๋ํฐ๋ง ๋ฆฌ๋ทฐ ์ด๋ฏธ์ง ๊ธฐํ ์ธํ๋ผ |
![]() ํ์ ์กฐ์ฑ์ง โโโโโโโโโโ CI/CD ๊ฒฝ๋งค ๊ฒ์ ๊ฒฝ๋งค ์กฐํ ๋ฉ์ธ ์ธํ๋ผ |
![]() ํ์ ๊น์๋ฏผ โโโโโโโโโโ ์ธ์ฆ/์ธ๊ฐ ์นดํ ๊ณ ๋ฆฌ ๋ฆฌ๋ทฐ ์ค์๊ฐ ์๋ฆผ ์ค์๊ฐ ์ฑํ ๊ฐ์์ค๋ ๋ ์ ์ฉ |
๊ฐ๋ฐ ๊ธฐ๊ฐ: 2026.04.07 ~ 2026.05.14
๋ณ๋ AI ์ฑํ ๋ฐฉ์์ GPT-4o ๊ธฐ๋ฐ AI๊ฐ ์ค์๊ฐ ์์ธ, ํ๋งค์ ์ ๋ขฐ๋, ๊ฒฝ์ ์ ์ฐฐ ํํฉ ๋ฑ์ ๋ถ์ํด๋๋ฆฝ๋๋ค. DB์ ์ค์ ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ Tool Calling + RAG๋ก ์ค์๊ฐ ์กฐํํ๋ฏ๋ก hallucination ์์ด ํ๋ซํผ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฒ ์๋ดํฉ๋๋ค.
- JWT ๊ธฐ๋ฐ Stateless ์ธ์ฆ (Access 30๋ถ / Refresh 7์ผ)
- ์์ ๋ก๊ทธ์ธ: Google, Kakao, Naver OAuth2
- ๋ก๊ทธ์ธ 5ํ ์คํจ ์ 5๋ถ ๊ณ์ ์ ๊ธ, Refresh Token ํ์ทจ ์ ์ฆ์ ๋ฌดํจํ
- EventBridge Scheduler๋ก ์์/์ข ๋ฃ ์ค์ผ์ค ์๋ ๋ฑ๋ก, Lambda๊ฐ ๋์ฐฐ/์ ์ฐฐ ์๋ ์ฒ๋ฆฌ
- Elasticsearch + PostgreSQL ์ด์ค ๊ฒ์ (Nori ํ๊ตญ์ด ํํ์ ๋ถ์)
- Redisson ๋ถ์ฐ๋ฝ์ผ๋ก ๋์ ์ ์ฐฐ ๊ฒฝํฉ ๋ฐฉ์ง
- ํ์ฌ ์ต์ ๊ฐ๋ณด๋ค ๋ฎ์ ๊ฐ๊ฒฉ๋ง ๋ฑ๋ก ๊ฐ๋ฅ, ์ ์ฐฐ ์ ์ค์๊ฐ ์๋ฆผ ์๋ ๋ฐํ
- Lambda โ Redis Pub/Sub โ ์๋ฆผ ์๋ฒ โ SSE๋ก ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ ์ ๋ฌ
- ์๋ฆผ์ PostgreSQL์ ์ ์ฅ๋์ด ์ฌ์ ์ ์์๋ ๋๋ฝ ์์ด ์กฐํ ๊ฐ๋ฅ
- ๋์ฐฐ ํ ๊ตฌ๋งค์-ํ๋งค์ 1:1 ์ฑํ ๋ฐฉ ์๋ ์์ฑ
- WebSocket + STOMP + SockJS, Redis Pub/Sub์ผ๋ก ๋ค์ค ์๋ฒ ์ธ์คํด์ค ๊ฐ ๋ฉ์์ง ๊ณต์
- ๋์ฐฐ ๊ฒฝ๋งค ๋น์ฌ์(๊ตฌ๋งค์/ํ๋งค์)๋ง ์์ฑ ๊ฐ๋ฅ, ๋ณ์ ํ์
- S3 Presigned URL๋ก ์ด๋ฏธ์ง ์ ๋ก๋, ๋ฆฌ๋ทฐ ์ ์ฅ ์ pgvector ์๋ฒ ๋ฉ ์๋ ์ฐ๋
SSE ์คํธ๋ฆฌ๋ฐ์ผ๋ก ์ค์๊ฐ ์๋ต์ ์์ ํ๋ฉฐ, Tool Calling๊ณผ RAG๋ฅผ ํตํด DB์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ต๋ณํฉ๋๋ค.
| Tool | ์ญํ |
|---|---|
getBidsByAuctionId |
๊ฒฝ๋งค ์ ์ฐฐ ํํฉ ยท ์ต์ ๊ฐ ยท ๊ฒฝ์ ๋ถ์ |
getRecentAuctionResults |
์ํ ์์ธ ยท ๋์ฐฐ ์ด๋ ฅ ์กฐํ |
getSellerStats |
ํ๋งค์ ์ข ํฉ ์ ๋ขฐ๋ (๋์ฐฐ ํ์, ํ๊ท ํ์ ) |
getSellerReviewInsights |
ํ๋งค์ ํ๊ธฐ ํค์๋ ๋ถ์ (RAG) |
getMyAuctions |
๋ด๊ฐ ๋ฑ๋กํ ๊ฒฝ๋งค ํํฉ ยท ํ์ฌ ์ต์ ๊ฐ |
getMyBids |
๋ด๊ฐ ์ ์ฐฐํ ๊ฒฝ๋งค ํํฉ ยท 1์ ์ฌ๋ถ |
getAuctionStatsByCategory |
์นดํ ๊ณ ๋ฆฌ๋ณ ๋์ฐฐ ํต๊ณ ยท ์์ธ ๋ถ์ |
searchAuctionDescriptions |
๋์ฐฐ ๊ฒฝ๋งค ์ํ ์ค๋ช ์๋ฏธ ๊ฒ์ (RAG) |
GitHub Actions ๊ธฐ๋ฐ์ผ๋ก CI๋ push/PR ์ ์๋ ๋น๋ ๋ฐ ํ ์คํธ, CD๋ ์๋ ํธ๋ฆฌ๊ฑฐ(์ปค๋ฐ ํด์ ์ ๋ ฅ)๋ก ECR push โ ECS ๋ฌด์ค๋จ ๋ฐฐํฌ๊น์ง ์งํํฉ๋๋ค. Lambda๋ push ์ ์๋ ๋ฐฐํฌ๋๋ฉฐ, AWS ์ธ์ฆ์ OIDC(ํค ์์ด ์ญํ ๊ธฐ๋ฐ)๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๊ฒฝ๋งค ์์/์ข ๋ฃ ์ค์ผ์ค๋ง์ EventBridge โ Lambda ์ง์ ํธ์ถ ๋ฐฉ์์ผ๋ก ๊ตฌํํ์ ๋, ์ด๋ฒคํธ๋ธ๋ฆฟ์ง ์์ฒด ์ง์ฐ์ผ๋ก ์ธํด ์ต๋ 1๋ถ์ ์ง์ฐ์ด ๋ฐ์ํจ
- ๊ฒฝ๋งค ์์/์ข ๋ฃ์ ๋ฐ๋ฅธ ๊ฒฝ๋งค ์ํ์ ์ ํ์ฑ์ด ๋ณด์ฅ๋์ง ์์
- SQS ์ง์ฐ ํ๋ฅผ ๋์ ํ์ฌ EventBridge๊ฐ ๋ชฉํ ์๊ฐ 5๋ถ ์ ์ ํธ๋ฆฌ๊ฑฐ๋์ด SQS ๋ฉ์์ง์ ๋๋ ์ด๋ฅผ ๋์ ์ผ๋ก ๊ณ์ฐํด์ ์ค์
| ๊ฒฝ๋งค A | ๊ฒฝ๋งค B | ๊ฒฝ๋งค C | |
|---|---|---|---|
| ๋ชฉํ ์์ | 13:36:30 | 15:16:30 | 16:10:30 |
| ๋ชฉํ ์ข ๋ฃ | 13:43:30 | 15:20:30 | 16:13:30 |
| ์ ์ฉ ํ ์์ | 13:36:30.446 (+0.446์ด) | 15:16:30.385 (+0.385์ด) | 16:10:30.612 (+0.612์ด) |
| ์ ์ฉ ํ ์ข ๋ฃ | 13:43:30.330 (+0.330์ด) | 15:20:30.420 (+0.420์ด) | 16:13:30.365 (+0.371์ด) |
| ์ ์ฉ ์ ์์ | 13:36:36 (+6์ด) | 15:17:08 (+38์ด) | 16:11:08 (+38์ด) |
| ์ ์ฉ ์ ์ข ๋ฃ | 13:43:59 (+29์ด) | 15:20:59 (+29์ด) | 16:14:03 (+33์ด) |
| ํญ๋ชฉ | ์ ์ฉ ์ ํ๊ท | ์ ์ฉ ํ ํ๊ท | ๊ฐ์ ์จ |
|---|---|---|---|
| ์์ ์ง์ฐ | 27.33์ด | 0.48์ด | 98.2% ๊ฐ์ |
| ์ข ๋ฃ ์ง์ฐ | 30.33์ด | 0.37์ด | 98.8% ๊ฐ์ |
- ์๋ฆผ ์ ์ฅ ์์ฒญ์
@TransactionalDB INSERT๊ฐ ํฌํจ๋์ด DB ์ปค๋ฅ์ ํ๋๊น์ง Tomcat ์ค๋ ๋๊ฐ ๋ธ๋กํน ๋๊ธฐ - HikariCP ๊ธฐ๋ณธ ์ปค๋ฅ์ ํ(10๊ฐ)๊ณผ Tomcat ๊ธฐ๋ณธ ์ค๋ ๋(200๊ฐ) ํ๊ณ ์ด๊ณผ ์ ์ ๊ท ์์ฒญ์ ๋ฐ์ง ๋ชปํ๋ ์ํ ๋ฐ์
- ํ๋ซํผ ์ค๋ ๋๋ ๋ธ๋กํน ๋๊ธฐ ์ค์๋ OS ์ค๋ ๋๋ฅผ ์ ์ ํ๊ธฐ ๋๋ฌธ์ ๋์ ์์ฒญ ์ฆ๊ฐ ์ ์ค๋ ๋ ํ์ด ์์ง๋๋ ๊ตฌ์กฐ์ ํ๊ณ ์กด์ฌ
- ๊ฐ์ ์ค๋ ๋๋ ๋ธ๋กํน ๊ตฌ๊ฐ์์ OS ์ค๋ ๋๋ฅผ ๋ฐํํ๋ฏ๋ก ์ค๋ ๋ ํ ์์ง ์์ด ๋ ๋ง์ ๋์ ์์ฒญ ์ฒ๋ฆฌ ๊ฐ๋ฅ
์ฒ๋ฆฌ๋ (req/s)
| ๊ตฌ๊ฐ | ํ๋ซํผ ์ค๋ ๋ | ๊ฐ์ ์ค๋ ๋ | ์ฐจ์ด |
|---|---|---|---|
| 100 VUs | 5,385 | 5,491 | โฒ 2% |
| 300 VUs | 4,357 | 5,156 | โฒ 18% |
| Spike 500 VUs | 4,398 | 5,831 | โฒ 33% |
ํ๋ซํผ ์ค๋ ๋๋ 300 VUs์์ 100 VUs ๋๋น ์ฒ๋ฆฌ๋์ด ์คํ๋ ค ๊ฐ์(5,385 โ 4,357)ํ๋ ๊ตฌ์กฐ์ ํ๊ณ๋ฅผ ๋ณด์
์๋ต์๊ฐ โ 300 VUs ๊ธฐ์ค
| ์งํ | ํ๋ซํผ ์ค๋ ๋ | ๊ฐ์ ์ค๋ ๋ | ์ฐจ์ด |
|---|---|---|---|
| ํ๊ท ์๋ต์๊ฐ | 47.62ms | 36.71ms | โผ 23% |
| p(90) | 84.88ms | 52.8ms | โผ 38% |
| p(95) | 92.46ms | 68.8ms | โผ 26% |
- Spike 500 VUs ์ฒ๋ฆฌ๋: 4,398 โ 5,831 req/s (์ฝ 33% ์ฆ๊ฐ)
- 300 VUs p(90) ์๋ต์๊ฐ: 84.88ms โ 52.8ms (์ฝ 38% ๊ฐ์)
- ๊ฒฝ๋งค ์์/์ข ๋ฃ ์ด๋ฒคํธ ์ ์๊ฐ ํธ๋ํฝ ํญ์ฆ์๋ ์ค๋ ๋ ํ ์์ง ์์ด ์์ ์ ์ฒ๋ฆฌ
- ๋ฆฌ๋ทฐ ์ด๋ฏธ์ง๊ฐ S3(ap-northeast-2)์ ์ ์ฅ๋์ด CDN ์์ด ์๋นํ๋ฉด ๋ชจ๋ ์์ฒญ์ด Origin ์๋ฒ๊น์ง ์๋ณต
- ๋์ผ ์ด๋ฏธ์ง์ ๋ํ ๋ฐ๋ณต ์์ฒญ์๋ ๋งค๋ฒ S3 ๋คํธ์ํฌ ์๋ณต์ด ๋ฐ์ํด ๋ถํ์ํ ์ง์ฐ ๋์
- CloudFront ๋์ ์ผ๋ก ์ฒซ ์์ฒญ(MISS) ์์๋ง S3 Origin ์ ๊ทผ, ์ดํ ์์ฒญ(HIT)์ ์์ธ ์ฃ์ง์์ ์ฆ์ ๋ฐํ
์๋๋ฆฌ์ค: ๋์ผ ์ด๋ฏธ์ง์ ์ฐ์ 3ํ ์์ฒญ โ 1๋ฒ์งธ(MISS) / 3๋ฒ์งธ(HIT) ๋น๊ต, 5ํ ์๋
| ์๋ | MISS โ S3 Origin (ms) | HIT โ ์ฃ์ง ์บ์ (ms) |
|---|---|---|
| 1์ฐจ | 117 | 44 |
| 2์ฐจ | 128 | 49 |
| 3์ฐจ | 198 | 48 |
| 4์ฐจ | 106 | 40 |
| 5์ฐจ | 99 | 37 |
| ํ๊ท | 130 | 44 |
- ํ๊ท ์๋ต์๊ฐ: 130ms โ 44ms (์ฝ 66% ๊ฐ์)
- ์ต๋ ์๋ต์๊ฐ: 198ms โ 49ms (์ฝ 75% ๊ฐ์)
- S3 GET ์์ฒญ ์ ๊ฐ์๋ก ๋น์ฉ ์ ๊ฐ, ๋์ ์ ์์ ์ฆ๊ฐ ์์๋ Origin ๋ถํ ์์ด ์ฒ๋ฆฌ ๊ฐ๋ฅ
- HyDE ๋จ๋ ์ ์ฉ ์ LLM ์ถ๋ ฅ์ ์ค๋ช ์คยท๋ฒํธ๊ฐ ํฌํจ๋์ด ์๋ฒ ๋ฉ ์ฟผ๋ฆฌ์ ๋ ธ์ด์ฆ ์ ์
text-embedding-3-small์ด ๊ฐ์ฑ(๊ธ/๋ถ์ )๋ณด๋ค ํ ํฝ(๋ฐฐ์ก)์ ๊ฐํ ์ ํธ๋ก ์ฒ๋ฆฌํด ๊ธ์ ์ฟผ๋ฆฌ์์ โ 1 ๋ถ๋ง ํ๊ธฐ๊ฐ 1์๋ก ์์น
1๋จ๊ณ โ 3๋จ๊ณ ํด๋ฐฑ ํ์ฒ๋ฆฌ๋ก LLM ์ถ๋ ฅ ๋ ธ์ด์ฆ ์ ๊ฑฐ
1๋จ๊ณ: JSON ๋ฐฐ์ด ํ์ฑ ์ฑ๊ณต โ ๊ทธ๋๋ก ์ฌ์ฉ
2๋จ๊ณ: JSON ํ์ฑ ์คํจ โ cleanHydeResult() ํธ์ถ (์ค๋ช
์คยท๋ฒํธ ์ ๊ฑฐ)
3๋จ๊ณ: cleanHydeResult ๋น ๊ฒฐ๊ณผ โ ์๋ณธ ์ฟผ๋ฆฌ ํด๋ฐฑ
2๋จ๊ณ โ ์ฟผ๋ฆฌ ๋ฐฉํฅ์ฑ ๊ฐ์ง ๊ธฐ๋ฐ score ํํฐ
"๋ฐฐ์ก ๋น ๋ฅธ๊ฐ์?" โ POSITIVE_KEYWORDS ๋งค์นญ โ score โฅ 4 ํํฐ
"๋ฐฐ์ก ์ค๋ ๊ฑธ๋ฆฌ๋์?" โ NEGATIVE_KEYWORDS ๋งค์นญ โ score โค 2 ํํฐ
"๋ฐฐ์ก ์ด๋์?" โ ๋ฏธ๋งค์นญ โ score ํํฐ ์์
| ์ฟผ๋ฆฌ | Baseline | HyDE raw | HyDE + score ํํฐ |
|---|---|---|---|
| ๋ฐฐ์ก์ด ๋น ๋ฅธ๊ฐ์? | 0.33 | 0.67 | 1.00 โฒ +0.67 |
| ๋ฐฐ์ก์ด ์ค๋ ๊ฑธ๋ฆฌ๋์? | 1.00 | 1.00 | 1.00 |
| ์ํ ์ํ๊ฐ ์ค๋ช ๊ณผ ๊ฐ๋์? | 1.00 | 1.00 | 1.00 |
| ์ํต์ด ์ ๋๋์? | 1.00 | 1.00 | 1.00 |
| ํ๊ท | 0.83 | 0.92 | 1.00 โฒ +0.17 |
- Precision@3 ํ๊ท : 0.83 โ 1.00 (โฒ +0.17)
- HyDE๋ ๋จ๋ ์ผ๋ก ์ฐ๋ฉด ์ญํจ๊ณผ๊ฐ ๋ ์ ์๊ณ , score ํํฐ์ ์กฐํฉํ์ ๋ ํจ๊ณผ๊ฐ ๊ทน๋ํ๋จ
- LLM ์ถ๋ ฅ ํ์์ ํ๋กฌํํธ๋ง์ผ๋ก ์์ ํ ์ ์ดํ ์ ์์ผ๋ฏ๋ก ์ฝ๋ ๋ ๋ฒจ ํ์ฒ๋ฆฌ๊ฐ ๋ฐ๋์ ํ์
๋ ๋ง์ ํธ๋ฌ๋ธ์ํ , ์ฑ๋ฅ ๊ฐ์ , ๊ธฐ์ ์ ์์ฌ๊ฒฐ์ ๊ณผ์ ์ ์๋ ๋ ธ์ ๋ฌธ์์์ ํ์ธํ ์ ์์ต๋๋ค.










