Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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버전입니다.

...