에듀테크 프로젝트 대시보드
액터 모델 (Actor Model)
액터(Actor)는 상태 + 행동 + 메일박스(우편함)를 캡슐화한 독립 실행 단위입니다. 액터끼리는 메모리를 공유하지 않고 오직 비동기 메시지로만 통신하며, 자신의 메일박스에 도착한 메시지를 한 번에 하나씩만 순서대로 처리합니다. 그래서 락(lock)이나 뮤텍스 없이도 데이터 경합(race condition)이 원천적으로 생기지 않습니다. Erlang/Elixir, Akka(Scala/Java) 등이 이 모델을 사용합니다.
Ping과 Pong, 두 액터가 서로에게 메시지를 주고받습니다. 메시지는 즉시 처리되지 않고 상대방의 메일박스에 쌓였다가 순서대로 꺼내져 처리됩니다. "동시에 3번 보내기"를 눌러 메일박스에 메시지가 쌓이는 것도 확인해보세요.
액터 시스템은 액터들을 트리로 묶고 감독자(Supervisor)가 자식 액터를 지켜봅니다. 자식 하나가 예외로 죽어도 그 실패는 그 액터 안에 격리되고, 감독자가 "one-for-one" 전략으로 해당 액터만 새 상태로 재시작합니다. 다른 형제 액터는 전혀 영향을 받지 않습니다 — 방어 코드를 촘촘히 짜는 대신 "일단 죽게 두고 깨끗하게 재시작"하는 철학입니다.