<aside>
🎯 3줄 요약 — ① 액터 모델은 1973년 Hewitt의 AI 연구용 형식 체계에서 이름을 얻었고, 그 이론을 모른 채 같은 결론에 이른 Erlang(1986)이 실전에서 증명했다. 이후 Akka(2009) → Orleans·Akka.NET(2014~2015) → Ray·Swift·Dapr로 50년을 이어 온 검증된 동시성 모델이다. 이제 센세이션이 아니라 "지루한(boring)" 기술이고, 영어권 엔지니어링 문화에서 이 말은 칭찬이다. ② 액터는 "상태를 가진 객체 + 우체통 + 한 번에 한 통" 이다. lock을 쓰는 대신 메시지를 줄 세우고, try/catch를 늘리는 대신 감독자(supervisor)가 다시 띄운다. ③ AgentZero Lite(.NET 10 · WPF · Akka.NET 1.5)는 이 지루한 기술 위에 터미널·AI 에이전트·음성 파이프라인·멀티 에이전트 오케스트레이션을 올리고, 온디바이스 LLM(Gemma 4 GGUF via LLamaSharp)을 액터 안의 에이전트 루프로 돌린다.
</aside>
<aside>
👤 대상 독자 — C#/.NET은 익숙하지만 액터 모델은 처음인 개발자. async/await, lock, Task, Dispatcher.Invoke는 써 봤지만 Tell, Become, Supervision은 낯선 사람을 기준으로 썼다. 1~4장은 액터 일반론(코드 없이도 읽힘), 5~8장은 실제 프로젝트 해부다. 샘플 코드는 이해를 돕는 최소한만 넣었다.
</aside>
<aside>
📌 기준 시점 2026-10-02. 분석 대상은 psmon/AgentZeroLite의 Project/AgentZeroWpf + Project/ZeroCommon (커밋 a63f553, v0.25.1). 런타임은 .NET 10, Akka/Akka.Streams 1.5.67 (2026-08-26 기준 최신 안정판은 1.5.71). 외부 출처는 전부 2026-10-02에 확인했다. 벤더 자료·2차 자료는 본문에 따로 표시했다.
</aside>
<aside> 🌏 English edition — Boring Enough to Trust — 50 Years of the Actor Model for .NET Developers, and a Teardown of AgentZero Lite
</aside>
닷넷 개발자라면 이런 코드를 한 번쯤 만났을 것이다.
private readonly object _gate = new();
private int _pending;
void OnOutput(string text) // PTY 스레드에서 불림
{
lock (_gate) { _buffer.Append(text); _pending++; }
Application.Current.Dispatcher.Invoke(() => Render()); // UI 스레드로
}
처음엔 멀쩡하다. 그런데 터미널 탭이 열 개가 되고, LLM이 백그라운드에서 토큰을 쏟아 내고, 마이크 음성이 실시간으로 인식되고, 다른 AI CLI가 결과를 되돌려 보내기 시작하면 lock의 개수와 순서를 머릿속에 다 들고 있어야 한다. 데드락은 재현이 안 되고, 예외 하나가 엉뚱한 스레드에서 터져 앱 전체가 내려간다.
액터 모델은 이 문제에 대해 50년 동안 같은 대답을 해 왔다. "공유하지 말고, 보내라. 그리고 죽으면 다시 띄워라."
<aside> 💬 "좋은 기술은 더 이상 이슈가 없는 기술이다." — Boring doesn't mean bad. It means there are fewer surprises left. Boring은 나쁘다는 뜻이 아니다. 더 이상 놀랄 일이 별로 없다는 뜻이다.
</aside>
영어권 개발자 커뮤니티에서 boring이 칭찬이 된 데에는 분명한 출발점이 있다. Etsy 초기 엔지니어 출신인 Dan McKinley가 2015년 3월 30일 블로그에 「Choose Boring Technology」를 올렸고, 같은 해 OSCON 2015 발표(당시 Stripe 소속)와 슬라이드판 boringtechnology.club을 거치며 이 표현이 커뮤니티의 공용어가 됐다.
McKinley가 말한 boring은 "능력도, 실패하는 방식도 이미 잘 알려져 있다" 는 뜻이다. 그는 Etsy에서 PHP 위에 실험적으로 붙였던 새 기술 스택을 다시 걷어 내고 예측 가능한 쪽으로 돌아온 경험을 바탕으로, 회사마다 새 기술에 걸 수 있는 혁신 토큰(innovation token) 이 세 개쯤뿐이라고 말한다. 토큰은 비즈니스의 핵심 문제에 쓰고, 나머지는 지루한 기술로 채우라는 것이다.
액터 모델은 그 토큰을 쓰지 않아도 되는 쪽이다. 1973년에 이론이 나왔고, 1986년부터 전화 교환기에서 돌았다. 놀랄 일이 남아 있지 않다는 것, 그게 이 글이 액터 모델을 "지루하다"고 부르는 이유다.
그런데 2024~2026년, 이 지루한 기술이 AI 에이전트라는 가장 뜨거운 주제의 바닥에 다시 깔리고 있다. Microsoft AutoGen 0.4는 액터 모델을 받아들였다고 직접 밝혔고, Akka는 2025년 7월 Agentic AI Platform을 내놨다. 이 글은 그 이유를 계보로 먼저 훑고, 실제 .NET 데스크톱 앱 하나를 열어 액터와 에이전트가 어떻게 맞물리는지 보여 준다.
액터(actor), 즉 자기 상태를 혼자 소유하고 메시지로만 대화하는 계산 단위는 메시지를 하나 받을 때마다 딱 세 가지만 할 수 있다.