Tusori(투설이)

생성일
2024/01/04 → 2024/04/18
Position
BE
PM
FE
React
TypeScript
BE
Java
SpringBoot
AWS
Python
MySQL

기획 의도 및 기능

투자 기초 설명서
주식 투자를 해보지 않거나 어렵다고 느끼는 사용자를 위한 모의 투자 웹사이트
주요 기능
1. 홈
지수 - 코스피, 코스닥, 환율
실시간 거래량 TOP 5 - 코스피, 코스닥, 코넥스(거래량 기준)
MY 보유주식 TOP 5
2. 주식사전
3. 업종별시세
업종별 전일비 - 코스피, 코스닥, 코넥스
1) 종목 페이지
종목별 지수
2) 종목 상세페이지
종목 정보 및 지수, 기업소개, 동일 업종 비교, 매수/매도
4. 마이페이지
유저 정보, 자산 정보 - 초기화 가능
MY 보유 주식
관심 주식
매수/매도 일지

역할

PM / BE(SpringBoot, FastAPI)
기능명세서 작성, API 명세서 작성, ERD 작성
Python 라이브러리를 활용한 주식 API 구축
Library FinanceDataReader
Data 코스피, 코스닥, 코넥스, 환율 (종가, 전일비, 등락률) (주봉, 월봉, 1개월, 3개월 1년, 3년, 10년 - 그래프)
Data 기업 정보 - 기업 코드 기준으로 조회 (기업 코드 / 기업명, 종가, 전일비, 등락률, 거래량 / 시가, 고가, 저가 / 시가총액, 상장주식수)
Library Pykrx
Data PBR, PER, EPS, DIV
유저 정보 및 보유주식, 매수/매도 주식 정보 DB에서 가져오기 및 구현
보유주식 - 평가손익금, 평가손익률, 보유일 추가
관심 주식 CRUD 및 구현
관심주식 - 기업 코드 기준으로 조회 (기업 코드, 기업명, 종가, 전일비, 등락률, 고가, 저가, 거래량, 시가총액)
AWS EC2, Nginx, AWS RDS -> 서버 배포

구현

회고

어려웠던 점
다양하고 많은 데이터 처리
fastAPI를 사용한 RESTful API 개발 첫 경험
SpringBoot 내 Swagger 사용 및 SSE 알림 구현
환경 변수 설정 및 관리, 암호화
SpringBoot: Jasypt(Java Simplified Encryption) 라이브러리
fastAPI: .env 파일 → .gitignore에 추가
배포
SpringBoot(8080)와 FastAPI(8000)를 동시 배포
서버와 프론트 동시 배포
해결방안
가독성을 높이고 유지보수를 위해 코드 리팩토링
도메인별로 분류
중복 코드 → 메서드화
Nginx 활용 → 블로그에 글을 작성하여 공유
다양하고 많은 데이터 처리를 해야하고 FastAPI를 사용한 RESTful API 첫 개발 경험이였으나 도메인별로 분류하고 중복 코드를 메서드화하는 방향으로 코드 리팩토링을 통해 이해도를 높임
매주 요일을 정해 모각코(모여서 각자 코딩)을 진행해 개발을 완료
다중 서버 JWT - Base64 인코딩 에러를 해결하고 공유 : SpringBoot로 개발한 서버에서 로그인해 토큰을 발급받고 FastAPI로 해당 토큰을 통해 사용자 정보를 받아와야 하는 상황해서 Invalid Signature 에러 발생 ㄴ 문자를 OS마다 바이너리로 바꾸는데 바꾸는 방법이 다를 수 있기 때문에 Secret Key를 Base64로 인코딩해야 함