본문 바로가기
Memo/BootCamp : TIL

[Day 113] Spring WebFlux : Project Reactor

by 달의 조각 2022. 10. 13.

학습 주제

 

Reactor
마블 다이어그램
Publisher, Scheduler, Operator

 


 

새롭게 배운 내용

 

2022.10.13 - [Back-End/Spring WebFlux] - Project Reactor

2022.10.13 - [Back-End/Spring WebFlux] - [Reactor] Operators

 

 

보강할 내용

 

  • 동기 & 비동기와 블로킹 & 논블록킹

 

 

회고

 

  Reactor는 리액티브 스트림즈의 구현체이다. 리액티브 프로그래밍의 핵심은 Non-Blocking이다. Non-Blocking은 A 함수가 B 함수를 호출하면 B가 실행되지만, 제어권은 A가 갖고 있으며, A가 계속 제어권을 갖기 때문에 A도 코드를 계속 실행하는 것을 말한다. 이는 클라이언트의 요청에 따른 응답 대기 시간을 줄여 줘서 반응성이 좋은 시스템을 구성할 수 있다. (리액션이 좋은 사람을 떠올려 보기! 🙆) Blocking과 Non-Blocking이 구체적으로 무엇인지는 동기 비동기와 함께 공부해서 정리해 봐야겠다.

리액티브 프로그래밍은 지금까지 스프링 MVC에서 익숙하게 작성해 온 명령형 프로그래밍 방식이 아닌 선언형 방식이다. Stream API에 관해 공부할 때 경험해 봤지만 익숙하지 않아서 쉽지 않았었다. Operator 중 자주 사용되는 메소드들 위주로 학습했는데 계속해서 보다 보니 선언형 방식의 프로그래밍이 제법 재미있게 느껴졌다. 메소드를 적용하는 예제들만 경험해서 실제 적용하는 실습에서는 어려울 수도 있겠지만 코드들이 연결되는 흐름이 자연스러웠고 새로운 방식이라 즐겁게 공부할 수 있었다.

지난주에 스터디원들에게 7시 기상을 제안했었는데 지금까지 아주 잘 지키고 있다! 😊 혼자였다면 아주 쪼금만 더 자야지 하고 8시가 넘어서 일어났을 텐데 잠이 부족해도 약속했으니 일어나야지! 하고 일어나게 된다. 수업이 마친 후에는 이전 페어 분과 만드는 공지사항 게시판의 Mapper와 Service를 만들었다. 역시 하나하나 코드로 작성해 보는 게 큰 도움이 된다고 느낀다. 사실 DTO 클래스 등에서 @Getter, @Setter, @AllArgsConstructor, @NoArgsConstructor 애너테이션 중 어느 것을 붙여야 하는지 모르겠다. 이건 코드를 더 작성해 가면서 봐야겠다. 오늘 Service 클래스를 구현하는데 memberId는 사용자 입력으로 받을 것이 아니기 때문에 @Setter가 필요함을 알았다. 일요일까지 정렬 알고리즘 공부도 해야 하는데 시간이 너무너무 빠르게 지나가는 것처럼 느껴진다. 그래도 주어진 매시간 감사하며 열심히 해야지! 💪

 

 

★★★★★

 

댓글