피드로 돌아가기
Dev.toBackend
원문 읽기
Actor Model을 통한 Functional Core-Imperative Shell 확장 설계
When One Shell Isn’t Enough: Scaling the Functional Core–Imperative Shell Pattern with Actors in C++
AI 요약
Context
단일 Imperative Shell이 모든 Side-effect를 처리함에 따라 발생하는 책임 비대화 및 유지보수 효율 저하 문제 직면. 시스템 규모 확대 시 서로 무관한 관심사가 하나의 중앙 허브에 집중되어 코드 추론 및 관리가 어려워지는 한계 발생.
Technical Solution
- Actor Model을 도입하여 각 Actor를 개별적인 Imperative Shell로 정의하는 구조 설계
- 비즈니스 로직을 다수의 Functional Core로 분리하여 각 Actor가 전담하는 Core-Shell Pair 구성
- Actor 간 통신을 Topic 기반 Message Passing 방식으로 구현하여 모듈 간 직접 의존성 제거
- InputActor(입력 처리)와 GameEngineActor(상태 업데이트)와 같이 관심사를 완전히 분리한 독립적 인터페이스 구축
- Asio 프레임워크 기반의 비동기 처리 구조를 통해 입력 이벤트와 게임 루프 타이머의 동시성 확보
- Functional design과 전통적 OOP design을 Actor 단위로 선택적으로 혼용 가능한 하이브리드 아키텍처 채택
실천 포인트
- 단일 Shell의 비대화 여부를 판단하여 Actor 기반의 다중 Shell 분리 검토 - 모듈 간 결합도를 낮추기 위해 직접 참조 대신 공유 데이터 계약 기반의 Message Passing 도입 - 순수 비즈니스 로직(Core)과 Side-effect 처리(Shell)의 경계가 명확한지 검증 - 시스템 요구사항에 따라 Functional approach와 OOP approach를 Actor 단위로 전략적 배치