실용주의 프로그래머 Topic 35

Topic 35 액터와 프로세스

데이비드 토머스, 앤드류 헌트

Alt text

느낌표 ! (인상 깊은 문장 | 문맥)

액터는 자신만의 비공개 지역 상태를 가진 독립적인 가상 처리 장치다. 각 액터는 우편함을 하나씩 보유하고 있다.

p.259

프로세스는 본래 더 일반적인 가상 처리기로, 보통 운영 체제가 동시성을 지원하기 위하여 구현된다.

p.259

프로세스 별로 액터를 돌릴 수 있도록 구성하려는 것 같다.

액터는 언제나 동시성을 띤다

액터의 정의에서 찾아볼 수 없는 것이 몇 가지 있다.

  • 액터를 관리하는 것이 하나도 없다.
  • 시스템이 저장하는 상태는 오직 메시지 그리고 각 액터의 지역 상태뿐이다.
  • 모든 메시지는 일방향이다. 답장이란 개념은 없다
  • 액터는 각 메시지를 끝날 때까지 처리하고 중간에 다른 일을 하지 않는다. 즉, 한 번에 하나의 메시지만 처리한다.

그 결과 액터들은 아무것도 공유하지 않으면서 비동기적을 동시에 실행된다.

p.259-260

전역 상태를 사용하지 않기 위해 일방향으로 메시지를 전달하고 처리하도록 한다.

드러나지 않는 동시성

액터 모델에서는 동시성을 다루는 코드를 쓸 필요가 없다.

명시적으로 처음부터 끝까지 “이걸 한 다음 저걸 하라”는 코드를 쓸 필요도 없다. 액터가 수신하는 메시지에 따라 알아서 실행되기 때문이다.

p.265

동시성을 잘 사용한다는 것은 공유된 상태가 적을수록 좋다는 것을 의미하기도 하는 것 같다. 공유된 상태를 사용할 때 지저분하게 값을 수정하고 참조한다면 그것만큼 버그를 유발하고 찾기 어려운 것이 없지만 조금만 의식하지 않고 프로그래밍을 한다면 이와 같은 상황에 놓이기 십상이다.

Topic 35 느낌

Topic 35 에서는 최대한 독립적으로 작업을 실행해야 동시성 문제를 줄일 수 있다고 설명하고 있다.


실용주의 프로그래머 Topic 34

Topic 34 공유 상태는 틀린 상태

실용주의 프로그래머 Topic 36

Topic 36 칠판

NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지