오늘의 공부
오늘은 실시간 경매 사이트 프로젝트 MVP 기능인 아이디어 경매글 전체, 단건 조회를 맡고 개발하였다.
테스트코드도 같이 작성하여 이번에 한번더 Mock 에 대하여 찾아보고 공부하였다. 또한
Docker Hub VS AWS ECR 에 대해 논의를 한적이 있다. 개인적으로는 Docker Hub 를 써봤지만 이번에 처음으로 AWS ECR 에 적용하기로 하였다. 이유는 우리 프로젝트에서는 AWS 말고 다른 플랫폼 이용할 이유가 없었기 때문에 AWS 의 CloudWatch 로 로그와 이벤트를 모니터링을 한번에 할수 있다는 장점을 가지고 이야기를 하였다. 서로 의견을 나눠본 결과 AWS ECR 을 쓰자는 의견이 나와 Docker img 를 ECR 에 저장하는 공간으로 쓰기로 하였다. 이후에는 컨테이너가 나뉘어 진다면 관련 회의를 진행하겠지만. K8S 보다는 ECS 를 쓸것 같다. 자세한 내용은 정해지면 더 작성하겠다.
+ 추가적인 기능 ( HttpStatusCodeException )
저희 프로젝트의 예외 처리 담당을 제가 맡고 기능 개발을 하였는데 처음에는 Custom 한 Exception 을 사용하였다.
아래의 코드를 첨부 하겠다.
public abstract class ErrorCustomRuntimeException extends RuntimeException {
public abstract HttpStatus getHttpStatus();
public abstract String getMsg();
}
@Getter
@RequiredArgsConstructor
public enum IdeaFindErrorCode {
KEYWORD_CATEGORY_SAME(HttpStatus.BAD_REQUEST, "전체조회 일때는 keyword 와 category 가 동시에 들어올수 없습니다."),
IDEA_EMPTY(HttpStatus.BAD_REQUEST, "아이디어 게시글이 존재하지 않습니다.")
;
private final HttpStatus status;
private final String msg;
}
@RequiredArgsConstructor
public class IdeaFindExceptionCustom extends ErrorCustomRuntimeException {
private final IdeaFindErrorCode ideaFindErrorCode;
@Override
public HttpStatus getHttpStatus() {
return ideaFindErrorCode.getStatus();
}
@Override
public String getMsg() {
return ideaFindErrorCode.getMsg();
}
}
@Slf4j(topic = "에러 처리")
@RestControllerAdvice
public class CustomExceptionHandler {
@ExceptionHandler(ErrorCustomRuntimeException.class)
public ResponseEntity errorHandler(ErrorCustomRuntimeException e){
log.error(e.getMsg());
return ResponseEntity.status(e.getHttpStatus()).build();
}
}
위와 같은 구조로 작성하였다. 하지만 멘토님께서 이야기 하시길 HttpStatusCodeException 가 있다. 라고 이야기하시고 찾아보았다. 그런데 이럴수가... HttpStatusCodeException 가 우리가 원하는것이 들어가 있었다. 하지만, 여기서 의문이 들었다. 과연 구현된걸 사용하도 되지만 우리 프로젝트에 맞도록 구현 하는게 좋지 않을까? 왜냐하면 HttpStatusCodeException 으로 구현을 하자면 불편한 사항이 조금 생겼다. ( 성능 이슈 X ) 그래서 관련되어 팀원들과 회의하였지만 그래도 구현되어 있는것을 쓰는게 좋지 않겠나. Spring 프레임워크에서 이렇게 개발을 하였는데 라고 의견이 나와 나는 설득을 당해 HttpStatusCodeException 를 쓰기로 하였다. 그래도 아직은 의문이다. 과연 커스텀 해서 쓰는게 좋은지 아니면 있는 라이브러리를 이용하는게 좋은지. 상황에 따라 바뀔수도 있겠지만, 이번 상황에서는 아직 잘 모르겠다..
내일은?
채팅 기능을 맡게되어 채팅 기능 개발과 테스트코드를 어떻게 작성해야 하는지에 대해 알아보고 개발 하여야 겠다.
또한 전체 채팅이고, 저장할 공간은 PostgreSQL 이기 때문에 성능 이슈가 없도록 코드 신중하게 개발하여야겠다.
'TIL' 카테고리의 다른 글
2023.08.11 (0) | 2023.08.11 |
---|---|
2023.08.10 (0) | 2023.08.11 |
2023.07.29 (0) | 2023.07.29 |
2023.07.12 - 207만건 데이터 조회 (1) (0) | 2023.07.12 |
2023.07.06 (0) | 2023.07.06 |