Promise 패턴에 대해 공부하다가 이것이 칼 휴잇(Carl Hewitt)에 의해 제안된 Actor Model에 큰 영향을 받았다는 것을 알게 되었다.
그 이후 칼이 직접 Actor Model에 대해 설명하고 질문에 답변하는 영상을 보게 되었다.
https://www.youtube.com/watch?v=7erJ1DV_Tlo
오늘은 이 내용에 대해 요약해보고자 한다.
Actor 모델은 동시성(Concurrency) 문제를 해결하기 위한, 확장 가능한 분산 시스템 설계를 위한 계산 모델(computational model)이다.
Actor는 계산의 단위이며 아래 세 가지의 요소로 구성된다.
- 연산 (Processing)
- 저장소 (Storage)
- 통신 (Communication)
Actor는 다음과 같은 기본적인 동작 원칙을 가진다. 공리(Axiom)라고도 부른다.
- 새로운 Actor 생성
- 다른 Actor로 메시지 전송
- 다음에 받은 메시지를 어떻게 다뤄야 할지 지정함
Actor는 하나 또는 다수의 address를 가지고 있으며 이에 대한 메일 박스를 가진다.
Actor 간에 상태를 공유하지 않아 경쟁 상태(Race condition)나 데드락(deadlock)같은 문제를 가지지 않는다.
영상에서는 Future에 대한 개념도 소개된다.
Future는 Actor Model에서 비동기 연산의 결과를 나타내는 객체로, 연산이 완료되기 전에 미래의 값에 접근할 수 있도록 한다.
Actor는 메시지를 전송한 후 즉시 응답을 기다리지 않고 다음 작업을 이어나가며, Future는 그 사이에 비동기적으로 연산을 수행하게 된다.
이로 인해 비동기 처리와 논블로킹(Non-blocking) 작업이 가능해져 시스템의 응답성과 확장성이 향상된다.
Future 객체는 연산이 완료되었을 때 성공, 실패했을 때에는 예외를 반환하며, 이를 통해 Actor는 필요할 때 결과 값을 비동기적으로 확인하거나 추가 작업을 수행할 수 있다.
칼이 설명한 불확정성도 아주 재밌는 개념이었다.
Indeterminacy(불확정성)은 Actor 간의 메시지 전달 순서와 처리 결과가 예측 불가능할 수 있음을 의미한다.
Actor는 서로 독립적으로 작동하며, 각각의 메시지를 비동기적으로 처리하기 때문에 동일한 입력 상황에서도 시스템의 상태와 메시지 전달 시간에 따라 서로 다른 결과가 나올 수 있다. (생각만해도 머리 어질..)
Actor Model에서 불확정성은 현실 세계의 이벤트 기반 시스템과 유사하다.
예를 들어, 이메일을 주고받을 때 상대방이 언제 메시지를 확인하고 답장할지는 알 수 없지만, 시스템은 계속해서 동작하듯이..
이처럼 Actor는 모든 메시지에 대해 순차적 처리를 보장하지 않으며, 메시지를 수신하는 시점과 상태에 따라 결과가 달라질 수 있는 특성을 가진다.
뛰어난 세 명의 토론을 듣는 것만으로도 40분이 매우 보람찼다. 머리는 따라가기 아주 바빴다.
'IT 교양' 카테고리의 다른 글
Domain-Driven Design: 도메인 주도 설계 (0) | 2025.02.21 |
---|---|
eBook은 어떻게 동작할까? (1) | 2025.01.22 |
OpenAPI 생성 코드 변경에 무관한, BASE_PATH 주입 (Angular) (3) | 2025.01.04 |
북유럽 나라들이 오픈소스 소프트웨어 강국인 이유 (0) | 2024.08.26 |
Command-query separation (명령 질의 분리) (0) | 2024.08.06 |