티스토리 뷰

[문서를 작성하는 방법]

우리가 주니어 때 많은 글을 쓰지만 그것을 다시 보는 사람은 많지 않다.

다시 보는 글이 되려면 글이 컴팩트 해야 하고, 제목도 목적에 맞게 쓴다.

글을 툴처럼 만들어야 한다.

 

[Loggin & Exception]

로그의 중요성

적절한 지점에 로그를 설정해놔야 운영상황에서 발생하는 에러나, 발생한 문제에 대해서 훌륭한 단서를 제공한다.

 

그럼 로그는 어느 지점에 달아야 하는가?

1. Request/Response를 받는 지점

입력값, 출력값이 최초에 어떤 값이 들어왔는지 알아야 하기 때문이다. Request 객체를 로깅하려면 Controller 부근에서 로깅처리 해야 입력값을 볼 수 있다. 그리고 Response의 경우도 Controller단에서 로깅처리를 해야 어떤 값으로 나갔는지 알수가 있다.

 

2. Exception이 발생하는 지점

익셉션이 발생하는 지점에 로깅처리를 하면 해당 사용자의 요청이 어떤 이유로 오류가 발생했는지 알 수 있기 때문이다.

 

결론

로깅이 많다고 좋은 것은 아니다. 관리 포인트가 많아진다. 그래서 Request/Response를 알 수 있는 지점 + 사용자의 요청을 Trace 하는지점(Exception)이 발생하는 지점에 로깅처리 하는게 효율적이다.

 

익셉션 처리방법

 

익셉션의 중요성 : 익셉션 처리를 제대로 하지 못하면 어플리케이션 Crash가 발생할 수도 있다.

 

익셉션 처리 : 예외처리가 어플리케이션 내에 산재되어 있다면 매번 해당 오류를 찾기 위해서 어플리케이션 로직들을 뒤져야 한다. 그래서 예외처리를 한 곳에서 관리할 수 있도록 해서, 해당 클래스를 보면 익셉션 메시지를 모두 확인 가능하도록!

 

그리고 특정 도메인 내에서만 발생하는 익셉션처리라면 이 또한 응집의 대상이 된다.

 

Custom exception에 걸리면 보통 비즈니스 익셉션

HttpStatus는 200을 넣는 것을 선호한다.

요청이 서버까지 도착했다는 것은 무사히 서버에 도착했다는 것이기 때문에 HTTP status code를 200을 넣어준다.

 

 

 

[공개 Q&A]

1. DB 격리 수준

주니어 레벨이라면 DB 격리수준은 반드시 알아야 한다.

 

2. 레포지토리에서 에러를 throw하는게 좋은가?

답변 : 레포지토리에서 에러를 throw 하는건 비추

findUser 메서드 한 이후에 서비스 로직에서 null이면 그 때 에러를 throw 해준다.

 

3. 레포지토리에서 null처리는 어떻게 해야하나?

코틀린에서는 자동으로 nullable을 해준다.

자바에서는 Optional을 사용하기.

 

4. 

 

 

5. 좌석 예약을 할 때 ReservationManager에서 다른 도메인의 Manager를 참조합니다. 그 이유는 UserManager로 사용자 검증, SeatManager로 좌석 검증 등등. 이렇게 ReservationManager에서 타도메인 Manager를 의존성 주입을 받아서 처리하는 구조가 맞는지 문의드립니다

@Component
@RequiredArgsConstructor
@Slf4j
public class ReservationManager {

  private final ReservationStore reservationStore;
  private final ReservationReader reservationReader;
  private final ReservationValidator reservationValidator;
  private final UserManager userManager;
  private final ConcertManager concertManager;
  private final SeatManager seatManager;

 

코치님 답변 : 이렇게 하면 안된다. 강결합이 되어서 하면 안된다. ReservationManager면 reservation에 관련된 역할만 해야 한다.

타 도메인을 호출하려면 그보다 상위 계층에서 해야한다. UseCase 레벨에서 Manager를 호출해야 한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글