Skip to content

HH99-StockHub/BackEnd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

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

Repository files navigation

[Stock Hub]

KakaoTalk_20220729_160912463

๐Ÿ“ข ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

Stock Hub๋Š” ๋‚ด๊ฐ€ ์„ ํƒํ•œ ์ข…๋ชฉ์— ๋Œ€ํ•œ ๋งค์ˆ˜ ์˜๊ฒฌ์„ ๊ณต์œ ํ•˜๋Š” ์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๋กœ๋ถ€ํ„ฐ ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ํ‰๊ฐ€๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์€ ๋ฌผ๋ก , ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹œ์ ๋ถ€ํ„ฐ์˜ ์ˆ˜์ต๋ฅ ๋„ ๋ณด์—ฌ์ค˜์š”!

์‚ฌ๊ณ  ์‹ถ์€ ์ข…๋ชฉ์ด ์žˆ๋Š”๋ฐ, ๋‚ด ์ƒ๊ฐ์ด ๋งž๋Š”์ง€ ํ™•์‹ ์ด ์—†๋‹ค๋ฉด Stock Hub์˜ ๊ณ ์ˆ˜๋“ค์—๊ฒŒ ๊ฒ€์ฆ์„ ๋ฐ›์•„๋ณด์‹œ์ฃ !

์ˆจ์–ด์žˆ๋˜ ๋ฐฉ๊ตฌ์„ ์• ๋„๋ฆฌ์ŠคํŠธ๋“ค์ด ๋งˆ์Œ๊ป ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋‚ด๋Š” ๊ทธ๋‚ ๊นŒ์ง€ ํ™”์ดํŒ…์ž…๋‹ˆ๋‹ค!

๐Ÿ“† ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

2022/06/24 ~ 2022/08/05
๋ฒ ํƒ€ ์„œ๋น„์Šค ๋ฐฐํฌ 2022/07/29

ํŒ€์›์†Œ๊ฐœ

Name GitHub / Contact Position
Frontend Github Link https://github.com/HH99-StockHub/FrontEnd
๋ฐ•ํƒœํ˜•VL https://github.com/bigtae1007 FE / React
์ •์‹ ์˜ https://github.com/sinyoung12 FE / React
Backend Github Link https://github.com/HH99-StockHub/BackEnd
์กฐํ•œ์šธL https://github.com/gaius365 BE / Spring
๋ฌธ์ค€ํ˜ธ https://github.com/mjoonho BE / Spring
์ฃผ ํฌ https://github.com/Joo-hui BE / Spring
Designer Designer
์ด์€์ง€

๐Ÿš€ ์Šคํƒ

๐Ÿ”ง ํˆด

๐Ÿ–ฅ ์„œ๋ฒ„

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

  • ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ/์‚ญ์ œ: KOSPI/KOSDAQ ์ƒ์žฅ ์ฃผ์‹์„ ํ•œ ๊ฐ€์ง€ ์„ ํƒํ•˜์—ฌ ๊ทธ ์ฃผ์‹์— ๋Œ€ํ•œ ๋งค์ˆ˜ ์˜๊ฒฌ์„ ๊ฒŒ์‹œ

  • ์ฐฌ๋ฐ˜ ํˆฌํ‘œ: ํƒ€์ธ์˜ ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•ด ์ฐฌ์„ฑ/๋ฐ˜๋Œ€์˜ ํˆฌํ‘œ๋ฅผ ํ–‰์‚ฌ ๋˜๋Š” ์ˆ˜์ •ํ–‰์‚ฌ ๊ฐ€๋Šฅ

  • ๋Œ“๊ธ€ ์ž‘์„ฑ/์‚ญ์ œ

  • ์ˆ˜์ต๋ฅ  ๊ธฐ๋ก: ๊ฒŒ์‹œ๊ธ€์ด ์ž‘์„ฑ ์‹œ์ ๋ถ€ํ„ฐ ๊ฒŒ์‹œ๊ธ€ ์กฐํšŒ ์‹œ์ ๊นŒ์ง€์˜ ์ˆ˜์ต๋ฅ ์„ ํ‘œ์‹œ

  • ๊ธฐ์‚ฌ ํ‘œ์‹œ: ๊ฒŒ์‹œ๊ธ€ ํ•ด๋‹น ์ข…๋ชฉ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ ๋‚˜์˜ค๋Š” ๋„ค์ด๋ฒ„ ๊ธฐ์‚ฌ๋ฅผ ํ‘œ์‹œ

  • ๋ชจ์•„๋ณด๊ธฐ: ๋ณธ์ธ ๋ฐ ํƒ€ ์œ ์ €์˜ ๊ฒŒ์‹œ๊ธ€์„ ๋ชจ์•„๋ณด๊ธฐ

  • ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ : ํ•ด๋‹น ํ‚ค์›Œ๋“œ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ( ๋„์–ด์“ฐ๊ธฐ๋กœ ์ค‘๋ณต ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ๊ฐ€๋Šฅ )

  • ์ธ๊ธฐ๊ธ€ ๊ฒŒ์‹œํŒ ๋“ฑ๋ก: 1) 3ํ‘œ ์ด์ƒ์˜ ์ฐฌ์„ฑ ํ‘œ๋ฅผ ํš๋“ + 2) 2๋ฐฐ์ˆ˜ ์ด์ƒ์˜ ์ฐฌ์„ฑ/๋ฐ˜๋Œ€ ๋น„์œจ ๋‹ฌ์„ฑ

  • ์ˆ˜์ต์™• ๊ฒŒ์‹œํŒ ๋“ฑ๋ก: 5% ์ด์ƒ์˜ ์ˆ˜์ต๋ฅ  ๋‹ฌ์„ฑ

  • ๋ชฉํ‘œ์ˆ˜์ต๋ฅ : ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹œ ๋ชฉํ‘œ์ˆ˜์ต๋ฅ  ์„ค์ • (+10%, +20%, + 30%, +50%, +100%, +150%, +200%)

  • ํƒ€์ž„ ๋ฆฌ๋ฏธํŠธ: ์ˆ˜์ต๋ฅ  ๊ธฐ๋ก์„ ์ผ์ • ๊ธฐ๊ฐ„ ํ›„์— ๋ฉˆ์ถ”๋Š” ๊ธฐ๋Šฅ (2์ฃผ, 1๊ฐœ์›”, 3๊ฐœ์›”, 6๊ฐœ์›”, 1๋…„, 2๋…„, 3๋…„)

  • ๋ชฉํ‘œ ์ˆ˜์ต๋ฅ : ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ์‹œ ๋ชฉํ‘œ์ˆ˜์ต๋ฅ  ์„ค์ • (+10%, +20%, + 30%, +50%, +100%, +150%, +200%)

  • ๋ฉ”์ธ ๋ฐฐ๋„ˆ: ์ข…ํ•ฉ ์ฃผ๊ฐ€ ์ง€์ˆ˜ ์ •๋ณด๋ฅผ ๋ฐฐ๋„ˆ์— ํ๋ฅด๋Š” ํ˜•ํƒœ๋กœ ๊ฒŒ์‹œ

  • ์ฃผ๊ฐ€ ์ฐจํŠธ: ๊ฒŒ์‹œ๊ธ€ ํ•ด๋‹น ์ข…๋ชฉ์˜ 1๋…„์น˜ ์„ ์ฐจํŠธ, ์ผ๋ด‰์ฐจํŠธ ํ‘œ์‹œ

  • ๋žญํฌ ์‹œ์Šคํ…œ: ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€ ์ž‘์„ฑ ์‹ค์ ๊ณผ ์ธ๊ธฐ๊ธ€ ๋‹ฌ์„ฑ ์—…์ ์„ ์ ์ˆ˜ํ™” ํ•ด์„œ ๋žญํฌ ์‹œ์Šคํ…œ์„ ์ ์šฉ (์‹ ์ž… 0์  - ์ดˆ๋ณด 10์  - ์ค‘์ˆ˜ 100์  - ๊ณ ์ˆ˜ 200์  - ์ง€์กด 500์  / ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ +30์ , ๋Œ“๊ธ€ ์ž‘์„ฑ +5์ , ์ธ๊ธฐ๊ธ€ ๋‹ฌ์„ฑ +50์ )

  • ์•Œ๋ฆผ ๊ธฐ๋Šฅ: ์ธ๊ธฐ๊ธ€/์ˆ˜์ต์™• ๋‹ฌ์„ฑ, ๋Œ“๊ธ€, ์ฐฌ๋ฐ˜ํˆฌํ‘œ ๋“ฑ์— ๋Œ€ํ•œ ์•Œ๋ฆผ

  • ์ฑ„ํŒ…๋ฐฉ: ๋กœ๊ทธ์ธํ•œ ์œ ์ €๋“ค๋ผ๋ฆฌ ํ† ๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„ํŒ…๋ฐฉ

    ๐ŸŽฌ ๋ฐฐํฌ

    https://stockhub.co.kr/

    ๐Ÿ“ฝ ์‹œ์—ฐ ์˜์ƒ

    https://www.youtube.com/watch?v=44gPimI_pqI

    ๐Ÿ“‹ ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ

    image

    ๐Ÿ›  ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •

์ ์šฉ ๊ธฐ์ˆ  ๊ธฐ์ˆ  ๋„์ž…๋ฐฐ๊ฒฝ
MongoDB ์ฆ๊ถŒ API ์—ฐ๊ฒฐ์„ ์œ„ํ•ด Python์„ ์‹คํ–‰ํ•˜๋Š” ๋ณ„๋„์˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋Š”๋ฐ, ๋‹ค๋Ÿ‰์˜ ์ฆ๊ถŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์—๋Š” NoSQL์ธ MongoDB๋ฅผ ์‚ฌ์šฉํ•ด์„œ Spring ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
MySQL Spring์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์ธ ๋กœ์ง์—๋Š” 1๋Œ€N ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์—ฌ ๊ด€๊ณ„ํ˜• DB์ธ MySQL์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
Nginx HTTPS ์—ฐ๊ฒฐ์„ ์œ„ํ•ด ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•ด์ค„ ์›น์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ๊ณ , ์ถ”ํ›„ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ์—ผ๋‘์— ๋‘๋ฉด Nginx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
Web Socket ์‚ฌ์šฉ์ž๋“ค ๊ฐ„์˜ ์›ํ™œํ•œ ์†Œํ†ต์„ ์œ„ํ•ด ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ๊ณผ ์ „์ฒด ์ฑ„ํŒ…๋ฐฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
Python ํ‚ค์›€์ฆ๊ถŒ api์™€ yahoo finance๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

โšกํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

-[BackEnd] ์ถ”์ฒœ/๋น„์ถ”์ฒœ ํˆฌํ‘œ ๋น„์ •์ƒ ์ž‘๋™

`๋ฌธ์ œ ์ƒํ™ฉ`

ํ•˜๋‚˜์˜ ๊ฒŒ์‹œ๊ธ€์„ ๋†“๊ณ  ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋ช…์ด์„œ โ€œ์ถ”์ฒœ"๊ณผ โ€œ๋น„์ถ”์ฒœ" ํˆฌํ‘œ๋ฅผ ๊ณ„์† ๋ˆŒ๋ €์„ ๋•Œ ๊ฐ€๋” ์ถ”์ฒœ ์ˆ˜๋‚˜ ๋น„์ถ”์ฒœ ์ˆ˜๊ฐ€ โ€œ-1โ€ ๋“ฑ 
๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ์ˆซ์ž๊ฐ€ ๋‚˜์˜ค๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์กŒ์Šต๋‹ˆ๋‹ค. 

`๋ฌธ์ œ ์›์ธ`

์ถ”์ฒœ/๋น„์ถ”์ฒœ ํˆฌํ‘œ ๋กœ์ง์ƒ ๊ฒŒ์‹œ๊ธ€์„ โ€œarticleRepositoryโ€์—์„œ ๋ถˆ๋Ÿฌ์˜จ ํ›„ ์ผ๋ จ์˜ ํ…Œ์ŠคํŠธ ๊ณผ์ •์„ ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ฑฐ์น˜๊ณ  
โ€œarticle.setVoteUpCount(article.getVoteUpCount() + 1)โ€์˜ ๋ฐฉ์‹์œผ๋กœ ์ถ”์ฒœ ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 1๋ฒˆ ์‚ฌ์šฉ์ž์˜ ๋กœ์ง์ด ๋‹ค ๋Œ๊ธฐ ์ „์— 
2๋ฒˆ ์‚ฌ์šฉ์ž๊ฐ€ ํˆฌํ‘œ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

`ํ•ด๊ฒฐ ๋ฐฉ์•ˆ`

1. Message Queue๋ฅผ ์ ์šฉํ•˜์—ฌ ์งง์€ ์ˆœ๊ฐ„์— ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์•ˆ โ†’ ๊ณต๋ถ€ ์ค‘
2. โ€œvoteUpCountโ€๋ฅผ ๋งค๋‰ด์–ผ๋กœ +1, -1 ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  โ€œvoteUpRepositoryโ€์—์„œ ๊ด€๋ จ ํˆฌํ‘œ ์ˆ˜๋ฅผ ์นด์šดํŠธํ•ด์„œ setํ•˜๋Š” ๋ฐฉ์•ˆ โ†’ ์ฑ„ํƒ ์˜ˆ์ •

-[BackEnd] ๊ฒ€์ƒ‰๊ธฐ๋Šฅ ๊ฐœ์„ 

๋ฌธ์ œ ์ƒํ™ฉ

๊ฒŒ์‹œ๊ธ€์˜ ์–‘์ด ์ฆ๊ฐ€ํ•˜๊ณ  ๊ฒ€์ƒ‰๊ฒฐ๊ณผ์˜ ์—ฐ๊ด€์„ฑ ๊ฒ€์‚ฌ ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋จ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ํ•„์š”์„ฑ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. 

`๋ฌธ์ œ ์›์ธ`

1. ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์—ฐ๊ด€์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์ •๋ ฌ์— ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ๊ณผ ์ค‘๋ณต ๊ฒŒ์‹œ๊ธ€ ์ œ๊ฑฐ ์ „ ๋ฐ˜ํ™˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜์ค‘
(๊ฒ€์ƒ‰๊ฒฐ๊ณผ์—์„œ ์ œ์™ธํ•  ํ•ญ๋ชฉ์—๋„ ์ž‘์—… ์ˆ˜ํ–‰์ค‘)
2. ๊ฒ€์ƒ‰๊ฒฐ๊ณผ ์ค‘๋ณต ๊ฒŒ์‹œ๊ธ€ ์ œ๊ฑฐ์— ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๋Š” ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ์ค‘

`ํ•ด๊ฒฐ ๋ฐฉ์•ˆ`

1. ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ์ˆœ์„œ๋ฅผ ์กฐ์œจํ•˜์—ฌ ์—ฐ๊ด€์„ฑ ์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ๋ฐ˜ํ™˜ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅํ•จ
2. stream distinct๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ๊ฒŒ์‹œ๊ธ€ ์ œ๊ฑฐ
์—ฐ๊ด€์„ฑ ๊ฒ€์‚ฌ ๊ณผ์ •์—์„œ์˜ ์ง€์—ฐ์„ ์˜ˆ๋ฐฉํ•  ๋ฐฉ์•ˆ ๋ชจ์ƒ‰์ค‘

๐Ÿงพ API

API ์„ค๊ณ„ : https://www.notion.so/be889f10852c4aed91ba2bd00b5c4f20?v=42e0adb20f9147648addf40aad7e0301

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published