BEST
개발 · 프로그래밍

/

풀스택

Kevin의 알기 쉬운 RxJava 2부

리액티브 프로그래밍이라는 진입 장벽을 넘고 싶으신가요? Kevin의 알기 쉬운 RxJava가 그 벽을 넘을 수 있는 힘을 키워드리겠습니다.

(4.9) 수강평 14개

수강생 495명

Thumbnail

초급자를 위해 준비한
[풀스택, 개발 · 프로그래밍] 강의입니다.

이런 걸
배워요!

  • Hot Publisher의 개념과 Hot Publisher의 종류

  • RxJava에서의 쓰레드 관리자인 Scheduler의 개념과 사용법

  • RxJava 코드의 디버깅 방법

  • RxJava코드를 테스트하는 방법

  • SSE 통신을 사용한 Client와 Server간의 RxJava 활용

🎉Kevin의 알기 쉬운 RxJava 2부 출시🎉
리액티브 프로그래밍
, 이번에도 확실히 알려드릴게요!

리액티브 프로그래밍이란 무엇일까요?

  • 좁은 의미로는 복잡한 비동기식 요청을 효과적으로 처리하기 위한 비동기 프로그래밍을 위한 API라고 할 수 있습니다.
  • 넓은 의미로는 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍 방식과 반대되는 개념인 선언형 프로그래밍의 패러다임이라고 할 수 있습니다.
  • 리액티브 프로그래밍은 클라이언트의 요청에 즉각적으로 반응하도록 설계된 리액티브 시스템에 빼놓을 수 없는 프로그래밍 모델입니다.
  • 리액티브 프로그래밍은 비동기 통신이 필요한 대부분의 개발 언어 및 프레임워크에서 폭넓게 사용을 하고 있습니다. 
    ex) Angular, React 등에서의 RxJS, Java에서의 RxJava, Android 에서의 RxAndroid, Spring Framework에서 사용하는 Reactor, RxScala 등 리액티브 확장이 광범위하게 사용되고 있습니다.

리액티브 프로그래밍을 왜 배워야 할까요?

  • 리액티브 프로그래밍은 비동기 요청을 효과적으로 처리하기 위한 개발 패러다임이라고 말씀을 드렸습니다.
  • 오늘날의 애플리케이션은 동기적인 요청보다 비동기적인 요청을 처리하는 비중이 점점 더 높아지고 있습니다.
  • Java의 쓰레드를 사용한 비동기 프로그래밍은 복잡도가 상당히 높으며, 예상치 못한 에러가 발생할 가능성 역시 높은 것이 사실입니다.
  • 리액티브 프로그래밍은 이렇게 쓰레드를 직접적으로 사용하면서 발생하는 문제를 대신 해결해주고, 비동기 프로그래밍에 대한 복잡도를 단순화해줍니다.
  • 하지만 선언형 프로그래밍 방식에 적응하기 위한 일정 수준의 시간이 필요합니다.
  • 그래서 어느 정도의 진입 장벽이 있는 것 또한 사실입니다. 하지만 여러분들이 넘지 못할 장벽은 아니라고 생각합니다.
  • 결정적으로 리액티브 프로그래밍을 통해 여러분의 개발 스킬이 한단계 향상됨은 물론이고, 개발자로서 개발에 대한 사고 방식의 전환을 경험할 수 있는 훌륭한 계기가 될 것이라고 생각합니다. 

2부 강의에서 어떤 것들을 배울 수 있을까요?

  • Kevin의 알기 쉬운 RxJava 2부에서는 1부에서 얘기하지 못했던 Hot Publisher, 스케쥴러, 디버깅, 테스트 대한 강의를 진행합니다. 그리고 마지막으로 1부, 2부에서 배운 RxJava를 Spring Boot에서 어떤식으로 활용을 할 수 있는지 실습을 통해서 감을 잡도록 합니다.
  • 먼저 1부에서 잠깐 언급하고 넘어간 Cold Publisher와 Hot Publisher에 대해서 리뷰를 한 후에 Hot Publisher의 종류와 각각의 특징을 마블 다이어그램과 예제 코드로 익힐 수 있도록했습니다.

[Cold Publisher 리뷰 강의 자료 캡쳐]

[Hot Publisher 리뷰 강의 자료 캡쳐]

  • RxJava에서 스케쥴러는 어떤 의미를 가지는 구성 요소이고, 스케쥴러의 역할은 무엇인지 살펴 볼텐데요. RxJava에서의 스케쥴러라는 의미를 이해하기 위해서 먼저 운영체제 상에서 실행되는 프로세스와 프로세스 하위의 쓰레드의 개념과 동작 방식을 그림으로 쉽게 설명하여 RxJava에서의 스케쥴러가 어떤 역할을 하는지 수강생들이 확실하게 이해할 수 있도록 노력했습니다.

[쓰레드의 개념 강의 자료 캡쳐]

  • RxJava는 선언형 프로그래밍 방식으로 구성되어 있고, 또한 비동기 프로그래밍이기때문에 RxJava의 코드를 디버깅하는 것은 쉽지 않습니다. 2부 강의에서는 디버깅 섹션을 통해서 RxJava의 코드를 어떤 방식으로 디버깅 할 수 있는지를 익힐 수 있습니다.
  • 애플리케이션을 개발하는데 있어서 테스트는 무척 중요한 영역 중에 하나라고 생각을 하는데요. 비동기 프로그래밍인 RxJava의 코드를 Java에서의 일반적인 방식으로 테스트 하기에는 한계가 있습니다. RxJava에서 자신이 구현한 코드의 테스트를 효과적으로 진행하기 위해 어떤 방식을 사용하는지 테스트 섹션에서 익힐 수 있습니다.
  • 2부의 마지막 섹션에서는 그 동안 배운 RxJava 프로그래밍을 Spring Boot 에서 어떤식으로 활용할 수 있는지에 대한 실습 프로젝트를 진행합니다. 실습 프로젝트 자체는 간단하지만 애플리케이션 개발에 RxJava를 어떻게 활용할 수 있는지에 대한 인사이트를 얻을 수 있습니다.  

[실습 프로젝트의 동작 흐름 강의 자료 캡쳐]

  • 마지막으로 본 강의의 학습을 마친 후, 리액티브 프로그래밍과 관련된 앞으로의 학습 로드맵을 제시합니다. 

저희 강의의 특징은 무엇일까요?

  • 초급자의 눈높이에 맞춰서 리액티브 프로그래밍의 핵심 개념을 최대한 쉽게 이해시키고자 노력하였습니다.
  • 단순히 강의 자료의 설명만으로 그치지 않고, 수업마다 해당 수업의 예제 코드에 대한 설명이 무조건적으로 뒤따라옵니다. 다시 말해서 강의 자료만으로 이해되지 않는 부분은 예제 코드로 구체적으로 설명하고, 예제 코드를 직접 실행해서 결과를 확인하여 이해할 수 있도록 노력하였습니다.
  • 강의에서 사용한 모든 예제 코드를 github에 제공하여 수강생들이 예제 코드를 직접 타이핑하고 코드를 실행하여 결과를 확인하는데 참고할 수 있도록 하였습니다.

강의를 듣기 전에 무엇을 준비해야 할까요?

  • 당연한 이야기이겠지만 사용하시는 PC나 노트북에 JDK 1.8 이상이 설치되어있어야 합니다.
  • 저희 강의에서는 개발 툴로 IntelliJ IDE를 사용하였습니다. IntelliJ에 익숙하지 않으신 분들은 기존에 사용하고 계시는 IDE로 실습을 하셔도 상관은 없습니다.
  • 저희 강의를 듣기 위해서 여러분들이 준비해야하는 가장 중요한 준비물은 다름 아닌 새로운 기술을 배우고자 하는 의지와 결코 포기하지 않는 끈기입니다. ^^

여러분들의 의지와 끈기를 저에게 보여주세요. 여러분들이 RxJava의 진입장벽 위에 올라설 수 있도록 저도 최선을 다해서 도와드리겠습니다.


지난 강의 함께 보기 👀

Kevin의 알기 쉬운 RxJava 1부   추천강의 
리액티브 프로그래밍의 확실한 기본기

여러분들은 어떤 것들이 궁금하신가요?(Q&A)🙋‍♀️🙋‍♂️

Q. 비전공자도 들을 수 있나요?
A. 전공/비전공과는 무관합니다. Java에 대한 기본 지식이 있다면 누구나 수강 가능하다고 생각합니다. 참고로 저도 처음 시작은 비전공자였습니다. ^^ 다만, 2부 강의는 1부 강의를 수강한 후에 들으면 학습 이해도가 더 높아진다고 생각합니다.

Q. RxJava를 배우면 무엇이 좋은가요?
A. 앞서 소개글에서도 말씀드렸지만 RxJava를 배우면 복잡한 비동기 프로그래밍을 단순화할 수 있으며, 덧붙여서 명령형 프로그래밍 방식이 아닌 선언형 프로그래밍을 통해 프로그래밍에 대한 사고의 전환을 할 수 있습니다. 더 나은 개발자로 성장하는것은 덤이겠죠?^^ RxJava를 학습하고 나면 리액티브 프로그래밍의 기본기를 확실히 다질 수 있기 때문에 RxJs, RxAndroid, Spring Reactor 등을 학습하기가 훨씬 수월해집니다. 

Q. 강의는 어떤 방식으로 진행이 되나요?
A. 대부분의 수업이 강의 자료를 통한 개념 이해 → 예제 코드를 통해 개념을 눈으로 직접 확인하는 방식으로 진행이 됩니다. 1부에서는 예제 코드 이외에 추가적으로 퀴즈를 제공하였으나 2부 강의에는 별도의 퀴즈는 없으니 참고 부탁드리겠습니다.

Q. 강의에서 사용된 원본 예제 코드는 어디에서 다운로드받을 수 있나요?
A. 수업에서 설명하는 예제 코드는 모두 github에 올라가있으며 아래 주소에서 다운로드 받으실 수 있습니다.
예제 원본 소스 코드
https://github.com/ITVillage-Kevin/rxjava-episode2

실습 프로젝트 원본 소스 코드(서버측): https://github.com/ITVillage-Kevin/rxjava-episode2-practice

실습 프로젝트 원본 소스 코드(클라이언트측): https://github.com/ITVillage-Kevin/rxjava-episode2-practice-client

Q. 강의 자료는 어디에서 다운로드받을 수 있나요?
A. 각 섹션의 수업마다 수업에 사용한 강의 자료를 첨부 파일로 등록해 두었으니 필요하신 분은 다운로드 받아서 참고하시면 되겠습니다.

Q. 강의 자료 이외에 추천해주실 만한 참고 자료가 있을까요?
A. 리액티브 프로그래밍을 학습하는 데 있어 도움이 될만한 사이트는 아래에서 확인하시면 되겠습니다.

• http://reactivex.io/ 
리액티브 프로그래밍의 공식 사이트로 리액티브 프로그래밍의 기본기를 다지고 난 후에 참고하기 정말 좋은 사이트라고 생각합니다.

• https://github.com/reactive-streams/reactive-streams-jvm 
RxJava는 Reactive Streams를 구현한 구현체라고 할 수 있는데요. 이 Reactive Streams의 스펙을 정의해 둔 github 공식 자료입니다.

• https://gist.github.com/casamia918/93b8db69beb9ee06b92a96b2a234d48e 
리액티브 프로그래밍에 대해서 한국어로 잘 번역된 github 자료인데요. 한국어로 번역해주셔서 너무 감사하다는 말씀 전하고 싶네요.

• https://rxmarbles.com/ 
리액티브 프로그래밍의 핵심중에 핵심이라고 할 수 있는 연산자(Operator)들을 마블 다이어그램으로 잘 정리해 놓은 자료입니다.

• http://reactivex.io/RxJava/2.x/javadoc/ 
마지막으로 RxJava의 공식 javadoc 문서입니다. 2020년 현재 RxJava 3.0이 릴리즈되었기는 하나 3.0에서는 새로운 연산자 함수들이 많이 추가되었다고 단순하게 생각하시고 2.x 버전으로 개념을 확실히 잡은 다음에 3.0으로 넘어가는 게 좋을 것이라고 생각됩니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • Java의 멀티 쓰레드 프로그래밍의 어려움을 극복하고 싶은 분들

  • 선언형 프로그래밍 방식에 익숙해지고 싶은 분들

  • 리액티브 프로그래밍의 진입 장벽을 넘고 싶은 분들

  • Spring Reactive Web Application 개발을 위한 리액티브 프로그래밍 기본기를 다지고 싶은 분들

  • [Kevin의 알기 쉬운 RxJava 1부] 강의를 수강하신 분들

선수 지식,
필요할까요?

  • Java

  • 동기 프로그래밍과 비동기 프로그래밍의 차이

안녕하세요
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)로 편하게 얘기해주세요.

 

커리큘럼

전체

23개 ∙ (3시간 46분)

수업 자료

가 제공되는 강의입니다.

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

수강평

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