Skip to content

CAPSTONE-DBFIS/server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

212 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TRENDB Logo

TRENDB: IT ํŠธ๋ Œ๋“œ ๋ถ„์„ AI ์—์ด์ „ํŠธ Server

๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ IT ์—…๊ณ„ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ง€๋Šฅํ˜• ์—์ด์ „ํŠธ

Spring Boot ๊ธฐ๋ฐ˜ ์ธ์ฆ, ํ˜‘์—…, ๋Œ€์‹œ๋ณด๋“œ, AI ์—ฐ๋™ ํ—ˆ๋ธŒ

ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2024.07.10 ~ 2025.06.04

Java Spring Boot Spring Security JPA PostgreSQL Elasticsearch Amazon S3

TRENDB ๋ฉ”์ธ ํ™”๋ฉด
TRENDB ๋ฉ”์ธ ํ™”๋ฉด

1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

๊ฐœ๋ฐœ ๋ชฉ์ 

๊ธ‰๋ณ€ํ•˜๋Š” ๊ธฐ์ˆ  ํ™˜๊ฒฝ ์†์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์Ÿ์•„์ง€๋Š” ๋ฐฉ๋Œ€ํ•œ ์ •๋ณด๋“ค์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋ณ€ํ™”์— ์‹ ์†ํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๊ธฐ์—…์˜ ์ค‘์š”ํ•œ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค. TRENDB๋Š” ์ด๋Ÿฌํ•œ ํ•„์š”์„ฑ์— ๋”ฐ๋ผ ์ž„์ง์›๋“ค์ด ์ตœ์‹  IT ํŠธ๋ Œ๋“œ๋ฅผ ๋†“์น˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TRENDB๋Š” ๊ธฐ์กด ๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ(LLM)์˜ ํ•œ๊ณ„์ธ ํ™˜๊ฐ ํ˜„์ƒ์„ ์ค„์ด๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ๋ชฉํ‘œ๋กœ ์‚ผ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ, AI ์—์ด์ „ํŠธ ์„œ๋ฒ„, ๋ฉ”์ธ API ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•œ ๊ตฌ์กฐ๋กœ ์„œ๋น„์Šค ์ „๋ฐ˜์„ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ค‘ server ๋ ˆํฌ๋Š” Spring Boot ๊ธฐ๋ฐ˜์˜ ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋กœ์„œ, ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ๊ณผ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ถ€ํ„ฐ ํŒ€ ํ˜‘์—…, ํŒŒ์ผ ๊ณต์œ , ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ์ดํ„ฐ ์ œ๊ณต, ๊ทธ๋ฆฌ๊ณ  FastAPI ๊ธฐ๋ฐ˜ AI ์—์ด์ „ํŠธ ์„œ๋ฒ„์™€์˜ ์—ฐ๋™๊นŒ์ง€ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์•ˆ์—์„œ ๋‹ค์Œ ํ๋ฆ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ ํ›„ ๊ฐœ์ธ ๋ฐ ํŒ€ ๋‹จ์œ„๋กœ ์„œ๋น„์Šค ์ด์šฉ
  • ๊ตญ๋‚ด์™ธ ๋‰ด์Šค ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ ํƒ์ƒ‰
  • AI ์ฑ—๋ด‡๊ณผ์˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋Œ€ํ™” ๋ฐ ํŽ˜๋ฅด์†Œ๋‚˜ ์„ ํƒ
  • ํŒ€ ๋ฌธ์„œ ์—…๋กœ๋“œ, ๊ณต์œ , ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต ์ˆ˜ํ–‰

์ €์žฅ์†Œ ์—ญํ• 

  • server ๋ ˆํฌ๋Š” Spring Boot ๊ธฐ๋ฐ˜์˜ ๋ฉ”์ธ API ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธ์ฆ๊ณผ JWT ๋ฐœ๊ธ‰, ํŒ€/๋ฉค๋ฒ„ ๊ถŒํ•œ ๊ด€๋ฆฌ, ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ์ธ์‚ฌ์ดํŠธ API๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • AI ์‘๋‹ต ์ƒ์„ฑ๊ณผ ์™ธ๋ถ€ ๊ฒ€์ƒ‰ ๋„๊ตฌ ์‹คํ–‰์€ FastAPI ์—์ด์ „ํŠธ ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ณธ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ์ด ์ ์žฌํ•œ ๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ์™€ ํ˜‘์—… ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

2. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ฐ ๊ตฌํ˜„

2.1. ํšŒ์› ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

  • ์ด๋ฉ”์ผ ์ธ์ฆ ๊ธฐ๋ฐ˜ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ์•„์ด๋”” ์ฐพ๊ธฐ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์•ก์„ธ์Šค ํ† ํฐ, ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ ์žฌ๋ฐœ๊ธ‰ API๋ฅผ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํšŒ์›๊ฐ€์ž… ์‹œ ์ธ์ฆ๋ฒˆํ˜ธ ๋ฐœ์†ก ๋ฐ ์ธ์ฆ๋ฒˆํ˜ธ ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์ด๋ฉ”์ผ ์†Œ์œ ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆ์ดํŽ˜์ด์ง€์—์„œ ํ”„๋กœํ•„ ์กฐํšŒ ๋ฐ ์ˆ˜์ •, ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ ํ™”๋ฉด ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด
๋กœ๊ทธ์ธ ํ™”๋ฉด ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด
์ธ์ฆ๋ฒˆํ˜ธ ์ž…๋ ฅ ํ™”๋ฉด ํšŒ์›๊ฐ€์ž… ์ด๋ฉ”์ผ ์ธ์ฆ ์˜ˆ์‹œ
์ธ์ฆ๋ฒˆํ˜ธ ์ž…๋ ฅ ํ™”๋ฉด ํšŒ์›๊ฐ€์ž… ์ด๋ฉ”์ผ ์ธ์ฆ ๋ฐœ์†ก ์˜ˆ์‹œ

2.2. AI ์ฑ—๋ด‡ ๋ฐ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ธฐ๋ฐ˜ ๋Œ€ํ™”

  • ์‚ฌ์šฉ์ž๋ณ„ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๊ฐœ์ธ ์ฑ„ํŒ…๋ฐฉ๊ณผ ํŒ€ ์ฑ„ํŒ…๋ฐฉ์„ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฑ—๋ด‡ ์งˆ์˜๋Š” SSE ๊ธฐ๋ฐ˜ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌ๋˜๋ฉฐ, Spring ์„œ๋ฒ„๊ฐ€ FastAPI ์—์ด์ „ํŠธ ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ํ”„๋ก์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๊ฐ„๋ณ„ ํŠธ๋ Œ๋“œ ๋ถ„์„, ๊ฒฝ์Ÿ์‚ฌ ๋น„๊ต ๋ถ„์„ ๋“ฑ ๋ณตํ•ฉ ์งˆ์˜์— ๋Œ€ํ•ด ์—์ด์ „ํŠธ ๋„๊ตฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ํŽ˜๋ฅด์†Œ๋‚˜์™€ ์‚ฌ์šฉ์ž ์ •์˜ ํŽ˜๋ฅด์†Œ๋‚˜๋ฅผ ํ•จ๊ป˜ ๊ด€๋ฆฌํ•ด ๋Œ€ํ™” ์Šคํƒ€์ผ๊ณผ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ต๋ณ€๊ณผ ํ•จ๊ป˜ ์ถœ์ฒ˜๋ฅผ ์ œ๊ณตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒฐ๊ณผ์˜ ๊ทผ๊ฑฐ๋ฅผ ๋ฐ”๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๊ฐ„๋ณ„ ํŠธ๋ Œ๋“œ ๋ถ„์„ ์ŠคํŠธ๋ฆฌ๋ฐ
๊ธฐ๊ฐ„๋ณ„ ํŠธ๋ Œ๋“œ ๋ถ„์„ ์ŠคํŠธ๋ฆฌ๋ฐ

ํŽ˜๋ฅด์†Œ๋‚˜ ๊ด€๋ฆฌ ๋‹ต๋ณ€ ์ถœ์ฒ˜ ์ œ๊ณต
ํŽ˜๋ฅด์†Œ๋‚˜ ๊ด€๋ฆฌ ๋‹ต๋ณ€ ์ถœ์ฒ˜ ์ œ๊ณต

2.3. ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ ๋ฐ ๋‰ด์Šค ๋ถ„์„ API

  • ํŠน์ • ๋‚ ์งœ ๊ธฐ์ค€์˜ ๊ตญ๋‚ด์™ธ ์ข…ํ•ฉ ์ธ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ฃผ๊ฐ„ ์ธ๊ธฐ ํ‚ค์›Œ๋“œ, ์—ฐ๊ด€ ๊ฒ€์ƒ‰์–ด, ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๊ธฐ์‚ฌ ํƒ์ƒ‰, ๊ฐ์„ฑ ๋ถ„์„ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • Elasticsearch์™€ PostgreSQL์— ์ ์žฌ๋œ ๋‰ด์Šค ๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ๊ฐํ™”์šฉ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ธ์‚ฌ์ดํŠธ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ ํƒ์ƒ‰
์ธ์‚ฌ์ดํŠธ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ ํƒ์ƒ‰

๊ตญ๋‚ด ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ ํ•ด์™ธ ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ
๊ตญ๋‚ด ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ ํ•ด์™ธ ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ

2.4. ํŒ€ ํ˜‘์—… ๋ฐ ๋ฌธ์„œ ๊ณต์œ 

  • ํŒ€ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ์™€ ํŒ€ ๋ฉค๋ฒ„ ์ดˆ๋Œ€ ๋ฐ ์—ญํ•  ๋ณ€๊ฒฝ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฌธ์„œ๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด S3์— ์›๋ณธ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  DB์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์€ ์™ธ๋ถ€ AI ์„œ๋ฒ„์™€ ์—ฐ๊ณ„๋˜์–ด ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต(RAG)์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ถ”์ฒœ ํŒŒ์ผ, ํŒŒ์ผ๋ช… ๊ฒ€์ƒ‰, ๋‚จ์€ ์Šคํ† ๋ฆฌ์ง€ ์กฐํšŒ, ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ/์‚ญ์ œ ๊ธฐ๋Šฅ๊นŒ์ง€ ํฌํ•จํ•ด ํ˜‘์—…ํ˜• ๋ฌธ์„œ ์ €์žฅ์†Œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
ํŒ€์› ์ถ”๊ฐ€ ํ™”๋ฉด ํŒ€ ์Šคํ† ๋ฆฌ์ง€ ํ™”๋ฉด
ํŒ€์› ์ถ”๊ฐ€ ํ™”๋ฉด ํŒ€ ์Šคํ† ๋ฆฌ์ง€ ํ™”๋ฉด

3. ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์ƒ์„ธ ์„ค๋ช…
Backend Java 17, Spring Boot 3.3.4, Spring Web, Spring WebFlux REST API ์ œ๊ณต, ์™ธ๋ถ€ AI ์„œ๋ฒ„์™€์˜ ๋น„๋™๊ธฐ ํ†ต์‹ 
Security Spring Security, JWT, BCrypt ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๊ด€๋ฆฌ
Database PostgreSQL, Spring Data JPA ์‚ฌ์šฉ์ž, ํŒ€, ์ฑ„ํŒ…, ํŒŒ์ผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋“ฑ ํ•ต์‹ฌ ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ
Search & Cache Elasticsearch, Redis ๋‰ด์Šค ๊ฒ€์ƒ‰ ๋ฐ ์ง‘๊ณ„, ์บ์‹œ ์ฒ˜๋ฆฌ
Storage Amazon S3 ํŒ€ ํŒŒ์ผ ์›๋ณธ ์ €์žฅ์†Œ
Docs & Monitoring Swagger(OpenAPI), Spring Boot Actuator API ๋ฌธ์„œํ™” ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ
AI Integration FastAPI, Milvus AI ์—์ด์ „ํŠธ ์—ฐ๋™, ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต ํ”„๋ก์‹œ, ๋ฌธ์„œ ์ž„๋ฒ ๋”ฉ ๊ฒ€์ƒ‰ ์—ฐ๊ณ„
Communication SMTP ํšŒ์›๊ฐ€์ž… ์ด๋ฉ”์ผ ์ธ์ฆ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๋ฉ”์ผ ๋ฐœ์†ก

4. ๊ด€๋ จ ์ €์žฅ์†Œ

TRENDB๋Š” ์—ญํ• ๋ณ„๋กœ ๋ถ„๋ฆฌ๋œ ์ €์žฅ์†Œ๋“ค์ด ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • ๋ฉ”์ธ API ์„œ๋ฒ„ (Spring Boot): ํ˜„์žฌ ์ €์žฅ์†Œ. ์‚ฌ์šฉ์ž ์ธ์ฆ, ํŒ€/ํŒŒ์ผ ๊ด€๋ฆฌ, ์ธ์‚ฌ์ดํŠธ API, AI ์„œ๋ฒ„ ์—ฐ๋™์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • AI ์—์ด์ „ํŠธ ์„œ๋ฒ„ (FastAPI): langchain-trend-agent - LangChain ๊ธฐ๋ฐ˜ AI ์—์ด์ „ํŠธ์™€ ๋‰ด์Šค/์›น/์ปค๋ฎค๋‹ˆํ‹ฐ/์œ ํŠœ๋ธŒ ๋“ฑ ๋„๊ตฌ ์‹คํ–‰, ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต, ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ (Python Scripts & Jenkins): global-it-news-analysis - ๊ตญ๋‚ด์™ธ IT ๋‰ด์Šค ์ˆ˜์ง‘, ํ‚ค์›Œ๋“œ/๊ฐ์„ฑ ๋ถ„์„, ๋ฐ์ดํ„ฐ ์ ์žฌ ์ž๋™ํ™”๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

5. ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„

TRENDB ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜
TRENDB ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

TRENDB ์‘๋‹ต ์ฒ˜๋ฆฌ ํ๋ฆ„
AI ์—์ด์ „ํŠธ ์‘๋‹ต ์ฒ˜๋ฆฌ ํ๋ฆ„

์š”์ฒญ ์ฒ˜๋ฆฌ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํ™”๋ฉด ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์•ฑ์—์„œ ์ธ์ฆ ํ›„ API๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. Spring Boot ์„œ๋ฒ„๋Š” JWT๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์‚ฌ์šฉ์ž, ํŒ€, ํŒŒ์ผ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  3. ์ผ๋ฐ˜ ๋น„์ฆˆ๋‹ˆ์Šค ์š”์ฒญ์€ PostgreSQL, Elasticsearch, Redis, S3์™€ ์ง์ ‘ ํ†ต์‹ ํ•ด ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  4. AI ์ฑ„ํŒ…์ด๋‚˜ ํŒ€ ๋ฌธ์„œ ์งˆ์˜์‘๋‹ต ์š”์ฒญ์€ FastAPI ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๊ณ , ์‘๋‹ต์€ SSE๋กœ ๋‹ค์‹œ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค.
  5. ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์ด ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ธ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ์™€ ํ˜‘์—… ๊ธฐ๋Šฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ†ตํ•ฉ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ

  • PostgreSQL: ํšŒ์›, ํŒ€, ์ฑ„ํŒ…๋ฐฉ, ๋ฉ”์‹œ์ง€, ํŒŒ์ผ/ํด๋” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
  • Elasticsearch: ๋‰ด์Šค ๊ธฐ์‚ฌ ๊ฒ€์ƒ‰, ํ‚ค์›Œ๋“œ ๋ฐ ๊ฐ์„ฑ ๋ถ„์„ ๊ธฐ๋ฐ˜ ์กฐํšŒ
  • Redis: ์บ์‹œ ๋ฐ ๋น ๋ฅธ ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ
  • Amazon S3: ํŒ€ ๊ณต์œ  ๋ฌธ์„œ ์›๋ณธ ํŒŒ์ผ ์ €์žฅ
  • Milvus: ํŒ€ ๋ฌธ์„œ ์ž„๋ฒ ๋”ฉ ์ €์žฅ ๋ฐ RAG ๊ฒ€์ƒ‰

6. ์ฃผ์š” API ์—”๋“œํฌ์ธํŠธ

์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž

HTTP Method ๊ฒฝ๋กœ ์„ค๋ช…
POST /api/signup ํšŒ์›๊ฐ€์ž… ๋ฐ ์ด๋ฉ”์ผ ์ธ์ฆ ๋ฐœ์†ก
POST /api/login ๋กœ๊ทธ์ธ ๋ฐ JWT ๋ฐœ๊ธ‰
POST /api/token ์•ก์„ธ์Šค ํ† ํฐ ์žฌ๋ฐœ๊ธ‰
GET /api/mypage ๋‚ด ์ •๋ณด ์กฐํšŒ
PATCH /api/update-profile ํ”„๋กœํ•„ ์ˆ˜์ •
PATCH /api/update-password ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ

์ฑ—๋ด‡ ๋ฐ ํŽ˜๋ฅด์†Œ๋‚˜

HTTP Method ๊ฒฝ๋กœ ์„ค๋ช…
GET /api/chatbot/dashboard ์ฑ„ํŒ… ๋Œ€์‹œ๋ณด๋“œ ์กฐํšŒ
POST /api/chatbot/chatroom ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ
GET /api/chatbot/chatroom/{chatroomId}/messages ๋ฉ”์‹œ์ง€ ์กฐํšŒ
POST /api/chatbot/chatroom/{chatroomId}/agent-query AI ์—์ด์ „ํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ์งˆ์˜
GET /api/persona ํŽ˜๋ฅด์†Œ๋‚˜ ๋ชฉ๋ก ์กฐํšŒ
POST /api/persona ์‚ฌ์šฉ์ž ํŽ˜๋ฅด์†Œ๋‚˜ ์ƒ์„ฑ

ํŒ€ ๋ฐ ํŒŒ์ผ ๊ณต์œ 

HTTP Method ๊ฒฝ๋กœ ์„ค๋ช…
POST /api/teams ํŒ€ ์ƒ์„ฑ
GET /api/teams/my-teams ๋‚ด๊ฐ€ ์†ํ•œ ํŒ€ ๋ชฉ๋ก ์กฐํšŒ
POST /api/teams/{teamId}/members ํŒ€ ๋ฉค๋ฒ„ ์ถ”๊ฐ€
POST /api/teams/{teamId}/folders ํŒ€ ํด๋” ์ƒ์„ฑ
POST /api/teams/{teamId}/folders/{folderId}/files ํŒŒ์ผ ์—…๋กœ๋“œ
GET /api/teams/{teamId}/files/{fileId} ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
POST /api/teams/{teamId}/files/query ํŒ€ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต

์ธ์‚ฌ์ดํŠธ

HTTP Method ๊ฒฝ๋กœ ์„ค๋ช…
GET /api/insight ๋‚ ์งœ ๊ธฐ์ค€ ์ข…ํ•ฉ ์ธ์‚ฌ์ดํŠธ ์กฐํšŒ
GET /api/insight/weekly ์ฃผ๊ฐ„ ์ธ๊ธฐ ํ‚ค์›Œ๋“œ ์กฐํšŒ
GET /api/insight/search ๊ธฐ๊ฐ„ ๋‚ด ๊ธฐ์‚ฌ ๊ฒ€์ƒ‰
GET /api/insight/sentiment-analysis ํ‚ค์›Œ๋“œ ๊ฐ์„ฑ ๋ถ„์„
GET /api/insight/competitors/mentions ๊ฒฝ์Ÿ์‚ฌ ์–ธ๊ธ‰๋Ÿ‰ ๋ถ„์„
GET /api/insight/competitors/sentiment ๊ฒฝ์Ÿ์‚ฌ ๊ฐ์„ฑ ๋ถ„์„

์ „์ฒด API๋Š” Swagger UI์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


7. ์‹คํ–‰ ๋ฐฉ๋ฒ•

7.1. ์‚ฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

  • Java 17
  • Gradle Wrapper
  • PostgreSQL
  • Redis
  • Elasticsearch
  • AWS S3 ์ ‘๊ทผ ์ •๋ณด
  • FastAPI ์—์ด์ „ํŠธ ์„œ๋ฒ„

7.2. ์„ค์ •

์‹คํ–‰ ์ „ src/main/resources/application.yml ๋˜๋Š” ๋ฐฐํฌ ํ™˜๊ฒฝ ์„ค์ •์—์„œ ์•„๋ž˜ ํ•ญ๋ชฉ๋“ค์„ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ์˜ˆ์‹œ ํ‚ค
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค spring.datasource.url, spring.datasource.username, spring.datasource.password
๋ฉ”์ผ ์ธ์ฆ spring.mail.host, spring.mail.username, spring.mail.password
JWT jwt.issuer, jwt.secret
AI ์„œ๋ฒ„ ์—ฐ๋™ fastapi.url
๊ฒ€์ƒ‰/์บ์‹œ spring.elasticsearch.uris, spring.redis.host, spring.redis.password
ํŒŒ์ผ ์ €์žฅ์†Œ aws.access.key, aws.secret.key, aws.region, aws.s3.bucket

7.3. ๋กœ์ปฌ ์‹คํ–‰

./gradlew bootRun

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ํ›„ ๊ธฐ๋ณธ ์ ‘๊ทผ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ํ™ˆ: http://localhost:8080/
  • Swagger UI: http://localhost:8080/swagger-ui.html
  • Actuator: http://localhost:8080/actuator

8. ๋ธŒ๋žœ์น˜ ์ „๋žต

  • main: ์•ˆ์ •ํ™”๋œ ์šด์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ธŒ๋žœ์น˜
  • develop: ๋‹ค์Œ ๋ฐฐํฌ ๋ฒ„์ „์„ ํ†ตํ•ฉ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  • feature/*: ๊ธฐ๋Šฅ ๋‹จ์œ„ ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜

About

Hanyang. Erica Capstone Design - Team.TRENDB Backend(Spring)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors