일곱가지 모델

동시성과 병렬성에 대한 거시적인 안목을 제공하기 위해서 다음과 같은 일곱가지 모델을 선택했다.

스레드와 잠금장치

스레드와 잠금장치는 문제점이 많지만 이 책에서 설명하는 다양한 모델의 배후에서 동작하는 기본 기술에 해당한다. 많은 동시성 소프트웨어에서 여전히 기본적인 선택으로 활용되고 있다.

함수형 프로그래밍

함수형 프로그래밍은 동시성과 병렬성을 잘 지원할 뿐만 아니라 여러 이유로도 사용이 확산되고 있다. 가변 상태를 원천적으로 제거했기 때문에 함수형 프로그래밍은 기본적으로 스레드-안전을 보장하며 병렬처리가 쉽다.

클로저 방식 - 아이덴티티와 상태 분리하기

클로저 언어는 명령형 프로그래밍과 함수형 프로그래밍을 효과적으로 결합하여 양쪽의 접근 방식이 지닌 장점을 극대화하고 널리 보급했다.

액터

액터모델은 광범위한 사용처를 가진 범용의 동시성 프로그래밍 모델이다. 공유 메모리와 분산 메모리 아키텍처 양측에서 활용이 가능하고, 지라적 분산을 적극 지원하고, 장애 허용과 탄력성에 대한 지원이 특히 강하다.

데이터 병렬성

우리가 사용하는 노트북 내부에는 슈퍼컴퓨터가 숨어 있다. GPU는 주로 그래픽 처리를 위해서 병렬성을 활용하지만, 그러한 기능은 사실 여러 가지 다른 작업을 위해서 활용될 수 있다. 유한 요소에 대한 분석을 수행하거나, 유체역학 계산을 수행하거나, 기타 엄청난 계산을 요구하는 코드를 작성하는 경우라면 GPU 성는은 거의 다른 방법 전부를 능가할 것이다.

람다 아키텍처

병렬성이 아니면 빅데이터 처리는 불가능하다. 여러 개의 컴퓨팅 자원을 활용할 수 있을 때에 한해서 우리는 테라바이트에 달하는 데이터를 처리할 수 있다. 람다 아키텍처는 맵리듀스와 스트리밍 프로세스의 장점을 결합해서 다양한 빅데이터 문제를 해결할 수 있도록 해준다.

이러한 모델은 제각각 가장 알맞은 분야가 있다. 각 장을 읽으면서 다음의 질문들을 염두에 두기 바란다.

반응형

+ Recent posts