Tusori(투설이)

생성일
2024/01/04 → 2024/04/18
Position
BE
PM
FE
React
TypeScript
BE
Java
SpringBoot
AWS
Python
MySQL
Link
기간
2024.08 ~ 2024.09
구성원
BE 2명 | FE 2명 | PM 2명 | DESIGN 2명
담당 역할
BE
BE 기술 스택
Fast API, 라이브러리(FinanceDataReader, Pykrx), Spring Boot, Kakao API, Nginx, AWS EC2, AWS RDS

프로젝트

주식 투자를 해보지 않거나 어렵다고 느끼는 사용자를 위한 모의 투자 웹사이트 => 투자 기초 설명서, 투설이(Tusori)

기능

1. 홈
지수 - 코스피, 코스닥, 환율
실시간 거래량 TOP 5 - 코스피, 코스닥, 코넥스(거래량 기준)
MY 보유주식 TOP 5
2. 주식사전
3. 업종별시세
업종별 전일비 - 코스피, 코스닥, 코넥스
1) 종목 페이지: 종목별 지수
2) 종목 상세페이지: 종목 정보 및 지수, 기업소개, 동일 업종 비교, 매수/매도
4. 마이페이지
유저 정보, 자산 정보 - 초기화 가능
MY 보유 주식
관심 주식
매수/매도 일지

구현

문서

1. 기능명세서

2. API 명세서

3. User Flow

4. ERD

5. 개발 아키텍처

개발

Python 라이브러리를 활용한 주식 API 구축

Library FinanceDataReader
Data 코스피, 코스닥, 코넥스, 환율 (종가, 전일비, 등락률) (주봉, 월봉, 1개월, 3개월 1년, 3년, 10년 - 그래프)
Data 기업 정보 - 기업 코드 기준으로 조회 (기업 코드 / 기업명, 종가, 전일비, 등락률, 거래량 / 시가, 고가, 저가 / 시가총액, 상장주식수)
Library Pykrx
Data PBR, PER, EPS, DIV
유저 정보 및 보유주식, 매수/매도 주식 정보 DB에서 가져오기 및 구현
보유주식 - 평가손익금, 평가손익률, 보유일 추가
관심 주식 CRUD 및 구현
관심주식 - 기업 코드 기준으로 조회 (기업 코드, 기업명, 종가, 전일비, 등락률, 고가, 저가, 거래량, 시가총액)

모의주식 투자 관련 SSE 알림 구현

서버 + 프론트 배포

AWS EC2, Nginx, AWS RDS

회고

문제 상황 및 해결

다중 서버 JWT - Base64 인코딩 에러를 해결하고 공유

SpringBoot로 개발한 서버에서 로그인해 토큰을 발급받고 FastAPI로 해당 토큰을 통해 사용자 정보를 받아와야 하는 상황해서 Invalid Signature 에러 발생
→ 문자를 OS마다 바이너리로 바꾸는데 바꾸는 방법이 다를 수 있기 때문에 Secret Key를 Base64로 인코딩해야 함

배포

SpringBoot(8080)와 FastAPI(8000)를 동시 배포, 서버와 프론트 동시 배포
→ Nginx 활용 → 블로그에 글을 작성하여 공유

신경 쓴 부분

꾸준한 개발 및 진행 상황 공유

매주 정해진 요일에 만나 모각코(모여서 각자 코딩)을 진행하고 진행 상황 공유

환경 변수 설정 및 관리, 암호화

SpringBoot: Jasypt(Java Simplified Encryption) 라이브러리
fastAPI: .env 파일 → .gitignore에 추가

코드 리팩토링

도메인별로 분류하고 중복 코드를 메서드화하는 방향으로 코드 리팩토링을 통해 이해도를 높임
공부한 내용 모음