๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๋ ์ง์ ์ฅ๋ฒฝ์ ๋๊ณ ์ถ์ผ์ ๊ฐ์? Kevin์ ์๊ธฐ ์ฌ์ด RxJava๊ฐ ๊ทธ ๋ฒฝ์ ๋์ ์ ์๋ ํ์ ํค์๋๋ฆฌ๊ฒ ์ต๋๋ค.
Hot Publisher์ ๊ฐ๋ ๊ณผ Hot Publisher์ ์ข ๋ฅ
RxJava์์์ ์ฐ๋ ๋ ๊ด๋ฆฌ์์ธ Scheduler์ ๊ฐ๋ ๊ณผ ์ฌ์ฉ๋ฒ
RxJava ์ฝ๋์ ๋๋ฒ๊น ๋ฐฉ๋ฒ
RxJava์ฝ๋๋ฅผ ํ ์คํธํ๋ ๋ฐฉ๋ฒ
SSE ํต์ ์ ์ฌ์ฉํ Client์ Server๊ฐ์ RxJava ํ์ฉ
๐Kevin์ ์๊ธฐ ์ฌ์ด RxJava 2๋ถ ์ถ์๐
๋ฆฌ์กํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ, ์ด๋ฒ์๋ ํ์คํ ์๋ ค๋๋ฆด๊ฒ์!
[Cold Publisher ๋ฆฌ๋ทฐ ๊ฐ์ ์๋ฃ ์บก์ณ]
[Hot Publisher ๋ฆฌ๋ทฐ ๊ฐ์ ์๋ฃ ์บก์ณ]
[์ฐ๋ ๋์ ๊ฐ๋ ๊ฐ์ ์๋ฃ ์บก์ณ]
[์ค์ต ํ๋ก์ ํธ์ ๋์ ํ๋ฆ ๊ฐ์ ์๋ฃ ์บก์ณ]
์ฌ๋ฌ๋ถ๋ค์ ์์ง์ ๋๊ธฐ๋ฅผ ์ ์๊ฒ ๋ณด์ฌ์ฃผ์ธ์. ์ฌ๋ฌ๋ถ๋ค์ด RxJava์ ์ง์ ์ฅ๋ฒฝ ์์ ์ฌ๋ผ์ค ์ ์๋๋ก ์ ๋ ์ต์ ์ ๋คํด์ ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
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
๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ฐจ์ด
6,082
๋ช
์๊ฐ์
220
๊ฐ
์๊ฐํ
104
๊ฐ
๋ต๋ณ
4.8
์
๊ฐ์ ํ์
6
๊ฐ
๊ฐ์
- ์ฃผ๋ ฅ ์ธ์ด ๋๋ ๊ธฐ์ : 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๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต: