반응형
리액티브프로그래밍
- 마이크로서비스를 구현하는 한 가지 방법.
리액티브 정리
- 반응성(Responsive) : 시스템이 최대한 빨리 응답함을 의미함.
- 복원력(Resilience) : 일부분이 문제가 발생하더라도 시스템을 사용할 수 있음.
- 탄력성(Elastic) : 시스템은 추가 자원을 사용해 다양한 레벨의 부하를 처리할 수 있음. 로드가 피크가 된 후 자원이 다시 해제됨.
- 메시지 기반(Message Driven) : 시스템에서 비동기 통신(메시지기반)을 사용함.
서버 애플리케이션 비교
- 기존 vs 리액티브
- 기존
- 일반적으로 들어오는 요청을 특정 스레드에서 처리함.
- 해당 요청이 데이터베이스에 요청해야 한다면 요청 결과가 도착할 때까지 스레드는 블로킹됨.
- 각 네트워크 연결에 대해 병렬로 처리되는 각 요청에 대해 스레드가 제공되야 함.
- 리액티브
- 애플리케이션은 이벤트에만 반응함.
- I/O 인스턴스를 기다리고 있기 때문에 블로킹되면 안됨.
- 인입된 HTTP 요청과 같은 이벤트를 기다림.
- 요청이 도착하면, 애플리케이션은 로직을 실행한 다음 어느 시점에 데이터베이스로 호출을 전송함.
- 애플리케이션은 데이터베이스 호출 결과를 기다리지 않고, HTTP 요청 처리를 일시 중단.
- 데이터 베이스 호출 결과 이벤트가 도착하면, HTTP 요청 처리가 다시 시작됨.
- 오직 하나의 스레드만 필요, 스레드는 현재 이벤트를 처리함.
- 기존
리액티브 프로그래밍이 마이크로서비스에서 반드시 필요한 것은 아님.
- 마이크로 서비스를 리액티브 프로그래밍으로 구현할지에 대한 것은 각 마이크로서비스마다 다를 수 있음.
참고 사이트
- 리액티브 선언문(Thre Reactive Manifesto) : https://www.reactivemanifesto.org/
- 리액티브 프로그래밍 wiki : https://en.wikipedia.org/wiki/Reactive_programming
300x250
'좋아하는 것_매직IT > 10.microservice' 카테고리의 다른 글
5. 마이크로서비스, 왜 가벼울까? (0) | 2021.01.12 |
---|---|
4.마이크로서비스, 실제적인 서비스란 무엇인가? (0) | 2021.01.12 |
3.마이크로서비스, 마이크로(micro) 아키텍처와 매크로(macro) 아키텍처로 나눠야 하는 이유? (0) | 2021.01.12 |
1. 마이크로서비스 , 구현을 위한 요구사항은 무엇일까요? (0) | 2021.01.11 |
0. 마이크로서비스 , 정의를 해볼께요. (0) | 2021.01.11 |