전체 시스템 구성
(아키텍처 사진)
전체 시스템을 이루는 구성 요소는 FE 서버, BE 서버, DB 서버, Airflow 서버이다.
FE 서버는 사용자 인터페이스를 브라우저에 전달하고 NGINX를 통해 그 요청을 전달받는 역할을 한다. 또한, 사용자 요청에 따라 BE 서버와 통신하여 분석 결과나 복잡한 데이터를 얻어 사용자에게 보여준다
BE 서버는 FE 서버를 거친 사용자의 요청을 전달받아 DB 서버, Airflow 서버와 통신하여 요청에 대한 결과값을 가공하여 정해진 형태로 FE 서버에게 전달하는 역할을 한다. 또한, 사용자의 부적절한 요청 등에 대한 예외 처리를 담당한다
DB 서버는 사용자 정보, 주가 정보, 성향 정보 등 서비스 구성에 필요한 모든 정보들을 저장하고 관리한다. DBMS는 MySQL을 사용했다. MySQL은 비슷한 RDBMS인 PostgreSQL보다 더 엄격하지 않기 때문에 가벼운 서비스를 구성하기 좋고 사용이 편리하기 때문이다.
Airflow 서버는 주가 경향성 분석, 사용자 성향 분석 등 Python 환경에서 수행되는 분석을 BE 서버가 쉽게 요청하고 응답받을 수 있도록 하는 워크플로우 제공자 역할을 한다. 이 서버를 통해 Java로 이루어진 BE 서버에 Python으로 이루어진 분석을 환경에 독립적으로 통신할 수 있다.
사용자 시나리오
(해당 영상)을 통해 사용자 시나리오를 포함한 자세한 기능 설명을 볼 수 있다.
(Github README)를 통해 실제 서비스가 어떻게 동작하는지 GIF를 통해 자세하게 볼 수 있다.
초기 사용자는 비회원 메인 페이지에서 회원가입 페이지로 이동하여 서비스 회원 등록을 진행할 수 있다. 회원 등록에는 아이디, 비밀번호, 이메일 등이 필요하다.
회원 등록을 완료한 사용자는 비회원 메인 페이지에서 로그인을 통해 서비스에 진입할 수 있다.
서비스 초기 진입 시에는 메인 페이지에 성향 분석 결과도, 포트폴리오 구성 그래프도 나타나지 않는다. 초기 포트폴리오를 구성하기 위해 포트폴리오 페이지를 거쳐 ETF 목록 페이지로 이동할 수 있다.
ETF 목록 페이지에서는 상품 이름, 결과, 국가 별로 검색을 진행할 수 있다. 미국 상품은 달러 가격에 환율을 곱해 운화 단위로 바꾸어둔 상태이다.
ETF 목록 페이지의 각 항목에서는 상품의 주가의 대체적인 경향성과 운용사, 종가 등 간략한 정보를 보여준다. 이 정보들을 통해 자신이 원하는 ETF를 찾아 추가하기 버튼을 통해 ETF 세부정보 페이지로 이동할 수 있다.
ETF 세부정보 페이지에서는 지난 ETF 목록에서 사용자가 선택한 ETF 상품과, 이에 대해 상관 관계를 높게, 중간 정도, 낮게 가지는 3가지의 상품을 추천받을 수 있다. 각 추천 상품을 선택하면 그래프가 변화하여, 기준 상품과 추천 선택 상품의 주가 경향을 비교하고 이에 대한 헤지 예상 값을 확인할 수 있다.