트랜잭션

· 스프링
최근에 처음으로 기술 면접을 경험했다. 프로젝트에 관한 질문이 많았는데 당시에 비즈니스 로직 중 비동기 처리를 해야 했었다. DB에 접근하는 로직이었기에 @Transactional과 @Async를 함께 적용시켜 사용했다. 이에 대해 면접관이 물었다. @Async와 @Transactional이 내부에서 어떻게 동작하는지 아시나요? 덧붙여서 상상력을 발휘해도 좋다고 했다. 정확하게 AOP 내부 구현을 몰랐던 나는 다음과 같이 대답했다. 아마 트랜잭션 관련 AOP 프록시가 부가 기능을 수행한 뒤 비동기 관련 AOP 프록시가 비동기 부가 기능을 넣고 마지막으로 target을 호출할 것 같습니다. 내부적으로 순서가 있을 것 같은데 반대의 순서도 상관없을 것 같습니다. 정확히 저렇게 말하진 않았겠지만 저런 흐름이었..
새로운 기능 추가에 대한 이야기 스모디 서비스는 사람들에게 동기부여를 해주는 서비스로, 챌린지에 도전하여 인증을 하는 것이 주 콘텐츠이다. 단순한 인증을 넘어, 조금 더 사용자들에게 동기부여를 해주기 위해 랭킹에 관한 기능을 추가하기로 했다. 랭킹 로직을 이벤트로 처리 회원이 챌린지를 인증하면 주간 랭킹 점수에 반영 된다.라는 기능을 추가하려고 한다. 챌린지 인증 → CycleService.increaseProgress() 랭킹 관련 로직 → RankingService 랭킹 로직과 챌린지 로직이 강한 결합을 갖는 것을 막고 랭킹에 장애가 발생해도 챌린지 인증은 정상 동작시키기 위하여 이벤트(@TransactionalEventListener) + 비동기 처리(@Async)를 하기로 선택했다. ( Cycle..
더즈
'트랜잭션' 태그의 글 목록