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에 추가
코드 리팩토링
도메인별로 분류하고 중복 코드를 메서드화하는 방향으로 코드 리팩토링을 통해 이해도를 높임