🖼️ 그림 0. (히어로) 미션 크리티컬 음성 서비스를 떠받치는 액터들 — 카툰 히어로 이미지

🇺🇸 English version — Read this article in English: Never Drop a Single Call — How Luware Protects Mission-Critical Voice Services with Akka.NET Actors
🎯 3줄 요약
- Luware는 Microsoft Teams 기반 컨택센터 Nimbus를 운영하며 월 수백만 분의 통화를 무중단으로 처리한다.
- 통화 상태를 마이크로서비스에 흩뿌리니 분산 락 지옥과 레이스 컨디션이 터졌고, 이를 **Akka.NET 액터 + 클러스터 샤딩 + 이벤트 소싱**으로 풀었다.
- 핵심은 "상태를 가진 객체(액터) 하나가 통화 하나를 통째로 소유"하는 발상의 전환이다. 락이 사라지고 시스템은 "그냥 잘 돌아간다".
여러분이 콜센터에 전화를 걸었다고 해보자. 상담사 연결, 대기열, 전환(transfer), 녹취, 통화 분석이 밀리초 단위로 맞물려 돌아간다. 여기서 타이밍이 한 번 어긋나면? 통화가 끊긴다. 고객은 화를 내고, 기업은 신뢰를 잃는다.
스위스 회사 Luware가 만드는 Nimbus가 바로 이 세계에 산다. Nimbus는 Microsoft Teams에 통합되는 컨택센터 소프트웨어로,
이 글은 Petabridge가 공개한 Luware 사례 연구를 바탕으로, Luware가 어떤 벽에 부딪혔고 **Akka.NET 액터 모델**로 어떻게 그 벽을 넘었는지를 개발자 눈높이에서 풀어낸다. 액터가 처음인 분도 따라올 수 있게 개념부터 차근차근 짚는다.
처음에 Luware는 통화 상태(state)를 여러 stateless 마이크로서비스에 나눠서 관리했다. 통화 한 건의 정보가 서비스 A에도, B에도, 캐시에도 흩어져 있는 구조다. 문제는 여기서 시작된다.
🖼️ 그림 1. 분산 락 지옥 vs 액터 — 같은 통화 상태를 여러 서비스가 동시에 만지는 혼돈 / 액터 하나가 통화를 통째로 소유하는 질서

Luware의 엔지니어 Jason Shave의 말이 이 상황을 정확히 요약한다.