Page History
...
Note |
---|
액터모델이 국내에 개발패턴으로 잘 안알려져 있기도하고 레퍼런스가 부족하지만 이미 성공한 메시징/메신저/통신 테크기업들이 액터모델을 직접 채택하거나 액터모델이 내재화된 프레임워크를 사용하고 있는 것으로 추정합니다. 이 기술을 단지 학습곡선때문에 제외할것이냐? 학습곡선이 높을수 있지만 우리가 필요로하는 스팩이여서 연마가 필요한것인가? 그것을 책임지는 기술팀이 판단해야하는 영역입니다. 학습도에따라 액터모델이 우리에게 고통을 줄수도 있기때문입니다. |
🔹 액터 모델을 채택한 메시징/메신저 시스템
...
💡 예제 코드 적용:
onSubscribeToTopic
→ 클라이언트가 특정 토픽을 구독하면 세션 ID를 저장onSendMessageToTopic
→ 해당 토픽을 구독한 모든 세션에 메시지를 전송
고성능 IO
AKKA를 소개할때 그것을 프로덕에 적용을 해보았나요? 성능에 문제없나요? 단지 이론에 거치는것을 소개하나요? 라는 질문을 가끔 받기도합니다.
글로벌 기업에 근무할 자바 7인시절 C++ IOCP로작동되는 고성능으로 이루어진 특정 카테고리 글로벌 TOP랭크의 멀티플레이어 서버를 모바일웹에 대응하기위해 C++ 네이티브 분산처리 개발 난이도를 낮추려고 Akka를 성공 적으로 도입하였으며
웹진영에서 AKKA를 사용하면 학습곡선이 높은것에 해당할수 있지만, 분산처리 시스템을 모두 메이드업한 C++시절에서 AKKA는 오히려 분산처리를 단순화하는 툴킷이였습니다.
그래서 고성능 IO관점에서 자바의 네티IO를 리모트장치로 채택할수 있지만 더 성능좋은 IO를 채택할수 있습니다. 단일지점 Remote IO능력으로 본다면 네이테브의 장점으로 IOCPSOCK(C++ WinServer)을 여전히 능가할수 없으며 자바7일시절에도 C++의 단일지점 능력치를 50%만 뽑아내도 성공적인 변환이였습니다. 하지만 단일지점 처리능력보다, 오히려 단일장비 10만이나 처리하는 리소스처리량을 낮추고 더 적고 많은 장치로 트래픽을 분산하는 분산처리 유연함이 더 중요했기때문에 AKKA를 과거 시절 채택을 하였습니다.
C++이 안된다라기보다 이 진영은 액터모델에 준하거나 능가하는 액티브오브젝트 패턴을 직접구현하고 네트워크프로그래밍까지화해 최적화 까지 할수 있는 팀역량을 보유해야 했기때문에 어나더 레벨의 개발구성이 필요한것도 AKKA로 전환한 이유중에 하나였습니다.
도입시 로드테스트 사례및 글로벌 기업
샘플코드
- 샘플코드
- base : pub/sub을 로컬클래스 모델로 구현한 기본 Reactive 사용법입니다.
- actor : base버전의 로컬클래스 모델을 로컬액터모델로 변환한 ActorModel버전입니다.
...