SpringBoot - @Transactional 정리하기 - 2
·
SpringBoot
🔎 본 글을 읽기 전 해당 게시글을 먼저 읽고 오시는 것을 추천드립니다. SpringBoot - @Transcational 정리하기들어가며이번 게시글에서는 Transactional 어노테이션을 왜 사용하는지에 대해 정리해볼 것이다. 🤔왜 Transactional을 붙여야 할까?제일 처음 들었던 생각은 Transactional 어노테이션을 왜 붙여야 할까?tentenball.tistory.com Introduce지난 게시글에서는 Transactional 어노테이션을 사용하는 이유에 대해서 살펴보았다. 프로젝트에서 발생했던 Transactional 이슈에 대해 알아보고 이에 관련된 Transactional들의 옵션에 대해서 알아볼 것이다. ISSUE현재 진행중인 프로젝트에는 장소를 예약하기 위한 결제 기..
SpringBoot - @Transcational 정리하기
·
SpringBoot
들어가며이번 게시글에서는 Transactional 어노테이션을 왜 사용하는지에 대해 정리해볼 것이다. 🤔왜 Transactional을 붙여야 할까?제일 처음 들었던 생각은 Transactional 어노테이션을 왜 붙여야 할까? 에서 시작되었다.그럼 Transactional을 안붙이면 어떻게 될지에 대해서 먼저 테스트를 해보았다.public class TestService { private final UserService userService; private final PostService postService; public void test() { log.info("test 메서드 실행 시작"); User user = userService.append(); ..
스프링부트 스케줄링, 재시도 정책 설계하기 - 2
·
SpringBoot
들어가며지난 게시글에서는 스케줄링 재시도 시 사용하는 Spring retry에 대해 간단하게 알아보았다. 이번 게시글에서는 현 프로젝트에 적용할 스케줄링 재시도 정책을 설계한 과정에 대해 살펴볼 것이다. 스케줄링을 사용하는 작업들의 종류먼저 현 프로젝트에서 사용하는 스케줄링 작업이 어떤 것이 있는지부터 알아보자. 1. 경기 인원 미달 시 환불처리2. 종료된 경기 완료처리3. 주기적으로 경기 생성4. 예약 슬롯 생성5. 기상청 API를 통한 일기예보 확인 후 우천 상태로 변경 작업을 크게 5가지로 나눌 수 있고, 생각해보니 위 5가지의 작업을 2가지 유형으로 나눌 수 있었다. 1. 외부 API과 통신이 필요한 스케줄링 작업2. 외부 API와 통신이 필요없는 스케줄링 작업  두가지 유형으로 나눈 이유는 다음..
스프링부트 스케줄링, 실패한다고 끝이 아니다.. -1
·
SpringBoot
들어가며이번 프로젝트에서 스케줄링이라는 것에 대해 처음 접하게 되었다. 특정 주기마다 자동으로 코드가 실행되게 된다니 정말 신기한 기술이었다. 하지만 스케줄링에 대해 접하고 코드를 구현할수록 이런 의문이 들었다.스케줄링 작업을 실패하면 어떻게 되는거지? 사실상 현재 프로젝트에서 스케줄링 작업 실패에 대해 이렇다 할 마땅한 조치를 취해두지 않은 상태이다. 최근에 소셜매치를 주기적으로 생성하는 스케줄링 작업을 하며 위의 고민이 더 와닿게 되었고, 이에 대해 글을 작성하게 되었다. Batch의 Skip과 retry사실 Spring Batch에 skip과 retry를 통해 스케줄링 작업을 재시도 할 수 있는 방법이 존재하긴 했다. 하지만 아직 Batch를 사용할 필요는 없어보였고 러닝커브 때문에 도입하지 않았다..