안녕하세요, 2부 강의 역시 제가 제일 먼저 완강을 하고 수강평을 남기게되었습니다. ^^ 1부/2부에 걸쳐서 리액티브 프로그래밍에 대해서 최대한 쉽게 이해시켜드리려고 노력했는데 어떠셨는지 모르겠네요. 아무튼 리액티브 프로그래밍을 이해하시는데 제 강의가 조금이라도 도움이 되길 바래볼게요. 감사합니다!
5.0
myrtlepn
100% 수강 후 작성
RXJava에 필요한 내용을 간결하고 이해가 잘 가도록 설명해주시네요 감사합니다
5.0
윤지상
100% 수강 후 작성
굿굿 갈끔한 강의 입니다. 아주 좋았어요!
수강 후 이런걸 얻을 수 있어요
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에 제공하여 수강생들이 예제 코드를 직접 타이핑하고 코드를 실행하여 결과를 확인하는데 참고할 수 있도록 하였습니다.
Q. 비전공자도 들을 수 있나요? A. 전공/비전공과는 무관합니다. Java에 대한 기본 지식이 있다면 누구나 수강 가능하다고 생각합니다. 참고로 저도 처음 시작은 비전공자였습니다. ^^ 다만, 2부 강의는 1부 강의를 수강한 후에 들으면 학습 이해도가 더 높아진다고 생각합니다.
Q. RxJava를 배우면 무엇이 좋은가요? A. 앞서 소개글에서도 말씀드렸지만 RxJava를 배우면 복잡한 비동기 프로그래밍을 단순화할 수 있으며, 덧붙여서 명령형 프로그래밍 방식이 아닌 선언형 프로그래밍을 통해 프로그래밍에 대한 사고의 전환을 할 수 있습니다. 더 나은 개발자로 성장하는것은 덤이겠죠?^^ RxJava를 학습하고 나면 리액티브 프로그래밍의 기본기를 확실히 다질 수 있기 때문에 RxJs, RxAndroid, Spring Reactor 등을 학습하기가 훨씬 수월해집니다.
Q. 강의는 어떤 방식으로 진행이 되나요? A. 대부분의 수업이 강의 자료를 통한 개념 이해 → 예제 코드를 통해 개념을 눈으로 직접 확인하는 방식으로 진행이 됩니다. 1부에서는 예제 코드 이외에 추가적으로 퀴즈를 제공하였으나 2부 강의에는 별도의 퀴즈는 없으니 참고 부탁드리겠습니다.
• 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 개발을 위한 리액티브 프로그래밍 기본기를 다지고 싶은 분들
안녕하세요, 2부 강의 역시 제가 제일 먼저 완강을 하고 수강평을 남기게되었습니다. ^^ 1부/2부에 걸쳐서 리액티브 프로그래밍에 대해서 최대한 쉽게 이해시켜드리려고 노력했는데 어떠셨는지 모르겠네요. 아무튼 리액티브 프로그래밍을 이해하시는데 제 강의가 조금이라도 도움이 되길 바래볼게요. 감사합니다!