Skip to content
@Gyul-Latto

Gyul-Latto

๐Ÿปโ€โ„๏ธ PickHome

๋น…๋ฐ์ดํ„ฐ์™€ AI๋ฅผ ํ™œ์šฉํ•œ "์•„ํŒŒํŠธ ์ถ”์ฒœ ์„œ๋น„์Šค"


๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ ๋ฐ ๋ชฉํ‘œ

์•„ํŒŒํŠธ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •์€ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋ฉฐ, ํ˜„์žฌ ์ œ๊ณต๋˜๋Š” ๋ถ€๋™์‚ฐ ์ •๋ณด๋Š” ๋ฐฉ๋Œ€ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ์ถ”์ฒœ ์„œ๋น„์Šค๋Š” ๋ถ€์กฑํ•œ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.
์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชฉํ‘œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„๋ฅผ ๋ฐ˜์˜ํ•œ ๋งž์ถคํ˜• ์•„ํŒŒํŠธ ์ถ”์ฒœ ์ œ๊ณต.
  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž ์˜์‚ฌ๊ฒฐ์ • ์ง€์›.
  • ์‚ฌ์šฉ์ž ํ–‰๋™ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ์ •ํ™•ํ•œ ์ถ”์ฒœ ์‹œ์Šคํ…œ ๊ตฌํ˜„.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  1. ๊ฐœ์ธํ™” ์ถ”์ฒœ:
    • ์‚ฌ์šฉ์ž์˜ ์„ ํ˜ธ๋„์™€ ์ข‹์•„์š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”์ฒœ.
    • Collaborative Filtering๊ณผ Content-Based Filtering ์ ์šฉ.
  2. ์‹ค์‹œ๊ฐ„ ์ •๋ณด ์ œ๊ณต:
    • ์•„ํŒŒํŠธ ๋งค๋ฌผ ์—…๋ฐ์ดํŠธ, ์‹ค๊ฑฐ๋ž˜๊ฐ€ ๋ณ€ํ™”, ์ตœ์‹  ํŠธ๋ Œ๋“œ ๋ฐ˜์˜.
    • Redis๋ฅผ ํ™œ์šฉํ•œ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ.
  3. ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค:
    • ์ง€์—ญ๊ณผ ์•„ํŒŒํŠธ ๊ฒ€์ƒ‰์œผ๋กœ ํŽธ๋ฆฌํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ.
  4. ์‹œ์žฅ ํŠธ๋ Œ๋“œ ๋ถ„์„:
    • ํŠน์ • ๊ฐ€๊ฒฉ๋Œ€, ์ง€์—ญ์˜ ๋งค๋ฌผ ๋™ํ–ฅ ์ œ๊ณต.

๐Ÿ›  ๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ

AI Model

  • ํ˜‘์—… ํ•„ํ„ฐ๋ง (Collaborative Filtering):
    • ๋น„์Šทํ•œ ์ทจํ–ฅ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ถ”์ฒœ.
  • ์ฝ˜ํ…์ธ  ๊ธฐ๋ฐ˜ ํ•„ํ„ฐ๋ง (Content-Based Filtering):
    • ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ์†์„ฑ์„ ๊ฐ€์ง„ ๋งค๋ฌผ์„ ์ถ”์ฒœ.
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„, ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ.

PickHome AI๋ชจ๋ธ

Database & storage

  • MySQL: ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๋ฐ ๋งค๋ฌผ ์ •๋ณด ์ €์žฅ.
  • Redis: ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐ ์บ์‹ฑ.

Backend

  • Spring Framework: ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„.
  • Spring Security: ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ.
  • ์ฒญํฌ ๋‹จ์œ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ: ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋กœ๋“œํ•˜๊ณ  ํ•™์Šต.
  • FastAPI: AI ๋ชจ๋ธ ์„œ๋น™์— ํ™œ์šฉ.

Frontend

  • Vue.js: ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ๋ฐœ.
  • Pinia: Vue.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๊ด€๋ฆฌ.
  • Axios: ๋ฐฑ์—”๋“œ API์™€์˜ ํ†ต์‹  ์ฒ˜๋ฆฌ.
  • Chart.js: ํŠธ๋ Œ๋“œ ์‹œ๊ฐํ™” ๋ฐ ๋ฐ์ดํ„ฐ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌํ˜„.

๐Ÿ“ System Architecture

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


โš™๏ธ ERD

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


๐Ÿ“… ๊ฐœ๋ฐœ ์ผ์ •

๋‹จ๊ณ„ ์ฃผ์š” ์ž‘์—… ์ผ์ •
๊ธฐํš ๋ฐ ์ค€๋น„ ๋‹จ๊ณ„ ๊ธฐ๋Šฅ ์„ค๊ณ„, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ 11์›” 13์ผ ~11์›” 18์ผ
๋ฐ์ดํ„ฐ ์„ธํŒ… RDS ๋ฐ ๋”๋ฏธ ๋ฐ์ดํ„ฐ ๊ตฌ์ถ• 11์›” 18์ผ ~ 11์›” 19์ผ
ํ•ต์‹ฌ ๊ฐœ๋ฐœ AI ๋ชจ๋ธ, Redis ํ†ตํ•ฉ 11์›” 20์ผ ~ 11์›” 21์ผ
๊ธฐ๋Šฅ ์™„์„ฑ ์ฃผ์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„๋ฃŒ 11์›” 22์ผ ~ 11์›” 26์ผ

๐Ÿšง ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

๋ฌธ์ œ 1: ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

  • ๋ฌธ์ œ: 640๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋กœ ์ธํ•ด ํ•™์Šต ์†๋„ ์ €ํ•˜.
  • ํ•ด๊ฒฐ: Python generator์™€ Spark Streaming์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒญํฌ ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌ.

๋ฌธ์ œ 2: Spring Security ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

  • ๋ฌธ์ œ: ํ•„ํ„ฐ ์ฒด์ธ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๊ฐ€ @ControllerAdvice๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Œ.
  • ํ•ด๊ฒฐ: AuthenticationEntryPoint์™€ AccessDeniedHandler๋ฅผ ์‚ฌ์šฉํ•ด ํ•„ํ„ฐ ๋‹จ๊ณ„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ตฌํ˜„.

๐Ÿ“ธ ํ™”๋ฉด ์˜ˆ์‹œ

  1. ๋ฉ”์ธ ํ™”๋ฉด
  2. ์ง€๋„ ๊ฒ€์ƒ‰ ํ™”๋ฉด
  3. ์ถ”์ฒœ ๊ฒฐ๊ณผ & ์‹ค์‹œ๊ฐ„ ์•„ํŒŒํŠธ ํ™”๋ฉด

์˜ˆ์‹œ1



์˜ˆ์‹œ2



์˜ˆ์‹œ3



๐Ÿ‘ฅ ํŒ€์› ์†Œ๊ฐœ

Role Name GitHub
FE, BE, Spring Security ๋ฌธ์ธ๊ทœ @ingyu-moon
FE, BE, AI ์™•ํ•œ์†” @solsoleee

Popular repositories Loading

  1. frontend frontend Public

    Vue

  2. backend backend Public

    Java

  3. .github .github Public

Repositories

Showing 3 of 3 repositories

Top languages

Loadingโ€ฆ

Most used topics

Loadingโ€ฆ