에러 핸들링 보충 Retry strategy (재시도 전략) retry retry는 Erorr 발생시에 reactive stream 을 다시 subscribe 한다. 때문에, retry 시에 별도 설정이 없다하면 무한정으로 subscribe 하게 되므로 stream 에 무리가 간다. 때문에 아래와 같이 시도 제한을 위한 method 를 이용 한다. retry when retry 시에 특정 조건 RetrySpec 을 주어서 retry 를 진행한다. Retry.fixedDelay Duration.ofMillis 뒤에 새로운 subscibe 를 진행 한다. Retry.backoff 에러 발생시 Duration.ofMillis 만큼 dalay 시킨디 다시 reative Stream 을 다시 subscribe 한..
1. Non-Blocking WebFlux 데이터 손실 이슈 2. 샘플코드 import java.util.concurrent.CompletableFuture; import reactor.core.publisher.Mono; public class JustTest { public static void main(String[] args) { //1번내용 ---------------- String text = "abcd"; Mono mono = Mono.just(text); mono.subscribe( str->{ //변수 text를 살펴보고, 그에대한 콜백행위는 아래의 출력 System.out.println(str); }); //2번내용 ---------------- Mono function = Mono.c..
이번 들에서는 기존에 WebFlux 와 MVC 패턴을 이용한 NonBlocking, Blocking 테스트를 진행 하며 성능을 측정해 보도록 하겠습니다. 1. 테스트 tool 로는 K6 사용 공식홈페이지 : https://k6.io/ * k6 결과 값 vus — 활성 가상 사용자 수 vus_max — 테스트에 할당 된 최대 가상 사용자 iterations— default함수가 호출 된 총 횟수 iteration_duration— default함수 를 실행하는 데 걸린 총 시간 dropped_iterations— iterations시작할 수없는 수 data_received — 수신 된 데이터의 양 data_sent — 전송 된 데이터 양 checks — 성공적인 검사 비율 http_reqs — k6에 의해..
오늘은 SpringWeb Flux 도입을 하기 위한 기초 단계로 Webclient 에 샘플 프로젝트를 통해서 알아 보도록 하겠다. Spring WebFlux 샘플코드 1. 샘플 프로젝트 다운로드 mac 에서 샘플 프로젝트 다운로드 curl https://start.spring.io/starter.tgz \ -d bootVersion=2.4.4 \ -d dependencies=webflux \ -d baseDir=spring-webflux-tutorial \ -d artifactId=webflux \ -d packageName=com.devkuma.webflux \ -d applicationName=HelloWebFluxApplication \ -d type=gradle-project | tar -xzvf..
스프링웹플럭스? 스프링웹플럭스란 Project Reactor의 웹의 스트리밍 처리를 한다. SpringBoot2(Spring5) 부터 사용가능 하며 Reactive Stack, Servlet Stack 둘중 하나를 선택해서 사용해야 한다. Spring MVC vs WebFlux MVC 에서 WebFlux 로 전환하고자 하면 다음을 고려해 보자 1. 이미 잘 동작하고 있는 MVC 프로젝트는 무리 해서 바꿀 필요는 없다. 작성, 소스이해, 디버깅이 비동기 방식보다 이해하기 쉽고, 관련 library 도 많다. 2. 하지만, 논블록킹 웹 스택을 알아보고 있다면, Spring WebFlux 다른 웹스택을 실행환경을 제공하면서도, 다양한 서버, 리액티브 라이브러리를 제공한다. 3. Java8, kotlin 로 개..
스프링웹플럭스란? 웹플럭스를 이해하기 위해서는 아래 용어를 이해 해야 한다. Reactive Streams non-blocking, back pressure 을 이용하여 비동기 서비스를 할때 기본이 되는 스펙이라고 함. Spring5 Webflux 는 Core ProjectReator 에서는 Reactive Streams 를 따르고 있음 비동기의 경계를 명확하게 하여 스트림 데이터의 교환을 효율적으로 하는 것이 목표이다. 아래의 Stream 을 지향한다. 잠재적으로 무한한 숫자의 데이터처리 순서대로처리 컴포넌트간 데이터를 비동기 적으로 전달 backpressure 을 이용한 데이터 흐름 제어 관련 API 는 아래와 같다. Publisher Subscriber Subscription Processor Pu..
1. kotlin ? => 기존(Java) 코드 보다 더 간결한 코드로 작성가능 (앞으로 사용하며 살펴 보도록 해야 겠다) => 웹 어플리케이션 백앤드 부분에서 사용성이 용의 하다고 한다. 1-1) type 정적타입 (statically type) => 컴파일 시점에 type 알 수 있기 때문에 컴파일시 오류 검출 및 런타임시 빠르다. nullable type 가능 => nullable 지정이 가능해서 컴파일시에 null 일때 죽는 경우를 미리 알 수 있다. 1-2) 함수형 프로그래밍 (functional programming) 일급객체 함수 => 쉽게 말해서 함수를 변수처럼 할당해서 사용 가능 하다. 불변성 => 한번 함수가 선언되면 내부 상태가 변경이 안됨 부수 효과 없음 => 외부 값에 의해서 함수..
- Total
- Today
- Yesterday
- kafka
- 테스트 주도 개발
- 테스트주도개발
- EC2
- data mining
- AWS
- fastapi
- TDD
- SpringBoot
- 분산처리
- nodejs
- 켄트 백
- mongodb
- data crawling
- 웹서비스
- Python #FastAPI
- 퀜트백
- Python
- GateWayApi
- MQ
- MSA
- 웹개발
- 테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |