Scala Future의 Eager Evaluation과 Applicative Functor를 활용한 병렬 처리
·2017.09.02 00:00
핵심 내용
Scala Future의 eager evaluation 특성과 Applicative Functor를 활용해 순차 호출의 병목을 해결하고 병렬 처리를 최적화하는 방법을 소개한다.
1 / 2
자세히 보기
마이크로 서비스 아키텍처에서 여러 API를 호출할 때 Future의 flatMap을 이용한 순차 연동은 각 호출이 완료될 때까지 대기하므로 성능 저하를 유발한다. Scala의 기본 Future는 eager evaluation을 지원하여 선언 시점에 즉시 실행되는 특성이 있다. Cats의 Future instance는 내부적으로 flatMap을 사용하여 ap를 구현하지만, eager evaluation 덕분에 product나 mapN 연산 시 이미 실행 중인 Future들의 결과를 조합하므로 병렬 동작이 가능하다. 반면 Scalaz와 Monix에서는 Nondeterminism 기능을 제공하여 Applicative를 병렬로 연산할지 순차로 연산할지 명시적으로 선택할 수 있게 한다. 이를 통해 독립적인 Future들을 병렬로 실행하고 결과를 조합하여 응답 시간을 단축할 수 있다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.