주문상태 동시성 처리
·
Project/Spring
글을 쓰게 된 배경톰캣의 멀티쓰레드 방식을 공부하던 중 멀티쓰레드 환경에서 동시성처리에 대한 부분을 학습했는데, 문득 지금 진행하고 있는 프로젝트의 주문 프로세스에서 동시성 문제가 발생할 수 있다는 것을 깨달았다. 주문 상태를 처리하는 김에 동시성 처리도 함께 하는 것이 좋다고 생각해서 주문 프로세스에 대한 나의 고민을 담았다.목차현재 주문 프로세스에서 주문상태 문제현재 주문 프로세스에서 주문상태 문제현재는 사용자나 공장의 api 요청에 따라 주문 상태가 변경된다.사용자가 결제를 하면 결제대기 -> 결제 완료 상태가 되고 공장이 주문 거절을 하면 제작대기 -> 제작 거절 상태가 된다.만약에 사용자가 결제를 취소하는 것과 동시에 공장이 제작을 시작하면 하나의 동작이 덮여버리는 문제가 발생한다.또한, 공장이..
엔티티 DTO 변환 위치
·
Project/Spring
이 글을 쓰게된 배경프로젝트를 진행하다보니 문득 서비스 계층의 절반이 엔티티를 DTO로 변환하는 코드인 것이 보여서 이걸 이대로 두는 것이 맞는지 다른 사람들은 어떻게 하고 있는건지 더 좋은 방법은 없는건지 궁금해 져서 알아보는 겸 이 글을 작성했습니다. 컨트롤러 vs 서비스인터넷 검색을 해본 결과 사람들은 주로 DTO 변환을 컨트롤러 계층 vs 서비스 계층 으로 두고 의견이 많이 갈렸습니다.저는 컨트롤러 계층에서 DTO 변환을 한다는 건 생각도 못했기 때문에 신선했습니다.DDD 4계층에 따르면 컨트롤러는 사용자에게 UI를 제공하는 역할이 컨트롤러의 역할입니다. DTO가 사용자에게 어떤 데이터를 보여줄 지 결정하는 것이기 때문에 위 원칙에 따르면 컨트롤러에 있는 것이 더 바람직해 보입니다. 서비스 계층은..
Spring Security 필터에서 발생한 인증/인가 예외 처리하는 방법
·
Project/Spring
이 글을 쓰게 된 배경개인 프로젝트를 진행하면서 처음에는 프로젝트를 빠르게 완성하기 위해서 jwt 토큰에 신경을 못썼지만 추후에 리팩토링 하면서 발생한 과정에 대한 내용입니다. 다룰 내용문제이유필터 내부에서 예외 처리핸들러를 이용해 예외 처리정리문제사용자의 액세스 토큰이 만료되면 리프레시 토큰을 이용해서 재발급 받습니다. 근데 리프레시 토큰도 만료되면? 사용자는 다시 로그인을 해야합니다. 그러기 위해서 리프레시 토큰도 만료된 사용자가 접근을 시도할 때 로그인 화면으로 보내주는 로직이 필요합니다. 이 로직은 스프링 시큐리티의 필터에서 토큰을 검증할 때 처리되어야 합니다. 다음은 리프레시 액세스 토큰을 재발급 하는 메소드 입니다. 여기서 리프레시 토큰도 만료되었다면 사용자를 로그인 화면으로 보내주면 됩니다..
커넥션 풀 vs 복잡한 로직 시간 비용
·
Project/Spring
이 글을 쓰게 된 배경최근에 팀원들과 테이블 설계 과정에서 의견 갈등이 생겨 긴 시간 회의를 했습니다. 테이블 설계를 위해 여러가지 의견을 나눴는데 그 중에 서로 다른 견해를 가지고 있었던 것이 있었습니다. 그것은 바로 하나의 커넥션 비용과 여러개의 복잡한 로직 중 어느것이 비용이 더 큰가 에 대한 내용이었습니다. 저는 그래도 복잡한 로직이 100개 1000개가 넘어가면 복잡한 로직의 비용이 더 비쌀 것이라는 입장이었지만 팀원의 의견은 달랐습니다. 회의에서는 유지보수성의 이유로 결정을 내렸지만 저는 개인적으로 이 것이 궁금해서 이 글을 작성하게 되었습니다. 다룰 내용커넥션 처리 과정복잡합 로직 계산 비용결론실제 테스트커넥션 처리 과정커넥션 비용 계산에 앞서 커넥션이 어떻게 처리되는지 알고 있어야 어느 부..
연관관계 매핑이 꼭 필요한가
·
Project/Spring
이 글을 쓰게 된 배경최근에 현업에서는 연관관계 매핑을 지양한다는 말을 들었습니다. 저는 처음 백엔드 공부를 시작할 때 JPA부터 시작했기 때문에 당연히 모든 사람들이 연관관계 매핑을 사용한다고 생각했고, 다른 방법에 대해서 생각해본 적이 없었습니다. 지금까지 아무런 의심없이 연관관계 매핑을 사용하고 있었던 제 과거를 반성하는 의미에서 이 글을 쓰며 연관관계 매핑의 트레이드오프에 대해서 알아보겠습니다.추후에 프로젝트에서 어떤 방법을 채택했는지에 대해서도 적겠습니다.다룰 내용연관관계 매핑이란연관관계 매핑의 장점연관관계 매핑의 문제점연관관계를 사용하지 않을 때채택 과정연관관계 매핑이란?연관관계 매핑이란 객체와 객체 간의 연결이 필요할 때 두 객체간의 관계에 맞게 매핑해 주는 것을 말합니다. 객체지향에서는 두..