두 번째 프로젝트가 시작되었다.
지난 프로젝트와 다르게, 커머스 사이트가 아니라 가상화폐를 거래하는 사이트를 클론하게 되었다.
지난 프로젝트와의 차이점, 프로젝트 진행 기간동안 나의 목표를 정리해 본다.
지난 프로젝트는 크롤링을 해서 각각 개별적이고 독립적인 데이터(상품이 있다면 상품의 이미지, 가격, 색상 등은 다른 상품에 영향을 주지 않음)를 데이터 베이스에 저장하였다. 그러나 가상화폐 거래는 상품=코인 이라고 했을 때, 코인들은 서로 영향을 주지 않지만 코인이 가지고 있는 속성들(시가, 종가, 고가 등)은 매도/매수 주문 내역을 기반으로 하기 때문에, 매도 매수 주문내역을 직접 생성해야 했다. 매도/매수 주문은 유저가 가지고 있는 코인/유저가 가지고 있는 돈에 따라 수량을 정해주어야 했고, 가격은 시작금액을 임의로 지정하고 그 시작금액의 일정 범위 내에서 거래를 하는 게 자연스럽기 때문에 이것도 로직으로 구현해야 했다.
정리하자면 순서는 아래와 같다.
거래가 자주 일어나야 했고, 고가/저가의 차이가 어느 정도 나야 레포트를 토대로 그래프를 작성하였을 때 보기 좋은 결과가 나올 수 있다. 그래서 거래가 자주 일어나게 하기 위해선 많은 사람이 최초가격과 큰 차이가 나지 않는 가격의 매도/매수가 일어나야 했고, 매도와 매수 주문의 가격이 서로 너무 범위가 다르면 거래가 잘 일어나지 않기 때문에 중간값을 찾아서 거래를 일으켜야 했다. 이를 위해 데이터를 n 번 갈아앞었고, 마음에 쏙 들지는 않아도 지금까지 만든 데이터를 쓰기로 했다. 유저는 무려 만명이고, 그 만명이 각각 두 건의 매도와 매수 주문을 걸어놓는데도, 1분동안 거래가 아얘 일어나지 않을때도 너무 많다. 정말 고통스럽다..
데이블 자체는 많지 않고 포린키로 연결된 것도 그렇게 복잡하지 않지만, 하나의 데이터를 생성하기 위한 로직이 너무나도 복잡하여 어려운 수학 문제를 1분동안 푼 것 같다.
데이터 구축한 것은 과거 데이터고, 우리는 실제로 작동하는 사이트를 만드는 것이기 때문에, 과거의 매도/매수 주문들을 만들어 준 이후에 새로운 매도와 매수 주문을 걸었을 때, 줄 선 매도/매수와 거래를 일으켜야 한다. 즉, 매도/매수 주문이 일어나는 request 한 건에 매도/매수 주문 생성, 거래 생성, 자산 변경, 보유 화폐 수량 변경이 연쇄적으로 일어나야 한다.
레포트도 request 없이 매 분 00초마다 자동으로 생성해주는 함수를 스케쥴러로 작성해서 자동화해야 한다.
외부에서 request 로 받는 요청은 결국 매도/매수밖에 없게 된다. 나머지는 전부 GET 으로 처리.
일주일 후에 후기로 뵙겠습니다.. 총총