Concurrency and Parallelism
기본 개념
Reactive Streams
Back pressure
Publisher가 생산하는 데이터 처리 속도보다 Subscriber가 소비하는 데이터 처리 속도가 늦을 때, 처리를 늦추거나 중단하는 기술.
Scale Cube
https://microservices.io/articles/scalecube.html
Mastering Akka
X axis scailing : 복제. 서버 앞에 Load Balencer를 설정하여 Traffic 분산, 높은 가용성 제공. Monolithic system에서 많이 사용하는 스케일링 방법.
Y axis scailing : 분할. 기능별로 애플리케이션 배포.
Z axis scailing : 복제 + 분할. 같은 서비스 컴포넌트를 모든 서버에 복제하지만, 각 서버는 일부 데이터만을 다룬다. 일반적으로 Sharding으로 알려짐. 대표적인 예시가 In-memory caching (like Redis)
활용
Java
Executor
ExecutorService
ScheduledExecutorService
ForkJoinPool
Future
CompletableFuture
Scala
Futures and Promises
용어