개발 · 프로그래밍

/

백엔드

Kevin의 알기 쉬운 Spring Reactive Web Applications: Reactor 2부

Spring WebFlux 기반 리액티브 애플리케이션의 핵심 기술 중 하나인 Reactor, 그 중에서 Reactor의 모든 것이라고해도 과언이 아닐만큼 중요한 Reactor Operator를 내 것으로 만들고 싶다면 `Kevin의 알기 쉬운 Spring Reactive WebApplications: Reactor 2부` 강의를 수강하세요.

(4.8) 수강평 6개

수강생 211명

Thumbnail

초급자를 위해 준비한
[백엔드, 웹 개발] 강의입니다.

이런 걸
배워요!

  • Reactor Sequence를 생성하기 위한 Operator 활용 방법

  • Reactor Sequence에서 데이터를 필터링하기 위한 Operator의 활용 방법

  • Reactor Sequence에서 emit되는 데이터를 변환하는 Operator의 활용 방법

  • Reactor Sequence의 내부 동작 확인하기 위한 Operator의 활용 방법

  • 시간과 관련된 Operator의 활용 방법

  • Reactor Sequence에서 발생하는 에러를 처리하기 위한 Operator의 활용 방법

  • Reactor Sequence에서 emit되는 데이터를 분할하기 위한 Operator의 활용 방법

'스프링으로 시작하는 리액티브 프로그래밍' 저자 직강!

Kevin의 알기 쉬운 RxJava 강의를 오픈했던 Kevin이 3년 만에 들고 온 리액티브 프로그래밍 시리즈를 인프런 강의와 도서로 만나보세요!


Spring WebFlux 기반의 웹 애플리케이션을 개발하고자 하는 분들이 가장 간과하기 쉬운 것이 하나 있습니다.

그것은 바로 리액티브 프로그래밍의 핵심 중에 핵심인 Operator에 대해 제대로 된 학습을 거치지 않고 곧바로 Spring WebFlux를 학습하고 싶어한다는 것입니다.

Spring WebFlux 기반의 애플리케이션을 빨리 구현해 보고 싶은 마음은 너무나 잘 알고 있습니다.

많은 분들이 Reactor의 Operator에 대한 기본기가 제대로 갖추어져 있지 않은 상태에서 Spring WebFlux 단계로 넘어가지만 결국 Operator라는 벽에 부딪쳐 Operator를 다시 학습하게 되는 상황이 빈번하게 발생합니다.

이런 시행 착오를 거치지 않게 만들어 드리고 싶어서 2부 강의에서는 Reactor의 핵심 중에 핵심인
Operator에 대한 활용법을 집중적으로 학습할 수 있도록 Operator에 대해서만 다루고 있습니다.


이 강의가 여러분들이 Reactor, 그 중에서 Reactor의 꽃이라 불리우는 Operator라는 문을 열 수 있는 열쇠가 될 수 있을거라 자신합니다.

🌱 2부 강의의 특징

  • 2부 강의는 Reactor의 Operator에 대해서만 집중적으로 학습합니다.

  • Operator의 동작 방식을 제대로 이해할 수 있도록 Operator에 해당하는 마블 다이어그램을 활용합니다.

  • 특정 Operator의 기본 개념을 이해하기 위한 예제 코드로 Operator의 기본 개념을 이해합니다.

  • 기본 개념을 이해한 후, 특정 Operator를 활용할 수 있는 인사이트를 얻을 수 있도록 활용 예제코드를 설명합니다.

  • 총 60 여 개의 Operator에 대해 97개의 예제 코드를 통해 각각의 Operator를 활용하는 방법을 설명합니다.


이런 내용을 배워요

섹션 1: Creating a new sequence

섹션 1에서는 Reactor Sequence를 새로 생성하는 Operator에 대해서 학습합니다.

  • justOrEmpty: justOrEmpty Operator를 사용하여 Reactor Sequence에 하나의 값 또는 비어 있는(Empty) Sequence를 생성하는 방법을 알아봅니다.

  • fromIterable: Java의 Collection에 포함된 데이터로부터 Sequence를 생성하는 방법을 학습합니다.

  • fromStream: fromStream Operator를 사용하여 Java Stream에서 Sequence를 생성하는 방법을 학습합니다.

  • range: range Operator를 이용해 정해진 범위 내의 정수 Sequence를 생성하는 방법을 학습합니다.

  • defer: defer Operator를 통해서 Subscriber가 구독하는 시점까지 데이터 emit을 지연시키는 방법 이해해 봅니다.

  • using: using Operator를 사용하여 리소스를 획득하고 해제하는 과정 포함하는 Sequence를 생성하는 방법을 알아봅니다.

  • generate, create: generate, create Operator를 사용하여 프로그래밍 방식으로 데이터를 생성하는 방법을 학습합니다.

섹션 2: Filtering a sequence

섹션 2에서는 Reactor Sequence에서 데이터를 필터링하는 Operator 들을 학습합니다.

  • filter: filter Operator를 사용하여 Reactor Sequence에서 데이터를 필터링하는 방법을 알아봅니다.

  • skip: skip Operator를 사용하여 시퀀스에서 데이터를 건너뛰는 방법에 대해 학습합니다.

  • skip 확장 Operator: skipLast, skipUntil, skipUntilOther,
    skipWhile을 사용해 다양한 방식으로 데이터를 건너뛰는 방법에 대해 학습합니다.

  • take: take Operator를 사용하여 Sequence에서 emit된 데이터 중에서 필요한 데이터만 가져오는 방법에 대해 학습합니다.

  • take 확장 Operator: takeLast, takeUntil, takeUntilOther,
    takeWhile을 사용해 다양한 방식으로 emit된 데이터 중에서 필요한 데이터만 가져오는 방법에 대해 학습합니다.

  • next: emit된 데이터 중에서 첫번째 데이터만 얻기 위한 방법을 살펴봅니다.


섹션 3: Transforming an existing sequence

섹션 3에서는 Reactor Sequence에서 데이터를 변환하는 Operator에 대해서 학습합니다.

  • map: map Operator를 사용하여 Sequence의 데이터를 변환하는 방법 학습합니다.

  • flatMap: flatMap Operator를 사용하여 emit되는 데이터를 변환하는 방법과 평탄화의 의미에 대해서 이해하는 시간을 가집니다.

  • flatMap 확장 Operator: FlatMapIterable, FlatMapMany, FlatMapSequential을 사용한 다양한 방식의 평탄화 방법을 학습합니다.

  • concat: concat Operator를 사용하여 여러 개의 Sequence를 연결하는 방법을 학습합니다.

  • merge: merge Operator를 사용하여 여러 개의 Sequence를 병합하는 방법을 이해해 봅니다.

  • zip: zip Operator를 사용하여 여러 개의 Sequence의 소스 데이터를 결합하는 방법을 학습합니다.

  • and, when: and, when Operator를 통해 조건에 따라 Reactor Sequence의 종료를 확인할 수 있는 방법에 대해서 학습합니다.

  • then: 작업을 순차적으로 수행하기 위한 then Operator를 학습합니다.

  • collectList, collectMap: emit되는 데이터를 List 또는 Map에 담아서 한 번에 Downstream으로 emit하는 방법을 학습합니다.


섹션 4: Peeking into a sequence

섹션 4에서는 Reactor Sequence의 내부를 들여다 볼 수 있는 Operator에 대해서 학습합니다.

  • doOnXXXX: doOnSubscribe, doOnRequest, doOnNext, doOnComplete 등을 사용하여 Sequence의 내부를 들여다 보면서 Sequence의 라이프 사이클을 이해해 봅니다.

섹션 5: Working with time

섹션 5에서는 Reactor Sequence에서 제공하는 Operator 중에서 시간과 관련된 Operator를 학습합니다.

  • delayElements: 일정 시간 간격으로 데이터를 emit하게 해주는 delayElements에 대해서 학습합니다.

  • delaySubscription vs delaySequence: delaySubscription과 delaySequence의 동작 방식과 각각의 차이점을 이해해 봅니다.

  • timeout: 주어진 시간 안에 데이터가 emit되지 않으면 에러를 발생시키는 timeout Operator에 대해서 학습합니다.

섹션 6: Handling errors

섹션 6에서는 Reactor Sequence에서 발생하는 에러를 핸들링 하는데 사용되는 Operator를 학습합니다.

  • error: error Operator를 이용해 Reactor Sequence 상에서 에러를 명시적으로 throw하는 방법을 알아봅니다.

  • onErrorReturn, onErrorResume: onErrorReturnonErrorResume Operator를 이용해 에러가 발생했을 때 대체 값을 emit 하거나 또는 대체 Sequence 시작하는 방법에 대해서 학습합니다.

  • onErrorContinue: onErrorContinue Operator를 사용해 에러가 발생해도 Sequence가 계속 동작하도록 하는 방법에 대해 학습합니다.

  • onErrorMap: onErrorMap Operator를 이용해 Sequence 상에서 발생한 에러를 새로운 예외 타입으로 변환하는 방법에 대해 학습합니다.

  • retry: retry Operator를 사용해 에러가 발생할 경우 Sequence가 다시 동작하도록 재시도하는 방법에 대해서 학습합니다.


섹션 7: Splitting a Flux

섹션 7에서는 Reactor Sequence에서 emit되는 데이터를 분할하는 Operator 학습합니다.

  • window: window Operator를 이용해 emit되는 데이터를 일정 개수의 window로 나누어 emit하는 방법에 대해서 학습합니다.

  • buffer, bufferTimeout: bufferbufferTimeout Operator를 이용해 emit되는 데이터를 버퍼에 담아서 emit하는 방법에 대해서 학습합니다.

  • groupBy: groupBy Operator를 이용해 emit 되는 데이터를 특정 기준에 맞게 그룹핑을 하는 방법에 대해 학습합니다.


섹션 8: Multicasting a Flux to several Subscribers

섹션 8에서는 하나의 Flux로 다수의 Subscriber에게 데이터를 멀티캐스팅 하는 Operator를 학습합니다.

  • publish: publish Operator를 사용해 Sequence 상의 데이터를 멀티캐스팅 하는 방법에 대해서 학습합니다.

  • autoConnect: autoConnect Operator를 이용해 구독이 발생했을 때 Upstream 소스에 자동으로 연결하는 방법에 대해서 학습합니다.

  • refCount: refCount Operator를 이용해 구독이 발생했을 때, Upstream 소스에 자동으로 연결하고, 구독이 취소 되었을 때 Upstream 소스에서 자동으로 연결이 해제되는 방법에 대해서 학습합니다.

  • replay: replay Operator를 사용해 새로운 구독이 발생했을 때 Sequence 상의 데이터를 다시 emit하는 방법에 대해서 학습합니.


수강 전 참고 사항

Kevin의 알기 쉬운 Spring Reactive Web Applications 전체 강의 구성

  • 1부는 리액티브 프로그래밍의 개념과 Spring Reactive Web Application의 핵심 역할을 하는 Project Reactor에 대해서 다룹니다.

  • 2부는 1부에서 다루지 않았던 Project Reactor의 Operator에 대해서만 다룹니다. Operator는 Reactor의 여러 파트 중에서 가장 핵심적인 역할을 담당하고 있습니다. 또한 리액티브 프로그래밍에 어느 정도 익숙한 분들이 Operator 부분만 별도로 학습할 수 있도록 별도의 강의로 구성되었습니다.

  • 3부는 Spring WebFlux의 동작 방식을 이해한 후에 리액티브한 웹 애플리케이션을 만들어 보는 예제 프로젝트 위주로 구성될 예정입니다. (2024년도 중에 오픈 예정입니다.) 

학습 자료

  • 매 수업마다 강의에서 사용되는 PPT 강의 자료를 다운로드 받아 확인할 수 있습니다. PPT 강의 자료는 수업 청취 중에 수업별로 다운로드 받으실 수 있으나 수업별로 쪼개어져있어 보기 불편하신 분들은 아래 Github Repository에서 섹션 별로 통합되어 있는 강의 자료를 활용하시길 바랍니다.

  • 수업에서 설명한 예제 코드는 모두 github에 올라가 있으며 아래 주소에서 다운로드 받으실 수 있습니다.

  • 모든 수업은 5분 ~ 20분 사이의 영상으로 구성되어 있습니다.

  • 1부 강의 제작 단계에 레코딩 된 영상이 일정 부분 포함되어 있어 몇몇 수업 영상에서는 패키지 구조가 원본 예제 소스 코드와 다르게 보일 수 있으니 참고 부탁드리겠습니다.

선수 지식 및 유의사항

  • Java 선수 지식은 필수입니다.

  • Reactor에 대한 학습 경험이 있으신 분들은 1부 강의를 반드시 수강할 필요는 없습니다.

  • Reactor에 대한 학습 경험이 없거나 리액티브 프로그래밍에 대한 개념을 처음 접하시는 분들은 1부 강의를 학습하시는 것이 좋습니다.

  • 예제 코드를 블로그 등에서 사용하실 경우에는 출처를 남겨주시길 부탁드립니다.

  • 강의에서 사용된 마블 다이어그램 이미지(Reactor 공식 사이트 이미지 제외)는 저작권이 있으므로 블로그 등 타 사이트에서 사용하실 수 없습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 리액티브 프로그래밍을 배우고자 하는 주니어 개발자

  • Project Reactor의 기본을 익히고 싶은 개발자

  • Project Reactor의 Opertaor를 어떻게 학습해야 할지 방향을 잡기 힘든 분

  • Project Reactor의 Operator 활용을 위한 인사이트를 얻고자 하는 분

  • Spring 베이스의 리액티브 웹 애플리케이션을 개발하고자 하는 사람

선수 지식,
필요할까요?

  • Java

  • Project Reactor에 대한 기본 지식

안녕하세요
Kevin입니다.

- 주력 언어 또는 기술 : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- (주)코드스테이츠(https://www.codestates.com)에서 Senior Educational Software Engineer(Backend)로 활동
(From 2022.03 To 2024.01.31)

- 프리랜서 개발자 및 강사로 활동(From 2024.02)

- 저서

안녕하세요? Kevin이라고 합니다. ^^

인프런에서 이렇게 강사로서 여러분들을 만나게 되어서 너무 반갑습니다.

어떤 분야든 마찬가지겠지만 특히나 소프트웨어 개발자는 끊임없이 변화하는 트렌드에 뒤처지지 않도록 항상 자기 자신을 갈고 닦는것이 개발자로써 살아남는 유일한 방법이라고 생각하며 항상 배우는 자세로 즐겁게 소프트웨어 개발을 하고 있는 개발자 중 한 명입니다.

제가 가지고 있는 지식과 경험이 다른 분들에게 조금이나마 도움이 되기를 바라면서 인프런에서 강좌를 시작하였습니다.

앞으로 수강생분들에게 현실적으로 도움이 되는 다양한 강좌로 꾸준히 찾아뵙도록 하겠습니다. 감사합니다.

 

질문이나 의견은 언제든지 환영하니, 이메일(it.village.host@gmail.com)로 편하게 얘기해주세요.

 

커리큘럼

전체

36개 ∙ (6시간 10분)

수업 자료

가 제공되는 강의입니다.

강의 게시일: 
마지막 업데이트일: 

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!