Skip to content

๐Ÿ†11๊ธฐ ํŠนํ™” ํ”„๋กœ์ ํŠธ ์ตœ์šฐ์ˆ˜์ƒ!๐Ÿ†

Notifications You must be signed in to change notification settings

lso401/RunnerWay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ํ”„๋กœ์ ํŠธ๋ช… (Runner Way)

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋กํ•œ ๋Ÿฌ๋‹ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋งž์ถคํ˜• ์ฝ”์Šค ์ถ”์ฒœ ๋ฐ ๊ฒฝ๋กœ ์‹œ๊ฐํ™”๋ฅผ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๊ฐ ์‚ฌ์šฉ์ž๋ณ„๋กœ ๋‹ฌ๋ฆฌ๊ธฐ, ์‚ฐ์ฑ…, ์ž์ „๊ฑฐ ์ฝ”์Šค ๋“ฑ์„ ์ถ”์ฒœํ•˜๊ณ , ๊ฒฝ๋กœ์˜ ๊ฒฝ์‚ฌ๋„๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ตœ์ ์˜ ์šด๋™ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

  • ๊ฒฝ๋กœ ์ถ”์ฒœ: ์‚ฌ์šฉ์ž ๊ธฐ๋ก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์œ ์‚ฌํ•œ ์ฝ”์Šค๋ฅผ ์ฐพ์•„ ์ถ”์ฒœ
  • ๊ฒฝ๋กœ ์‹œ๊ฐํ™”: ์ง€๋„ ์ƒ์—์„œ ๊ฒฝ๋กœ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๊ฒฝ์‚ฌ๋„์™€ ํ•จ๊ป˜ ํ‘œ์‹œ
  • ๊ฒฝ์‚ฌ๋„ ๋ถ„์„: DEM ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒฝ์‚ฌ๋„ ๊ณ„์‚ฐ ๋ฐ ๋‚ด๋ฆฌ๋ง‰ ๊ฒฝ์‚ฌ๋„ ๊ณ„์‚ฐ ๋ฐ ์ฝ”์Šค ๋‚œ์ด๋„ํ™”
  • ์‚ฌ์šฉ์ž ๊ธฐ๋ก ๊ด€๋ฆฌ: ์‚ฌ์šฉ์ž์˜ ์šด๋™ ๊ธฐ๋ก(๊ฑฐ๋ฆฌ, ์นผ๋กœ๋ฆฌ, ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ๋“ฑ)์„ ์ €์žฅ ๋ฐ ๋ถ„์„
  • ๋Œ€๊ฒฐ ๋ชจ๋“œ: ๋žญ์ปค ํ˜น์€ ๋‚˜์™€์˜ ๋Œ€๊ฒฐ ๋ชจ๋“œ

Flow Chart

flow.png

๊ธฐ์ˆ  ๊ณ ๋„ํ™”

  • ์บ์‹œ ์‚ฌ์šฉ
    • real-time์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณต์ ์ธ update ๋ฐœ์ƒ
      • redis(cache)์˜ key-value๋ฅผ ์ด์šฉํ•˜์—ฌ real-time(์ฐธ์—ฌ์ž ์ˆ˜) update๋ฅผ ํ•˜๊ณ  ํŠน์ • ๊ธฐ๊ฐ„ (24์‹œ๊ฐ„)๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(mysql) ๋ฐ˜์˜
    • ๊ฐ€๋ณ€์„ฑ์ด ์ ์€ data ์กฐํšŒ
      • ์ž์ฃผ ๋ณ€ํ™”ํ•˜์ง€ ์•Š๋Š” data์— ๋Œ€ํ•ด์„œ redis(cache)์— ์ €์žฅ ํ›„ ์กฐํšŒ ์‹œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
    • ์บ์‹ฑ ์ฒ˜๋ฆฌ ์ „ ์„ฑ๋Šฅ cacheBefore.png
    • ์บ์‹ฑ ์ฒ˜๋ฆฌ ํ›„ ์„ฑ๋Šฅ (๋Œ€๋žต 14.68๋ฐฐ ์ฐจ์ด) cacheAfter.png
  • ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • data ๋ถ€์กฑ ์‹œ CBF, ์ถฉ๋ถ„ํ•œ data๊ฐ€ ์Œ“์—ฌ ์žˆ์„ ์‹œ CF์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด์šฉํ•˜์—ฌ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ•„ํ„ฐ ์ ์šฉ ์ถ”์ฒœ
    • Python LightFm ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

image.png

  • ๊ฒฝ์‚ฌ๋„ ๊ณ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • ๊ตญํ† ์ง€๋ฆฌ์ •๋ณด์›์—์„œ ์ œ๊ณตํ•˜๋Š” DEM(๊ตญ๋„ ์ด๋ฏธ์ง€) ์ด์šฉํ•˜์—ฌ ๊ณ ๋„๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ๊ณ ๋„๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒฝ์‚ฌ๋„ ๊ณ„์‚ฐ
    • FastApi ์‚ฌ์šฉ

    image.png

  • GPS๊ธฐ๋ฐ˜ ์ฃผ๋ณ€ ๋Ÿฌ๋‹ ์ฝ”์Šค ๋ชฉ๋ก ์กฐํšŒ

    • ๋งค๋ฒˆ ์›€์ง์ผ ๋•Œ ๋งˆ๋‹ค ์กฐํšŒํ•˜๋Š” ๊ฒƒ์€ DB์— ๋ถ€๋‹ด์ด ํผ
    • ๊ฐฑ์‹ ํ•˜๋Š” ๋ฒ„ํŠผ์„ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐฑ์‹ 
    • ์กฐํšŒ ์‹œ H3 ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ํ˜น์€ ๊ตฌ์—ญ์„ ๋ฏธ๋ฆฌ ์ง€์ • ํ›„ ๊ตฌ์—ญ๋ณ„ ์กฐํšŒ

๊ฐœ๋ฐœ ํ˜„ํ™ฉ

  • API ๊ฐœ๋ฐœ 90% ์™„๋ฃŒ

image.png

image.png

  • flutter ํ˜„ํ™ฉ

    ํ•˜๋‹จ ๋ฐ” ๊ฐœ๋ฐœ ์™„๋ฃŒ ๋ฐ gps ๊ฒฝ๋กœ ๊ทธ๋ฆฌ๊ธฐ ์™„๋ฃŒ

    runnerwaygif.gif

  • ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„

    • LightFM Library๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ CF(Collaborate Filtering), CBF(Content Based Filtering) ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” Hybrid Filtering ๊ตฌํ˜„
    • ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ ์œผ๋ฉด CBF ๋งŽ๋‹ค๋ฉด CF๋กœ ์ž๋™ ์ ์šฉ

    recommend.png

  • Elastic Search ์ ์šฉ

    • ๊ธ€์ž ๋‹จ์œ„ ์—ฐ๊ด€ ๊ฒ€์ƒ‰ ๋ฐ ์ž๋™์™„์„ฑ ๊ธฐ๋Šฅ el1.png el2.png
  • FAST API ์ ์šฉ

    • WebClient๋ฅผ ์‚ฌ์šฉํ•ด FAST API ์‚ฌ์šฉ img11.png
  • Front ๊ฐœ๋ฐœ ํ˜„ํ™ฉ

    • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ img13.png

    • ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ img14.png img15.png

    • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ž…๋ ฅ ์‹œ Elastic Search๋ฅผ ํ™œ์šฉํ•œ ๊ฒ€์ƒ‰์–ด ๋งค์นญ img6.png

    • ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ ๋ฐ ์ •๋ ฌ/ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ img7.png

    • ๋ฉ”์ธ ํŽ˜์ด์ง€

    • ์ •๋ ฌ/ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ img8.png

    • ๋Ÿฌ๋‹ ์ƒ์„ธ ์กฐํšŒ ํŽ˜์ด์ง€ img9.png

    • ๋ฆฌ๋ทฐ ํŽ˜์ด์ง€ img10.png

    • ๋ฆฌ๋ทฐ ์ž‘์„ฑ ํŽ˜์ด์ง€ img12.png

์ถ”ํ›„ ๊ฐœ๋ฐœ ํ˜„ํ™ฉ

  • ์œ ์‚ฌ๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ
  • Front ๊ฐœ๋ฐœ ๋ฐ apk ์ถ”์ถœ
  • Front - Back ์—ฐ๊ฒฐ

About

๐Ÿ†11๊ธฐ ํŠนํ™” ํ”„๋กœ์ ํŠธ ์ตœ์šฐ์ˆ˜์ƒ!๐Ÿ†

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published