본문 바로가기

전체 글55

WebFlux-Retry(Guide to Retry in Spring WebFlux) 원본 글: https://www.baeldung.com/spring-webflux-retry클라우드 환경에서 분산 애플리케이션을 구축할때, 서로의 통신이 실패했을때의 방안으로 Retry(재시도)기법을 보통 사용합니다.Spring WebFlux에서는 이러한 기법을 사용할 수 있는 몇 가지 툴들을 제공하고 있습니다.이 글에서는 WebFlux 애플리케이션에서 어떻게 재시도 관련 설정을 추가하는지 알아봅니다.1. Use Case예를 들어서 임시로 서비스가 불가능했다가 다시 정상으로 돌아오는 경우를 생각해봅시다.@Testvoid givenExternalServiceReturnsError_whenGettingData_thenRetryAndReturnResponse() { mockExternalService.e.. 2025. 2. 28.
Mono와 Flux의 차이점(Difference Between Flux and Mono) 원본 글: https://www.baeldung.com/java-reactor-flux-vs-mono이 글은 Flux와 Mono의 차이점을 간단히 설명합니다.1. What Is Mono?Mono는 Publisher라는 특별한 타입의 클래스입니다. Mono오브젝트는 0~1개의 값을 가지며 onNext() 함수를 통하여 최대 1개의 값을 내보내고 onComplete() 함수를 통하여 요청이 끝났음을 알릴 수 있습니다. 그리고 실패했을 경우 onError() 함수를 발생시켜서 에러핸들링을 할 수 있게합니다. @Test public void givenMonoPublisher_whenSubscribeThenReturnSingleValue() { Mono helloMono = Mono.ju.. 2025. 2. 27.
REST API 테스트하기(Test a REST API with Java) 원본 글: https://www.baeldung.com/integration-testing-a-rest-api이 글에서는 통합테스트를 통해서 REST API를 테스트하는 방법에 대해 다룹니다.실제 있는 API를 호출하고 응답값을 받아와서 검증하는 절차까지 진행해봅니다.테스트 의존성testImplementation 'org.apache.commons:commons-lang3:3.17.0testImplementation 'org.apache.httpcomponents.client5:httpclient5:5.4.2'testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2'1. API Integration TestingAPI 통합 테스트는 본.. 2025. 2. 26.
SpringMVC Async와 SpringWebFlux차이(Spring MVC Async vs Spring WebFlux) 원본 글: https://www.baeldung.com/spring-mvc-async-vs-webflux이 글은 Spring MVC에서 제공되는 @Async와 Spring WebFlux를 비교해봅니다. 1. Implementation Scenario간단한 API들을 포함하고 있는 웹 애플리케이션을 제작하고, 쓰레드들을 blocking, non-blocking방식을 통해서 비교해봅니다.하나의 엔드포인트를 만들고 String 형태의 값을 반환할겁니다. 여기서 핵심은 요청이 들어올때 Filter에서 200ms정도 딜레이를 줄거고 Controller에서 500ms의 딜레이를 주고 String을 반환할겁니다.테스트툴은 Apache ab라는 툴을 사용할 것이고, 이를 통해서 여러 요청을 보내볼겁니다. 2. Spri.. 2025. 2. 26.
Maven-Cargo Plugin이란? Cargo Plugin이란?Cargo Plugin은 Maven과 Gradle 환경에서 Java 웹 애플리케이션을 관리하고 배포하는 데 사용하는 플러그인으로, 주로 Java EE 환경에서의 애플리케이션 서버 배포를 돕습니다. 이 플러그인은 애플리케이션 서버에 배포하기 위해 필요한 배포 및 관리 작업을 자동화하는 데 유용합니다.하지만, Cargo Plugin이 잘 사용되지 않는 이유와 장단점을 이해하고 사용하는 것이 중요합니다.Cargo Plugin 장점자동화된 배포:Java EE 애플리케이션 서버와 관련된 복잡한 배포 작업을 자동화할 수 있습니다. 예를 들어, 서버에 애플리케이션을 자동으로 배포하고, 서버를 시작하고, 필요한 경우 애플리케이션을 제거하는 작업을 쉽게 수행할 수 있습니다.서버와의 통합:Tom.. 2025. 2. 26.
HATEOAS 간단 소개, 과연 이게 정답인가? 외부 칼럼들을 읽다가 HATEOAS라는 것을 알게 되었다.안그래도 회사에서 신규 프로젝트를 진행하게 되었는데, endpoint를 명확하게 정하지 못해 FrontEnd개발자분께 해당 내용을 전달드리지 못하고 있었다.이유는 Restful하게 API를 구성하고 싶었고, 초기에 어느정도 Fix된 상태로 줘야 FrontEnd개발자분들이 편하게 작업이 가능하다고 말씀하셔서 정의에 대해 계속 생각하다보니 미뤄지고 그랬다.그러던 와중 HATEOAS를 적용하면 이러한 문제를 해결할 수도 있다고 생각했다.HATEOAS?이부분은 그냥 밑의 구조를 보면 이해하기 편하다{ "data": { "id": 1000, "name": "게시글 1", "content": "내용 1" }, "_links": { .. 2025. 2. 26.