Skip to content

Fluff-Project/Fluff_Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

Fluff

์„ธ์ƒ์— ์˜ท์€ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฒ„๋ ค์ง€๋Š” ์˜ท์˜ ์ˆจ๊ฒจ์ง„ ๊ฐ€์น˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ๊ทธ ์˜ท์— ์ƒˆ ์ˆจ์„ ๋ถˆ์–ด๋„ฃ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹œ์ž‘์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

ํ•ฉ๋ฆฌ์ ์ธ ๋น„์šฉ์œผ๋กœ ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ๋งŒ์˜ ์œ ๋‹ˆํฌํ•œ ์Šคํƒ€์ผ์„ ์ฐพ๊ณ 

ํ™˜๊ฒฝ์„ ๋ณดํ˜ธํ•จ์œผ๋กœ์จ ์Šฌ๋กœ์šฐ ํŒจ์…˜์˜ ๊ฐ€์น˜๋ฅผ ์„ธ์ƒ์— ํผํŠธ๋ฆฝ๋‹ˆ๋‹ค.

๋ฐ”๋กœ ์ด๊ฒƒ์ด fluff๊ฐ€ ๊ทธ๋ฆฌ๋Š” ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค.





๐Ÿ”–์šฐ๋ฆฌ๊ฐ€ ์ผํ•˜๋Š” ๋ฐฉ์‹


๐Ÿ“š API Docs


๐ŸŽฌ Usage Video

  • ์•„๋ž˜์˜ ์ด๋ฏธ์ง€ ํด๋ฆญ ์‹œ ์˜์ƒ์œผ๋กœ

Video


โš™๏ธ Dependencies

"dependencies": {
    "content-based-recommender": "^1.4.0",
    "mongoose": "^5.8.3",
    "multer": "^1.4.2",
    "multer-s3": "^2.9.0",
  }

content-based-filtering์„ ๋น ๋ฅธ ์‹œ๊ฐ„๋‚ด์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” content-based-recommender ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์˜€๊ณ , ๊ทธ ์™ธ์— ๊ด€๋ จ๋œ ์ •๋ณด๋“ค์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ผ๊ด€์„ฑ์žˆ๊ฒŒ ์ €์žฅ ํ•˜์˜€๋‹ค.


"dependencies": {
    "dotenv": "^8.2.0",
    "jsonwebtoken": "^8.5.1",
    "nodemailer": "^6.4.2",
    "passport": "^0.4.1",
    "rand-token": "^0.4.0",
    "redis": "^2.8.0",
    "sequelize": "^5.21.3",
  }

dotenv๋ฅผ ์ด์šฉํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ security key๋ฅผ ํ†ตํ•ฉ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜์˜€๊ณ , redis ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ ์ž„์‹œ ์ €์žฅ, ๋งˆ์ง€๋ง‰์œผ๋กœ JWT๋ฅผ ์ด์šฉํ•ด์„œ ํšŒ์›์ธ์ฆ๊ณผ ๊ฐ™์€ ๋ณด์•ˆ์— ์‹ ๊ฒฝ์„ ์ผ๋‹ค.


"dependencies": {
    "socket.io": "^2.3.0",
    "sse": "0.0.8",
    "moment": "^2.24.0",
  }

์‹ค์‹œ๊ฐ„ ๊ฒฝ๋งค ๊ธฐ๋Šฅ์„ ์œ„ํ•ญ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์ธ socket.io๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฝ๋งค ์ฐธ์—ฌ์ž๋“ค์ด ์ตœ๊ณ ๊ฐ€๋ฅผ ์•Œ๋ฆผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค. ๋˜ํ•œ ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹  server send event๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ˜„์žฌ ์‹œ๊ฐ„์„ ์ „์†กํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‹œ๊ฐ„์„ ์กฐ์ž‘ํ•˜์—ฌ ๋ถˆ์ ํ•ฉํ•œ ๊ฒฝ๋กœ๋กœ ๊ฒฝ๋งค์— ์ฐธ์—ฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์˜€๋‹ค.





๐Ÿ“ Architecture

Microservices Architecture


๐Ÿ“‹ Flow chart


๐Ÿ›  Core Technology

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

ํšŒ์›๊ฐ€์ž… ์ดˆ๊ธฐ์‹œ ์กฐ์‚ฌํ•œ ์œ ์ €์˜ ์ทจํ–ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ชจ๋“  ์ƒํ’ˆ์— score๋ฅผ ๋งค๊ฒจ์„œ contest based filtering์„ ์‚ฌ์šฉํ•œ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜์—ฌ ์œ ์ €์—๊ฒŒ ๋งž์ถคํ˜• ์ƒํ’ˆ์„ ์ œ๊ณตํ•œ๋‹ค.


๊ฒฝ๋งค

socket์„ ์ด์šฉํ•˜์—ฌ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฝ๋งค์— ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ server sent event๋กœ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ 1์ดˆ์— ํ•œ๋ฒˆ์”ฉ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒฝ๋งค ๋งˆ๊ฐ์‹œ๊ฐ„์„ ์ „์†กํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ์—์„œ ์‹œ๊ฐ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์„œ๋ฒ„์— ์ ‘๊ทผํ•˜๋Š” ๋ณด์•ˆ ์‚ฌ๊ณ ๋ฅผ ์‚ฌ์ „์— ์ฐจ๋‹จํ•˜์˜€๋‹ค.


๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ

docker๋ฅผ ์ด์šฉํ•œ ๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๋กœ ๋ฐฐํฌ์˜ ํšจ์œจ์„ฑ์„ ๋Š˜๋ฆฌ๊ณ , ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋“ค์„ ๋‚ด๋ถ€ ํ†ต์‹ ๋ง์œผ๋กœ ๋ฌถ์–ด ์•„ํ‚คํ…์ฒ˜ ๊ด€๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ค.


์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง• ์„œ๋ฒ„

์‡ผํ•‘๋ชฐ ํŠน์„ฑ์ƒ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ์–‘์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— AWS์˜ ๋Œ€ํ‘œ์ ์ธ serverless ์„œ๋น„์Šค์ธ Lambda๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง• ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.


Redis Cache Memory

Redis๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ์„œ ํšŒ์›๊ฐ€์ž… ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ฐ€์ž… ์ƒํƒœ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ํšŒ์›๊ฐ€์ž…์‹œ ์ž…๋ ฅํ•œ ์ด๋ฉ”์ผ๋กœ ํ† ํฐ ๊ฐ’์„ ํฌํ•จํ•œ ์ธ์ฆ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•˜์—ฌ, ์ธ์ฆ์™„๋ฃŒ์‹œ Database๋กœ ํšŒ์›์ •๋ณด๋ฅผ ์ €์žฅํ•˜์—ฌ ํšŒ์›๊ฐ€์ž… ๋กœ์ง์„ ์™„๋ฃŒํ•œ๋‹ค.


Mutl Processing

์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์€ ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ๋“ค๋กœ ์ธํ•œ, cpu์˜ ๋ถ€ํ•˜๋ฅผ cluster์˜ multi processing์„ ์ด์šฉํ•˜์—ฌ Node.js์˜ ์‹ฑ๊ธ€์Šค๋ ˆ๋“œ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•œ๋‹ค.

ย 

ย 

ย 

๐Ÿ“‚ Database Modeling

NoSQL RDB

ํ˜„์žฌ๋Š” NoSQL์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์˜€์ง€๋งŒ, ์ถ”ํ›„์— RDB๋กœ ๋ณ€๊ฒฝํ•  ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค.




๐Ÿ’ป Server ์—ญํ•  ๋ถ„๋‹ด





๐Ÿ”— Repository Link

ย 

About

๐Ÿšš One and Only for you, vintage shopping mall Fluff

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published