Transactional, AWS(EC2) 트러블슈팅

앞고기랑 소금·2024년 10월 10일

스파르타 TIL

목록 보기
40/43

Transactional

요청사항 : 매니저 등록과는 별개로 로그 테이블에는 항상 요청 로그가 남아야 해요.

  1. 문제
  • REQUIRES_NEW 옵션을 사용하여 트랜잭션을 분리하였지만 매니적 등록 실패하여 롤백시 로그도 같이 롤백된다.
  1. 정보 수집
  • REQUIRES_NEW 옵션은 기존 트랜잭션을 보류하고 새로운 트랜잭션을 생성한다.
  • 한 서비스 내에서 두 메서드가 같이 있다.
  1. 원인 추론
  • REQUIRES_NEW을 사용하는것은 맞다. 분리 전파 속성이기때문에 하나가 롤백되어도 같이 롤백 되지 않는다.
  • self-invocation 문제.
  1. 해결방안 결정
  • 메서드를 분리 시키기로 결정.
  1. 구현
  • 로그 저장 메서드를 로그 서비스 로 분리
  1. 결과
  • 매니저등록이 롤백 되어도 로그 저장은 됨.

self-invocation 문제
같은 클래스 내에서 자기 자신의 메서드를 호출하면 프록시를 거치지 않아서 AOP 가 적용되지 않는다.
같은 클래스 내에서 자기 자신의 메서드를 호출하면 프록시를 거치지 않아서 AOP 가 적용되지 않는다.

AWS EC2

요청사항 : EC2 인스턴스에서 어플리케이션을 실행하세요

  1. 문제
  • 로컬에서 정상 작동 되는 어플리케이션을 github에 올리고 EC2(ubuntu)에서 git clone하고 .properties를 넣어줬지만.
    환경변수를 잘 못 넣었다고 에러발생.
  1. 정보 수집
  • 환경변수 오타 확인.
  • 환경변수 세팅하는 위치 확인.
  • .properties 위치 확인.
  1. 원인 추론
  • 환경변수에 오타가 있어서 .
  • 환경변수를 ubuntu 에 세팅해서 에러가 난것같다.
  • properties 위치가 src/main/resources 위치가 아닌 src/resources에 있어서 에러가 났다.
  1. 해결방안 결정
  • 오타 제대로 변경
  • ubuntu/spring-plus 에 환경변수 세팅.
  • .properties 위치 변경
  1. 구현
  • 오타 변경 -> 여전히 에러
  • 환경변수 세팅 -> ubuntu가 맞음.
  • .properties 위치가 문제였다.
  1. 결과
  • .properties 위치를 제대로 잘 보고 넣어야하는데

0개의 댓글