Versions Compared

Key

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

...

Note

액터모델이 국내에 개발패턴으로 잘 안알려져 있기도하고 레퍼런스가 부족하지만 이미 성공한 메시징/메신저/통신 테크기업들이 액터모델을 직접 채택하거나 액터모델이 내재화된 프레임워크를 사용하고 있는 것으로 추정합니다.

이 기술을 단지 학습곡선때문에 제외할것이냐? 학습곡선이 높을수 있지만 우리가 필요로하는 스팩이여서 연마가 필요한것인가? 그것을 책임지는 기술팀이 판단해야하는 영역입니다.

학습도에따라 액터모델이 우리에게 고통을 줄수도 있습니다. 액터모델 프로그래밍을 할필요없는 Reactive진영의 우수한 클라우드형 MQ PasS를 채택할수도 있겠지만 ( 트래픽당 클라우드 비용을 잘 계산해야함 )

직접구현 개발모델을 선택한다고 하면  스레드 모델과 비교할수 있습니다.

...


소개가 길었지만 길었지만~ 본방인 Reactive Websocket과 액터모델을 연동하는 샘플코드를 마지막으로 살펴보겠습니다.

Reactive Websocket with ActorModel 구현체

...

  • core : actor 모델의 기본 사용법
  • discovery : 액터모델을 위치투명성 기법을 이용해 사용하기 ( 로컬에서 필요없지만 클러스터로 확장될시 필요한 개념)
  • persitent : 이벤트소싱 durable을 포함 액터모델의 이벤트를 영속화(db장치 선택가능)하는 CQRS 기법을 학습
    • state : repository 패턴을 활용해 액터모델의 상태를 동기화하는 예제 ( Redis장치에 대응하고 저비용으로 더 빠르게 사용 )
  • timer : 액터모델에 스케줄러 기능을 부여해, 수십만개의 독립적 가능 타이머 생성가능  ( 스레드 모델에 대응)
  • bulkprocessor : realTime 에서 발생하는 이벤트를~ 효율적으로 저장해 DB부하를 획기적으로 줄입니다. - 데이터를 부분 지속처리 
  • router : 액터메시지를 분배처리하는 라우팅 장치 ( 라운드로빈,해쉬로빈등 다양한 분배장치를 채택할수도 커스텀할수도 있음)
  • supervisor : 호출자에게 예외를 전파하는 전통적 장애복구 방식이 아닌  부모가 자식객체를 모니터링해 복구하는 전략 방식
  • stream : reactive stream 을 준수하는 장치를 활용해 액터모델과 연결하는 샘플 ( kafka등의 외부 장치와 연결 )
  • cluster : 로컬로 잘 작성된 액터모델을 클러스터화합니다. 기존 코드의 변경을 최소화하고 클러스터화 시스템에 액터를 배치하게됩니다.


다음장에서는 웹소켓과 여기에 연결된 액터모델을 비동기 수신검사하는 유닛테스트를 알아보겠습니다.

Next : UnitTest Reactive Websocket&Actor