Reactive System의 설계 원칙

https://reactivemanifesto.org/

  1. Responsive(응답성): 시스템이 즉각적으로 반응함
  2. Resilent(회복성): 시스템이 장애상황일 때 응답성을 유지함
  3. Elastic(탄력성): 작업량이 다양하게 변화할 때에도 응답성을 유지함
  4. Message Driven(메시지 기반): Reactive System은 비동기 메시지를 주고받는것에 의존하여 느슨한 결합과 격리성, 위치 투명성을 보장함

Reactive Programming의 특징

명령형 프로그래밍의 예시

List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);
int sum = 0;

for (int number: numbers) {
	if (number > 6 && (number%2 != 0)) {
		sum += number;
	}
}

선언형 프로그래밍의 예시

List<Integer> numbers = Arrays.asList(1, 3, 21, 10, 8, 11);

int sum = numbers.stream()
		.filter(number -> number > 6 && (number%2 != 0))
		.mapToInt(number -> number)
		.sum();

Reactive Streams란?