[트러블슈팅] Redisson 분산락과 트랜잭션 적용 시점 충돌(AOP 를 활용한 해결)
·
프로젝트/트러블슈팅
intro프로젝트를 진행하며 발생한 문제 상황과 해결 과정들을 상세히 기록하고 추후에 같은 문제가 발생 했을때 빠르게 문제 해결하기 위해 트러블 슈팅을 정리할려고 한다.기록하는 습관을 기르기 위해 프로젝트 기간동안 꾸준히 작성할 것 이다.처음에는 @DistributedLock과 @Transactional을 함께 사용하면 락과 트랜잭션이 동시에 작동해 정합성이 보장될 줄 알았다. 하지만 실제 테스트 과정에서 다음과 같은 문제가 발생했다.⚠️ 문제 상황 발생@Around("@annotation(distributedLock)")public Object lock(ProceedingJoinPoint joinPoint, DistributedLock distributedLock) throws Throwable { ..
[Spring]동시성 제어(Redisson)
·
Spring
5분 브리핑을 진행하면서 다수의 멀티 스레드로 동시 주문을 실행하면 데이터 정합성 문제가 발생하는 것을 다루었고 본격적으로 성능 개선을 위해 분산 락을 적용해볼려고한다.✅분산 환경에서 동시성 제어는 왜 필요한가?여러 요청이 공유 자원을 동시에 접근할 때, 분산된 DB나 서버 간 동기화 속도 차이로 인해 데이터 정합성 문제가 발생할 수 있다.예를 들어, 모의투자 시스템에서 동일한 계좌가 여러 주문을 동시에 처리하는 경우, 잔고 감소 또는 보유 주식 수량 차감이 정확하게 이루어지지 않아 잘못된 체결이나 정합성 오류가 발생할 수 있다. ✅분산락 없이 발생하는 문제점📌 하나의 계좌가 동시에 두 개의 매도 주문 처리 시도 기대 결과: 보유 주식 1개씩 두 번 매도되어 총 2개 차감실제 결과: 보유 주식이 1개..
[최종 프로젝트 - 현재 시세를 반영한 모의 투자 서비스] 5분 브리핑
·
프로젝트/프로젝트 회고
✅ 구현한 기능📌 주문 관리: 지정가(Limit) 및 시장가(Market) 매수/매도 주문지정가 매수/매도: 사용자가 원하는 가격과 수량으로 주문 생성시장가 매수/매도: 현재 시장 가격으로 즉시 주문 실행주문 조회 및 취소: 계좌별 주문 내역 조회 및 취소 기능 제공 ✅ 주요 로직지정가 주문 (LimitOrderService)계좌 유효성 검사 및 잔액 확인지정가 × 수량 → 총액 계산 및 잔액 차감주문 객체 생성 및 저장, 응답 DTO 반환시장가 주문 (MarketOrderService)계좌 및 주식 조회 후 시장 가격으로 즉시 주문 처리보유 자산 수량 또는 계좌 잔액 업데이트주문 조회 (OrderService)QueryDSL 기반 커서 페이징으로 효율적 조회계좌 ID, 주문 유형, 상태, 날짜 필터링..
[최종 프로젝트 - 현재 시세를 반영한 모의 투자 서비스] S.A 작성
·
프로젝트/프로젝트 회고
드디어 마지막 최종 프로젝트를 시작했다. 우선 예전부터 금융IT 분야에 관심이 많았기 때문에 최종 프로젝트는 꼭 금융쪽으로 해보고 싶었다.그래서 처음에는 뱅킹시스템 (계좌,모임통장,이체,보험) 등의 서비스를 주제로 선정했었지만 실제 서비스를 배포하고 운영도 해보고싶었기에, 다른 주제로 선정하였다. 결론적으로, 금융시스템의 아키텍처를 따르면서 법적인 제약도 덜 받을 수 있는 모의 투자 서비스를 주제로 선정하였다.최종프로젝트인 만큼 전체적인 프로젝트의 흐름과 이해도를 높이고 팀원들과의 협업을 중요하시 하기에 팀장을 맡아 이번 프로젝트를 진행하게 되었다. ✅ 개발 일정2025.05.27~2025.07.07 👥 TEAM 소개김지환👑 리더ISTJhttps://computerreport.tistory.com/..