본문 바로가기

전체 글11

코인 모의투자 프로젝트(5) - 퍼포먼스 향상 - 2 지난 포스팅에서 Insert를 JDBC를 이용하여 bulk Insert를 진행한 결과 2배의 성능 향상을 이끌어낼 수 있었다.좀 더 쿼리를 튜닝해서 할 수 있는 최대한의 퍼포먼스를 내보려고 한다! @Transactionalpublic void executeAsk(Trade trade) { List orders = orderRepository.findBidOrders(trade.getCode(), trade.getTradePrice()); List executions = new ArrayList(); for (Order order : orders) { BigDecimal executeAmount = orderService.updateOrder(trade, order); .. 2024. 4. 28.
코인 모의투자 프로젝트(4) - 퍼포먼스 향상 - 1 이 모의투자 프로젝트의 핵심은 유저의 주문, 그리고 Upbit로 받은 체결 목록으로 내 서버만의 체결을 내는 것이다. 1) 유저가 매수/매도 주문을 한다. 2) Upbit로 체결 목록을 받아서 유저의 주문을 체결한다. 예시로 Upbit로 매수 체결 데이터를 받았을 때 진행되는 로직을 작성해보겠다. 1) Upbit로부터 매수 체결 데이터를 받는다. 2) 조건에 맞는 주문들을 불러온다. 3) 각 주문마다 주문을 update하거나 delete한다. 4) 체결 내역을 insert 한다. 5) 유저 자금을 증가시킨다. 6) SSE로 유저에게 체결되었다는 알림을 보낸다. @Transactional public void executeAsk(Trade trade) { List orders = orderRepositor.. 2024. 4. 23.
코인 모의투자 프로젝트(3) - 유저와 웹소켓 연결 Upbit로부터 데이터를 받아왔으니, 유저에게 그 데이터를 그대로 던져줘야 한다. 유저가 WebSocket으로 특정 주소로 요청을 보내면 그 유저의 세션을 관리해서 데이터를 전송하는 방법이 있다. 하지만 유저의 세션을 관리하는게 영 귀찮은게 아니라서 나는 Stomp의 Pub/Sub 통신을 사용해서 구현할 계획이다. Pub/Sub 통신이란 발행자와 구독자가 있는 것으로, Stomp의 이 기능을 사용하면, 발행과 구독만 관리하면 편하게 구현할 수 있다! 일단 Configuration 코드부터 보자. @Configuration @EnableWebSocketMessageBroker public class WebSocketConfig implements WebSocketMessageBrokerConfigurer .. 2024. 4. 18.
코인 모의투자 프로젝트(2) - Upbit Websocket 연결 우선 Upbit로부터 데이터를 받아야 뭐든지 만들 수가 있다. 그런데 어떻게 유저의 요청 없이 서버가 시작되면 Upbit에 요청을 보낼 수 있을까? 1. main 메서드에 삽입한다. public static void main(String[] args) { SpringApplication.run(CoinSimulationMvcApplication.class, args); new Thread(() -> System.out.println("aaaaaaaaaaa")).start(); } 그럼 스프링 시작 후에 실행시킬 수 있다. 2. EventListener를 사용한다. @EventListener(ApplicationReadyEvent.class) public void upbitConnect() { System.. 2024. 4. 17.