jphwany 2022. 8. 11. 00:50

● 계획

  •     오늘 나의 학습 목표

리액티브 프로그래밍의 이해

리액티브 스트림즈가 무엇인지 이해

명령형 프로그래밍과 선언형 프로그래밍이 무엇인지 이해

리액티브 프로그래밍을 학습하기 위한 사전 지식이 무엇인지 이해


● 점검 및 평가

  •     새롭게 학습한 내용은
  •     이해되지 않은 부분은
  •     보완하기 위해 무엇을

 

Spring MVC 기반의 애플리케이션은 명령형 프로그래밍이었다면

이번에 배운 리액티브 프로그래밍은 람다 선언 처럼 선언형 프로그래밍 방식이다

 

이름에서도 알 수 있듯

반응을 잘한다는 의미인데

 

클라이언트의 요청에 반응을 잘한다는 의미다

 

시스템 관점에서는 클라이언트 요청에 대한 응답 대기 시간을 최소화할 수 있도록

요청 스레드가 차단되지 않게 함으로써(논 블로킹) 클라이언트에게 즉각적으로 반응할 수 있도록 구성되었다고 볼 수 있다

 

리액티브 시스템의 특징과 설계원칙을 공부하니

또 새로운 무언가를 배우기 때문에 한 번에 와닿진 않았다

 

이해가 어렵다는 것 보다는 생소하다는 게 맞을 것이다

 

정말 힘들게 MVC기반의 프로그래밍을 이때까지 배웠는데

 

갑자기 사뭇 다른 개념의 프로그래밍을 또 배우고 있는 것이다

 

그것도 깊게도 아니고 전체적으로 어떤지 공부하고 있는데

 

솔직히 이게 맞나 싶긴했다

 

아직 제대로 복습도 못해서 전부 100% 이해는 못했는데

 

갑자기 새로운걸 다시 배우고 있다니

 

그렇지만 찾아가면서 공부를 하다보니

 

많은 트래픽 상황에서 기존 서블릿 방식에서 스레드를 무작성 생성하다 꽉 차면 감당이 안되는 상황이 많은데

 

리액티브 프로그래밍은 빠짐 없이 클라이언트와 요청을 주고받다보니 안정성이 존재한다

 

논블로킹이 큰 장점이라고 할 수 있는 이 리액티브 프로그램을

나중에

취업해서 현업에서도 쓸 일이 많을 것 같다고 생각했다

 

그러니 이것도 공부해둘 필요가 있겠지 어차피 선언형 프로그래밍을 아예 처음 접하는 것도 아니고

 

스트림이나 람다를 그래서 배웠던 걸까?