안녕하세요 펀코 서비스 기능 시연 시작해보겠습니다. 우선 사이트 홍보역할을 하는 랜딩페이지를 구성하였습니다. 그리고 오어스투와 jwt를 이용해 간편로그인을 구현하였습니다. 마이페이지를 가게되면 이름 및 한 줄 소개를 수정할 수 있습니다.
거래소
시세
우측 창을 보시면 웹소켓을 사용하여 실시간 시세를 받아옵니다.
검색창에서 코인명을 필터링을 할 수 있습니다.
별표를 클릭해서 관심코인을 설정할 수 있습니다. 이 때 무분별한 클릭 방지를 위해 redis를 사용해서 캐싱을 하여 처리하였습니다.
차트입니다. 일봉 주봉 월봉 1분봉 5분봉 10분봉 별 그래프를 확인할 수 있습니다. ApexChart lib를 사용하여 실시간 차트 구현하였습니다.
호가창입니다. 이 역시 웹소켓을 통해 실시간 호가 데이터를 받아오고있습니다.
거래
서버에서 실시간 시세로 거래 처리
시장가에 바로 매도할 수 있습니다.
체결된 거래내역 조회입니다.
미체결된 거래는 중간에 취소할 수 있습니다.
예약거래로 서버에서 웹소켓으로 실시간 시세를 감지하여 거래를 처리합니다. 이 때 동시성처리를 위해 Concurrent HashMap을 사용했고, 거래 감지 알고리즘 시간복잡도 최적화를 위해 우선순위 큐를 활용하여 거래 우선순위가 가장 높은 데이터만 보고 판단할 수 있기 때문에 거래가 되지 않을 데이터들은 시간복잡도 O(1)로 처리될 수 있도록 구현하였습니다.
투자내역
보유자산의 시세가 실시간으로 바뀌기 때문에 서버에서 개수를 반환해주고 프론트에서 현재 시세를 기준으로 자산 가치를 조회할 수 있습니다.
투자손익
주기적인 대용량 데이터 처리 작업을 효율적으로 하기 위해 Spring Batch를 통해 작업을 처리
자산변동내역
미체결내역
미체결 거래내역은 거래소에서 본 것을 통합 자산으로 내역을 보여줍니다. 취소도 가능합니다.
투자내역 → 팔로우
다음은 팔로우 투자 기능인데요. 내가 투자한 돈이 팔로우한 유저 거래에 따라 실시간으로 자동 투자됩니다. 그리고 그 투자 현황들을 조회할 수 있고 통계치도 볼 수 있습니다. 각각의 투자 자산에 대해 포트폴리오를 볼 수 있고 실시간 거래내역을 확인할 수 있습니다. 정산하기를 통해 현재 거래를 끝내고 3% 수수료를 제외한 거래 수익을 얻을 수 있습니다.
다음은 랭킹 기능입니다. 유저들의 투자 지표를 통해서 랭킹으로 순위를 볼 수 있습니다. 총 자산순, 나한테 투자를 하고 있는 금액의 합인 총 팔로워 금액 순으로 볼 수 있습니다. 랭킹의 총 자산은 실시간으로 바뀌는 데이터이므로 redis를 이용해 1분 단위로 캐싱하여 처리했습니다. 맘에 드는 유저를 클릭하여 유저 페이지에서 투자정보를 볼 수 있고, 팔로우 투자를 할 수 있습니다. 다음의 약관을 읽고 동의를 하면 원하는 금액을 적고 투자할 수 있습니다. 팔로우한 유저는 포트폴리오를 확인할 수 있습니다. 팔로우 받은 유저는 방금과 같이 알림을 받게 됩니다.
네비게이션바에서 알림 기능을 보겠습니다.
종모양 아이콘을 눌러 알림 히스토리를 조회할 수 있습니다.
거래소의 예약 거래 체결 알림도 실시간으로 확인할 수 있습니다.
실시간 알림을 구현하기 위해 단방향 통신인 server sent event를 활용해 구현하였습니다.
팔로우받았거나 팔로워 정산이 이뤄졌다면 알림을 받을 수 있습니다.