Reactive System의 설계 원칙
https://reactivemanifesto.org/
- Responsive(응답성): 시스템이 즉각적으로 반응함
- Resilent(회복성): 시스템이 장애상황일 때 응답성을 유지함
- Elastic(탄력성): 작업량이 다양하게 변화할 때에도 응답성을 유지함
- 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란?