본문 바로가기

spring boot

(2)
[Spring AOP] Custom AOP와 @Transactional Order에 관하여 최근 특정 요청이 중복되어 처리되는 이슈가 발생했다. 어떤 요청의 중복 처리 요청은 우선적으로 클라이언트에서 막아주면 좋지만, 서버는 모든 상황을 대비해야 하기에 이를 사전에 대비해야한다. 배경우리팀은 특정 요청의 중복처리를 방지하기 위해 Redisson 분산락을 활용한다. 서비스 특성상, 어떤 로직이 처리되는 도중 들어오는 중복된 요청은 무시해도 되는 상황이 많기 때문에 다음과 같은 속성을 이용한다. RLock lock = redissonClient.getLock(key);lock.tryLock(0, 60L, TimeUnit.SECONDS)* wait = 0 (이미 다른 곳에서 해당 lock을 점유했다면 대기하지 않고 false 반환)* lease = 60 (lock을 획득한 이후엔 60초 이후 자동 ..
Codemap 프로젝트 (소프트웨어 마에스트로 13기) - 아키텍처 구축 현재 소프트웨어 마에스트로에서 진행하고 있는 개발 프로젝트의 아키텍처에 대해 포스팅하려한다. 우리는 크게 세 가지 부분으로 나누었다. 1. Frontend 2. Main Server(BE) 3. Judge Server 프론트는 한 팀원이 Vue.js 프레임워크를 이용해 맡고 있고, 나는 메인 서버 개발 그리고 나머지 한 팀원은 채점서버를 구현하고 나와 같이 메인 서버 개발을 같이하고 있다. 아키텍처 구성 최종 아키텍처는 위와 같다. 앞으로 구성들을 하나하나 추가해보며 어떻게 전체 아키텍처가 구성되었는지 알아보자. 1. 메인서버 메인서버는 Spring Boot 프레임워크를 이용했다. MVC패턴을 사용하려고 했으나 한 팀원이 프론트를 전담하고 있기 때문에 굳이 View를 사용하지 않고 REST API 서버만..