본문 바로가기

분류 전체보기231

MSA & Eureka & FeignClient(OpenFeign) & CircuitBreaker(Hystrix & Resilience4J) 차례대로 알아보기 시리즈 (1) - MSA(MicroServiceArchitecture) 개념 정리 들어가며 이 글은 제목에서도 알 수 있듯이 MSA & Eureka & FeignClient(OpenFeign) & CircuitBreaker(Hystrix & Resilience4J) 순으로 개념과 설정방법 그리고 테스트 등의 결과와 해당 기술들을 테스트하며 겪었던 에러 해결 방법 등을 차례대로 정리하고 공유하기 위해 작성되었다. 원래부터 이렇게 차례대로 정리하려고 한것은 아니었고 FeignClient 통신을 테스트하다보니 꼬리에 꼬리를 물어 여기까지 오게 되었다. 나름 이 시간들을 통해 많은 것을 알게 되었고 삽질도 하였다. 이 글을 보고 도움이 되었으면 한다. 먼저 첫번째 MSA에 대하여 정리한다. SpringBoot Cloud Framework MSA에 대하여 정리를 하기 전 먼저 보고 가면 좋은 .. 2022. 4. 11.
Spring - Mock Test Annotation & Method 정리 들어가며 개발을 하다보면 개발해야 될 로직에 대해서 테스트 케이스를 작성하게 된다. 이때 테스트하려는 객체가 복잡한 의존성을 가지고 있는 경우에는 모킹한 객체를 이용하면 의존성을 단절시킬 수 있어서 테스트할때 용이하다. 목객체를 사용한 테스트 방법에 대하여 정리한다. mock? 테스트를 위해 실제 객체와 비슷한 모의 객체를 만드는 것을 mocking이라고 한다. 모킹한 객체를 메모리에서 얻어내는 과정은 mock-up이라고 한다. 웹 어플리케이션에서 컨트롤러를 테스트할때, 서블릿 컨테이너를 모킹하기 위해서는 @WebMvcTest 또는 @AutoConfigureMockMvc 를 이용하면 된다. @WebMvcTest @Controller, @RestController 가 설정된 클래스들을 찾아 메모리에 생성 .. 2022. 4. 7.
Kotlin - Data Class 정리 (feat. IntelliJ 사용시 DataClass 변경 테스트) 들어가며 코틀린이 제공하는 data class는 자바에서 DTO 역할을 하는 클래스와 같다. 하지만 자바에서 DTO를 정의할때 생성자 및 게터와 세터 등을 정의해줬던거와 다르게 코틀린의 데이터 클래스는 클래스 정의만 해주면 일반 클래스와 달리 다양한 메서드를 자동으로 생성해준다. 데이터 클래스의 특징들을 정리해본다. 데이터 클래스 생성 시 자동 생성 메서드 및 특징 메서드 hashCode() / copy() / equals() / toString() / componentsN() 특징 기본 생성자에 1개 이상의 파라미터 존재해야함 기본 생성자의 파라미터가 val 또는 var로 선언해야함 다른 클래스를 상속받을 수 없음 (단, sealed 클래스는 상속 받을 수 있으며, 인터페이스는 구현할 수 있음) abs.. 2022. 4. 3.
Web - HTTP 응답코드 들어가며 모를때마다 검색해서 찾기 귀찮아 정리한 페이지 Http 응답 코드 분류 코 드 설명 정보전송 임시응답 100 Continue (지금까지의 상태가 괜찮으며 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 되는 것을 알려줍니다) 101 Switching protocols (클라이언트가 보낸 Upgrade 요청 헤더에 대한 응답에 들어가며 서버에서 프로토콜을 변경할 것임을 알려줍니다.) 성공 200 OK (요청이 성공적으로 수행되었음) 201 Created (요청이 성공적 + 결과로 새로운 리소스 생성 | POST, PUT) 202 Accepted(요청을 수신하였지만 그에 응하여 행동할 수 없습니다. 시간이 오래걸리는 과정인 경우 서버에서 비동기로 진행할 수 있음) 203 N.. 2022. 3. 28.
JPA - findById() & existById() & getById() 메서드 관련 내용 정리 (쿼리, 성능 등등) 들어가며 JPA를 통해 개발을 하다보면 해당 객체가 존재하는지 안하는지에 대한 여부를 판단해야 될 때가 있다. 그때 보통 findById 또는 existById를 통해서 존재 여부를 알 수 있다. 둘의 차이점에 따라서 맞는 상황에 해당되는 메서드를 쓰면 되지만 이때 '둘 중의 어느것이 성능이 좀 더 좋을까?' 라는 의문을 시작으로 해서 이 글을 정리하게 되었다. 이 과정에서 알게 된 getById에 대해서도 같이 정리한다. findById & existById 차이점들 리턴값 findById와 existById의 차이점은 메서드명에서도 알 수 있듯이 반환 타입이 다르다. findById는 Entity를 반환하며 existById는 존재 여부에 대한 Boolean 타입을 반환하게 된다. 그러니 존재 여부를.. 2022. 3. 25.
Spring - @ExceptionHandler & @ControllerAdvice & @RestControllerAdvice 들어가며 개발에 있어서 예외 처리는 아주 중요한 작업이다. 예외처리를 해주지 않는다고 해서 잘 돌아가는 로직이 안 돌아가는 것은 아니지만 유지 보수 측면에서 보았을때 더 안정적이고 효율을 높이기 위해서는 예외처리 작업이 아주 중요하다. 예외를 처리하는 방법은 일반적으로 메서드 내에서 예외 상황을 try-catch로 잡아서 처리하는 방법이 있지만 이렇게 처리를 하게 되면 한두개를 처리할때는 상관이 없지만 서비스의 규모가 커짐에 따라 협업함에 있어서 코드는 복잡해지고 유지보수성이 떨어지게 된다. 하여 비즈니스 로직에 집중하기 어려워지고 이러한 비즈니스 로직보다 예외처리 관련 코드가 더 많아지는 경우도 생기게 된다. 이러한 문제를 개선해줄수 있는 @ExceptionHandler & @ControllerAdvi.. 2022. 3. 21.