[최종 프로젝트 - 모의 투자 서비스] RabbitMQ 를 이용한 실시간 지정가 체결
·
프로젝트/프로젝트 회고
이번 프로젝트에서 모의 투자 서비스의 성능을 크게 좌우하는 핵심 기능은 "주문 체결"이다. 기존에는 스케줄러 기반의 주기적 체결 방식으로 구현되어 있었지만, 실시간 가격 변화에 즉시 반응하지 못해 성능과 트래픽 측면에서 한계가 있었다. 그래서 이전에 작성한 블로그를 참고하여 기술을 적용할려고 한다. ✅ 1. 기존 구조의 문제점모든 종목의 주문을 일정 주기로 전체 스캔(Schedule) → 리소스 낭비조건에 맞지 않는 주문도 매번 평가 → 불필요한 쿼리/계산 발생실시간 체결이 어려움 → 사용자 반응성 저하가격 급등락 시 스케줄러 병목 → 성능 저하 📌기존 코드스케줄러를 이용해 1초마다 주문완료된 주문건과 해당 종목의 가격을 redis 에서 불러와 비교함불필요한 쿼리문 발생@Scheduled(fixedR..
[최종 프로젝트 - 현재 시세를 반영한 모의 투자 서비스] 주문 도메인 성능 개선(Redisson 분산락 적용)
·
프로젝트/프로젝트 회고
이번 프로젝트에서 모의 투자 서비스의 핵심 기능인 "주문 체결"에 대해 맡았다. 실시간 시세를 기반으로 여러 사용자가 동시에 시장가 매수를 시도할 경우, 잔고 차감 및 보유 종목 업데이트가 정확히 반영되지 않으면 데이터 정합성 문제가 발생한다. 이 문제를 해결하기 위해, Redisson 기반의 분산락을 커스텀 어노테이션 방식으로 도입하였다. ✅ TradeService에 Redisson 락 적용하기📌 문제 상황다수의 유저가 동시에 동일한 계좌로 매수 주문을 보낼 경우, 잔고 차감 및 보유 종목 수량 증가가 동시성 문제가 발생하면서 데이터가 꼬여버렸다. 동시성 제어에 대해 이론적으로 다룬 글이 있어 해당 글을 참고하였다.https://computerreport.tistory.com/154 [Spring..
[최종 프로젝트 - 현재 시세를 반영한 모의 투자 서비스] 5분 브리핑
·
프로젝트/프로젝트 회고
✅ 구현한 기능📌 주문 관리: 지정가(Limit) 및 시장가(Market) 매수/매도 주문지정가 매수/매도: 사용자가 원하는 가격과 수량으로 주문 생성시장가 매수/매도: 현재 시장 가격으로 즉시 주문 실행주문 조회 및 취소: 계좌별 주문 내역 조회 및 취소 기능 제공 ✅ 주요 로직지정가 주문 (LimitOrderService)계좌 유효성 검사 및 잔액 확인지정가 × 수량 → 총액 계산 및 잔액 차감주문 객체 생성 및 저장, 응답 DTO 반환시장가 주문 (MarketOrderService)계좌 및 주식 조회 후 시장 가격으로 즉시 주문 처리보유 자산 수량 또는 계좌 잔액 업데이트주문 조회 (OrderService)QueryDSL 기반 커서 페이징으로 효율적 조회계좌 ID, 주문 유형, 상태, 날짜 필터링..
[최종 프로젝트 - 현재 시세를 반영한 모의 투자 서비스] S.A 작성
·
프로젝트/프로젝트 회고
드디어 마지막 최종 프로젝트를 시작했다. 우선 예전부터 금융IT 분야에 관심이 많았기 때문에 최종 프로젝트는 꼭 금융쪽으로 해보고 싶었다.그래서 처음에는 뱅킹시스템 (계좌,모임통장,이체,보험) 등의 서비스를 주제로 선정했었지만 실제 서비스를 배포하고 운영도 해보고싶었기에, 다른 주제로 선정하였다. 결론적으로, 금융시스템의 아키텍처를 따르면서 법적인 제약도 덜 받을 수 있는 모의 투자 서비스를 주제로 선정하였다.최종프로젝트인 만큼 전체적인 프로젝트의 흐름과 이해도를 높이고 팀원들과의 협업을 중요하시 하기에 팀장을 맡아 이번 프로젝트를 진행하게 되었다. ✅ 개발 일정2025.05.27~2025.07.07 👥 TEAM 소개김지환👑 리더ISTJhttps://computerreport.tistory.com/..