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점)
-
알림 기능: 인기글/수익왕 달성, 댓글, 찬반투표 등에 대한 알림
-
채팅방: 로그인한 유저들끼리 토론할 수 있는 채팅방
| 적용 기술 | 기술 도입배경 |
|---|---|
| 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 설계 : https://www.notion.so/be889f10852c4aed91ba2bd00b5c4f20?v=42e0adb20f9147648addf40aad7e0301

