Kevin의 알기 쉬운 RxJava 1부
Kevin의 알기 쉬운 RxJava 1부
수강정보
(4개의 수강평)
54명의 수강생
44,000원
지식공유자 : Kevin
18회 수업 · 총 7시간 30분 수업
기간 : 평생 무제한 시청
수료증 : 발급 강의
수강 난이도 : 초급
Kevin의 다른 강의 연관 로드맵

이 강의는

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

이런 걸 배워요

  • 리액티브 프로그래밍의 확실한 기본기
  • 선언형 프로그래밍의 이해
  • RxJava를 사용한 비동기 프로그래밍
  • Java 함수형 인터페이스와 람다 표현식
  • 마블 다이어그램을 통한 리액티브 연산자 이해하기
  • 퀴즈를 통한 리액티브 연산자 심화 학습

리액티브 프로그래밍, 알기 쉽고 확실하게 배워보세요!

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

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

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

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

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

  • Kevin의 알기 쉬운 RxJava 1부에서는 제일 먼저 리액티브 프로그래밍이란 무엇인가에 대해서 쉬운 예를 들어 설명을 합니다. 어떤 프로그래밍 언어이든지 간에 해당 언어의 큰 틀 안에서의 특징을 이해하고 학습을 시작하는것은 대단히 중요하다고 생각합니다.
  • 리액티브 프로그래밍에서 빼놓을 수 없는 마블 다이어그램을 보는 방법을 그림으로 최대한 쉽게 설명을 하여 수강생들이 혼자서도 마블 다이어그램을 이해할 수 있도록 노력하였습니다.

[마블 다이어그램 보는 법 강의 자료 캡쳐]

  • RxJava는 리액티브 프로그래밍의 스펙인 Reactive Streams의 구현체인데요. 이 Reactive Streams에서 정의한 Publisher와 Subscriber 간의 동작 흐름을 그림을 통해 쉽게 이해할 수 있도록 했습니다.

[Publisher와 Subscriber간의 동작 흐름 강의 자료 캡쳐]

  • Flowable과 Observable의 결정적인 차이점인 배압(Back Pressure)에 대해서 최대한 쉽게 설명합니다.

[배압의 개념에 대한 강의 자료 캡쳐]

  • RxJava에서 사용되는 함수형 프로그래밍에 대한 기본적인 개념을 배워봅니다. Java 8에서 새롭게 도입된 함수형 인터페이스와 람다 표현식은 RxJava에서 광범위하게 사용되는 프로그래밍 기법으로 그 개념을 꼭 이해하고 넘어갈 수 있도록 기본적인 개념을 쉽게 설명합니다.
  • RxJava에서 사용되는 연산자(Operator)함수에 대해서 설명을 하고 RxJava 1부를 마무리합니다. RxJava는 연산자 함수로 시작해서 연산자 함수로 끝난다고해도 과언이 아닐 정도로 연산자 함수는 RxJava에서 가장 중요한 부분입니다. 이번 강의에서 연산자 함수의 유형별로 다양한 연산자 함수를 마블 다이어그램 함께 이해하고, 예제 코드를 직접 실행시켜보면서 각각의 연산자 함수들이 어떤 기능을 하고 어떤식으로 동작하는지 이해시켜 드릴 생각입니다.

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

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

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

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

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

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

Q. 비전공자도 들을 수 있나요?
A. 전공/비전공과는 무관합니다. Java에 대한 기본 지식이 있다면 누구나 수강 가능하다고 생각합니다. 참고로 저도 처음 시작은 비전공자였습니다. ^^

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

Q. 강의는 어떤 방식으로 진행이 되나요?
A. 대부분의 수업이 강의 자료를 통한 개념 이해 → 예제 코드를 통해 개념을 눈으로 직접 확인하는 방식으로 진행이 되고, 퀴즈가 필요한 수업에는 수강생들이 직접 퀴즈를 풀어서 해당 수업의 내용을 자신의 것으로 만들 수 있도록 수업이 끝나기 전에 퀴즈를 제시했습니다.

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

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 Boot에서 Reactor, WebFlux를 더 잘 활용하기 위해 리액티브 프로그래밍의 기본기를 확실히 다지고 싶은 분들
  • [Kevin의 알기 쉬운 Java 개발자 로드맵 이야기] 강의를 기억해주시는 분들

선수 지식

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

공개 일자

2020년 8월 24일 (마지막 업데이트 일자 : 2020년 8월 24일)

지식공유자 소개

주력 언어 또는 기술 : Java, Angular, RxJava 웹 애플리케이션에서 Back-end를 주로 다루는 10년차 현직 개발자입니다.

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

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

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

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

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

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

5.0
4개의 수강평
default_profile.png
황진성 9일 전
예전부터 RxJava, Observable 등을 들었을 때, 항상 모호하고 어려울 것만 같은 느낌이 있었는데요. 막상 제대로 배우고 나니 그러한 두려움이 없어진 것 같습니다. Reactive Programming을 배울만한 곳이 많이 없어서 기회가 없었는데, Kevin님 덕분에 잘 배웠습니다. 2부 기다리겠습니다.
Kevin

Kevin 9일 전
리액티브 프로그래밍을 이해하는데 도움 되셨다니 정말 기쁘네요. ☺ 기회가 된다면 2부에서 다시 뵐게요. 감사합니다!

image
Kevin 2달 전
안녕하세요! 강사입니다. 제가 첫번째 수강 후기를 남기게 되었네요. ^^ 제가 만든 강의지만 저도 끝까지 수강을 하였기에 별점과는 상관없이 객관적인 수강평을 주관적으로 남겨보겠습니다. 마이크에서 나온 잡음은 거의 제거했지만 제 말소리에서 나오는 잡음은 여전히 좀 남아있더라구요. ^^; 새로운 강의를 만들면서 점점 나아지도록 노력하겠으니 너그럽게 봐주시면 감사드리겠습니다. 개인적인 생각으로는 리액티브 프로그래밍의 개념을 잡기에 나쁘지 않은 강의라 생각하며, 자바 개발의 대세인 Spring 에서 Web Flux를 사용하기 위해 미리 들어두면 괜찮은 강의라 생각합니다. ^^ Reactor와 Web Flux에 대한 얘기는 [새소식] 공지에서 이따금씩 하도록 하겠습니다. 그럼 강의에서 또 뵈어요 수강생 여러분! ^^;;

교육과정

모두 펼치기 18 강의 7시간 30분
섹션 1. 실습 환경 구축
1 강의 16 : 19
섹션 2. 리액티브 프로그래밍 구성 요소와 친해지기
3 강의 87 : 49
리액티브 스트림즈(Reactive Streams)란?
17 : 53
Observable과 Flowable에 대한 이해
51 : 41
Single, Maybe, Completable
18 : 15
섹션 3. Java에서의 함수형 프로그래밍 기본 지식
2 강의 43 : 02
함수형 인터페이스와 람다의 개념 파악
26 : 18
메서드 레퍼런스란?
16 : 44
섹션 4. 리액티브 연산자(Reactive Operators)에 익숙해지기
10 강의 268 : 25
리액티브 연산자 개요 및 생성 연산자
27 : 47
데이터 필터링 연산자
25 : 55
변환 연산자 (1)
34 : 28
변환 연산자 (2)
20 : 59
결합 연산자
41 : 07
에러 처리 연산자
21 : 37
retry 연산자 추가 설명
05 : 34
유틸리티 연산자
32 : 27
조건과 불린 연산자
32 : 44
데이터 집계 연산자
25 : 47

수강 문의

  • 김대일 프로필 김대일
    2020-09-23 67335

    안녕하세요. rx 공부하기 위해 수강을 고민 중입니다. 1부에는 어떤 구성이고, 2부에는 어떤 내용을 구성하실지 질문드립니다. 그리고 2부는 언제쯤 볼 수 있나요?

    Kevin
    Kevin
    Kevin
    2020-09-23 71988

    안녕하세요? 저희 강의에 관심 가져주셔서 감사드릴게요. 제가 지금 업무중인데 이따가 점심 시간에 상세히 답변 드려도 괜찮을까요? ^^; 혹시나 답변 기다리실까봐 먼저 연락 드렸네요. 그럼 점심 시간에 다시 답변 드리겠습니다. 감사합니다. ------------------------------------------------------------------------------------------------------ 추가 답변 새글을 등록할 수가 없어서 기존 답변 글에 추가로 적도록하겠습니다. * 1부에는 어떤 구성이고, 2부에는 어떤 내용을 구성하실지 질문드립니다. --> 강의 소개 탭의 교육 과정란에 더 자세하게 나와 있지만 글로 다시 간단하게 말씀 드리자면, 1부 강의는 아래의 총 5개의 섹션으로 구성되어 있고, 섹션별 전체 강의는 총 17강의로 구성이 되어 있는데요. 대부분의 섹션이 이론 + 예제 코드 or 퀴즈로 구성이 되어 있습니다. 섹션별로 다시 말씀을 드리자면, * 섹션 0 : 리액티브 프로그래밍 개요 --> 리액티브 프로그래밍이 무엇인지에 대해서 개념과 리액티브 프로그래밍에서 연산자 함수를 사용할 때 자주 보게되는 마블 다이어그램을 보는 방법에 대해서 설명을 합니다. * 섹션 1: 실습 환경 구축 --> 수강생들이 1부 강의의 예제 코드를 따라하고 결과를 직접 눈으로 확인하실 수 있도록 실습 환경을 구축하는 섹션입니다. * 섹션 2: 리액티브 프로그래밍 요소와 친해지기 --> 리액티브 프로그래밍의 구성요소들에 대해서 최대한 이해하기 쉽게 설명을 하는 섹션인데요. 어떻게 보면 다음 장으로 넘어가기 전에 가장 중요한 섹션이라고 볼수가 있겠습니다. * 섹션 3: Java에서의 함수형 프로그래밍 기본 지식 --> RxJava로 리액티브 프로그래밍을 하기 위해서는 Java 8부터 지원하는 함수형 프로그래밍의 기본 지식이 필요하기 때문에 수업을 따라가는데 문제 없을 수준 정도의 함수형 프로그래밍 기본 지식에 대해서 설명을 드리는 섹션입니다. * 섹션 4: 리액티브 연산자에 익숙해지기 --> 리액티브 프로그래밍의 핵심 요소인 연산자에 대한 내용을 꽤 많은 강의를 할애해서 설명을 드립니다. 그만큼 중요하니까요. 수강생들이 연산자 함수에 익숙해질 수 있도록 대부분 이 섹션에서 퀴즈가 추가 되었습니다. 여기까지 1부 구성이구요. 2부 구성 아래와 같습니다. * 섹션 0: Processor와 Subject --> Publisher와 Subscriber의 기능을 모두 가지고 있고, Hot Publisher인 Processor와 Subject에 대해서 설명을 드립니다. * 섹션 2: 스케쥴러 --> RxJava에서 쓰레드의 관리자 역할을 하는 스케쥴러에 대해서 학습합니다. RxJava의 스케쥴러를 사용함으로 인해서 순수 자바의 쓰레드 프로그래밍의 복잡성과 문제점에 대한 고민을 덜어줍니다. * 섹션 2: RxJava 코드 디버깅 --> 리액티브 프로그래밍은 비동기 프로그래밍 방식이기때문에 일반적인 Java에서의 디버깅 방식으로는 정상적으로 디버깅을 할수없는데요. RxJava에서 어떤식으로 디버깅을 진행하는지에 대한 학습을 이번 섹션에서 진행합니다. 섹션 3, 섹션 4: RxJava에서의 단위 테스트 --> 디버깅과 비슷한 이유로 비동기 프로그래밍 방식인(정확하게 얘기하자면 Non-Blocking 방식) RxJava에서 단위 테스트를 어떤식으로 진행하는지에 대해서 학습합니다. 섹션 5: RxJava 실습 --> RxJava를 이용해서 Spring Framework에서 클라이언트와의 요청/응답을 어떤식으로 사용할 수 있는지에 대한 실습을 진행합니다. 이번 실습에서는 SSE(Server Sent Event) 프로토콜을 이용해서 서버쪽에서 끊임없이 전달 되는 데이터를 클라이언트가 어떻게 처리할 수 있는지에 대한 실습을 진행할 예정입니다. 그리고 마지막으로 RxJava 학습 이후의 로드맵을 간단하게 제시하고 2부 강의를 마칩니다. * 2부는 언제쯤 볼 수 있나요? --> 2부는 현재 레코딩을 진행중인데요. 스케쥴러 섹션까지 강의 제작이 완료된 상태입니다. 직장을 다니다 보니 퇴근 시간 이후에만 작업을 할수가 있어서 2부 오픈은 시간이 좀 걸릴것 같구요. 예상으로는 10월 말 정도에 2부 강의를 오픈할 수 있도록 최선을 다할 생각입니다. ^^; 1, 2부를 다 학습할 수 있으면 제일 좋겠지만 리액티브 프로그래밍의 핵심 개념들을 이해하는데는 1부만으로도 충분하긴한것 같습니다.^^; 수강을 하고 안하고를 떠나서 리액티브 프로그래밍은 지금은 아닐지 모르겠지만 더 괜찮은 개발자가 되기 위해서는 향후 반드시 필요한 기술이라고 생각되니 기회가 되신다면 꼭 자신의 것으로 만들어보시길 바래보겠습니다. 제 강의를 듣고 나중에 Spring Web Reactive의 핵심이 되는 Reactor를 접하게 되었을때 조금 더 쉽게 자신의 것으로 만들 수 있었다라는 얘기를 수강생들한테 언젠가는 꼭 듣고 싶네요.^^; 답변이 충분히 되셨나 모르겠네요. 궁금하신 부분이 있으시면 편하게 더 질문 해주시면 감사드릴게요. 감사합니다!

다른 수강문의 보기
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스