π 리μν°λΈ μ μΈλ¬Έ
βοΈΒ Reactive System
π νΉμ§
- λμ μλ΅μ±
- μ μ°νκ³ νλ ₯μ
- λ©μμ§ κΈ°λ° λμ
π μ€κ³ μμΉ
- Reponsive - μλ΅μ±
- μμ€ν
μ΄ κ°λ₯ν μ¦κ°μ μΌλ‘ μλ΅ν΄μΌ νλ€.
- Resilient - ν볡μ±
- μμ€ν
μ΄ μ₯μ μ μ§λ©΄ν΄λ μλ΅μ±μ΄ μ μ§λμ΄μΌ νλ€.
- Elastic - νλ ₯μ±
- μμ
λμ΄ λ€μνκ² λ³ννλλΌλ μλ΅μ±μ΄ μ μ§λμ΄μΌ νλ€.
- Message Driven
- λΉλκΈ° λ©μμ§λ₯Ό μ£Όκ³ λ°λ κ²μ μμ‘΄ν΄ λμ¨ν κ²°ν©κ³Ό κ²©λ¦¬μ± (Isolation), μμΉ ν¬λͺ
μ±μ 보μ₯ν΄μΌ νλ€.
π Reactive Programming μ΄λ?
- Reactive μμ€ν
μ ꡬμΆνλλ° νμν νλ‘κ·Έλλ° λͺ¨λΈ
- λ°μ΄ν° μμ€μ λ³κ²½μ΄ μμ λ λ§λ€ λ°μ΄ν°λ₯Ό μ ννλ€.
- μ΄λ²€νΈ λ°©μμΌλ‘ μ νλ¨
- μ€νν λμμ ꡬ체μ μΌλ‘ λͺ
μνμ§ μκ³ λͺ©νλ§ μ μνλ€.
- μ μΈν νλ‘κ·Έλλ° ν¨λ¬λ€μ
- ν¨μν νλ‘κ·Έλλ° κΈ°λ²μ΄ μ¬μ©λλ€.
βοΈ λͺ
λ Ήν νλ‘κ·Έλλ° VS μ μΈν νλ‘κ·Έλλ°
π λͺ
λ Ήν νλ‘κ·Έλλ°
- μ ν΅μ μΈ κ³ κΈ μΈμ΄μ νλ‘κ·Έλλ° λ°©μμ λ»νλ€.
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int sum = 0;
for(int i: list)
if(i % 2 == 0)
sum += i;
π μ μΈν νλ‘κ·Έλλ°
- 체μΈν μ½λλ₯Ό μ¬μ©ν΄ μ μΈμ νλ λ°©μ
List<Integer> list = Arrays.asList(1, 2, 3, 4);
int sum = list.stream()
.filter(i -> i % 2 == 0)
.mapToInt(i -> i)
.sum();
βοΈ Reactive Streams
- Reactive νλ‘κ·Έλλ°μ νμ€ν ν λͺ
μΈ (interface)
- Publisher - 곡κΈμ
- Subscriber - ꡬλ
μ
- Subscription - ꡬλ
λͺ©λ‘
- Processor - 곡κΈκ³Ό ꡬλ
μ λμμ ν μ μμ
- Reactive Streams μ ꡬν체
- RxJava
- Java 9 Flow API
- Akka Streams
- Reactor
- β¦