대머리개발자

비동기와 논블로킹, 리액티브 본문

개발이야기/개념

비동기와 논블로킹, 리액티브

대머리개발자 2024. 6. 7. 09:12
728x90

 

비동기와 논블로킹은 나는 같은 녀석이라고 본다.

둘의 목표가 동일하기 때문이다.

병렬처리하기 위함이다. 딱 끝!!!

 

그리고 모든 블로그가 같은 그림으로 동일한 설명을 하고 있다.

되지도 않는 설명을.. 안타깝다.

 

의미를 몰라도 코딩하는데 전혀 문제가 없다.

나의 절친AI에게 정중히 물어 봤다.

그래 도전하지 말자!

앞서 이야기 했지만 몰러두 코딩할 수 있다. 지금껏 그래 왔듯이

 

 

모든 프로그래밍은 기본적으로 순차적 진행 되도록 설계 되어 있다.

그리고 또한 순차적으로 해도 무리 없다!!

 

그럼 언제 써야 하냐? 그 부분에 대해서만 언급해보자!

 

모든 함수는 동일한 인자값을 던졌을 때 동일한 결과값이 나와야 한다. 

https://tcpschool.com/codingmath/function#google_vignette

 

다실 말해 결괏값y에 영향을 미치지 않는다고 하면 병렬처리 한다.

병렬처리 안 해도 빠르다면 긁어서 부스럼 만들지 말자!!

 

⭐ TO-BE 코드

 

빨간색 테두리는 영역은 단순 리턴할 사용자를 캐슁하는 부분이다.

따라서 응답값과 별개로 진행되는 부분이다.

심지어 예외가 발생해도 상관없다.!! --> 이럴때 비동기처리하는 것이다. 논블락킹 처리!

 

 

언제? 결과값에 1도 관여를 안 할때 (당근 별도 실행한 결과에 대한 INFO를 같이 넘겨 줄라믄 Step by Step 해야지)

왜? 리스판스를 조금이라도 빨리 주려구!! (성능 8282)

 

⭐AS-IS  코드

 

Mono를 쓴다고 다 비동기가 아니다.  이 또한 앞서 이야기 했지만 기본은 순차적이다.ㅎ

 

비동기를 쓰기 쉽게 지원해주는거지.  코루틴 같은 

 

실제적으로 논 블로킹 처리는 두곳이다.! 

1. Mono.zip( ~ ) : zip 내부 스트림들은 각각 동시에 진행

2. Mono.fromRunnable( ~ ) : 개샹 마이웨이로 진행

 

속도가 2ms 줄었다..... 와우!!

 

 

728x90

'개발이야기 > 개념' 카테고리의 다른 글

another 프로젝트 분석.  (1) 2024.07.02
[리액티브] map vs flatMap 와우..진짜.  (1) 2024.06.12
리액터 병렬 처리  (0) 2024.05.10
JWT 사실 어려운 친구였다.  (0) 2024.04.26
Json 안에 Json 처리  (0) 2024.04.25