티스토리 뷰
[문서를 작성하는 방법]
우리가 주니어 때 많은 글을 쓰지만 그것을 다시 보는 사람은 많지 않다.
다시 보는 글이 되려면 글이 컴팩트 해야 하고, 제목도 목적에 맞게 쓴다.
글을 툴처럼 만들어야 한다.
[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를 호출해야 한다.
'항해플러스백엔드' 카테고리의 다른 글
[프로젝트 회고] 콘서트 예약시스템 개발 회고 (0) | 2024.04.18 |
---|---|
[플러스백엔드] 4주차 회고 (0) | 2024.04.13 |
[플러스백엔드] 지난 3주간의 회고 (1) | 2024.04.06 |
[플러스백엔드] 4주차 발제(하헌우 멘토님) (0) | 2024.04.06 |
[플러스백엔드] 3주차 배운 점( 정리하기) (0) | 2024.04.06 |
- Total
- Today
- Yesterday
- front
- 폭포수
- pop_back
- resize
- 부동산공부
- 재테크공부
- 월부닷컴
- 항해솔직후기
- 깃
- push_back
- Inception
- 파라메터
- 관계대수
- 2023년
- 열반스쿨기초반
- ```````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````
- 인셉션
- 유즈케이스
- 도커
- 월급쟁이부자들
- 개발자 회고
- docker
- GIT
- 내년은 빡세게!!
- Use case
- 깃허브
- github
- 항해플러스후기
- 항해플러스백엔드
- Spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |