πŸ”— λ¦¬μ—‘ν‹°λΈŒ μ„ μ–Έλ¬Έ

✏️ Reactive System

πŸ“ νŠΉμ§•

  • 높은 응닡성
  • μœ μ—°ν•˜κ³  탄λ ₯적
  • λ©”μ‹œμ§€ 기반 λ™μž‘

πŸ“ 섀계 원칙

  1. Reponsive - 응닡성
    • μ‹œμŠ€ν…œμ΄ κ°€λŠ₯ν•œ μ¦‰κ°μ μœΌλ‘œ 응닡해야 ν•œλ‹€.
  2. Resilient - νšŒλ³΅μ„±
    • μ‹œμŠ€ν…œμ΄ μž₯애에 직면해도 응닡성이 μœ μ§€λ˜μ–΄μ•Ό ν•œλ‹€.
  3. Elastic - 탄λ ₯μ„±
    • μž‘μ—…λŸ‰μ΄ λ‹€μ–‘ν•˜κ²Œ λ³€ν™”ν•˜λ”λΌλ„ 응닡성이 μœ μ§€λ˜μ–΄μ•Ό ν•œλ‹€.
  4. 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)
    1. Publisher - κ³΅κΈ‰μž
    2. Subscriber - κ΅¬λ…μž
    3. Subscription - ꡬ독 λͺ©λ‘
    4. Processor - 곡급과 ꡬ독을 λ™μ‹œμ— ν•  수 있음
  • Reactive Streams 의 κ΅¬ν˜„μ²΄
    1. RxJava
    2. Java 9 Flow API
    3. Akka Streams
    4. Reactor
    5. …
profile
잘λͺ»λœ λ‚΄μš© PR ν™˜μ˜

0개의 λŒ“κΈ€