Versions Compared

Key

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

RestAPI와 WebSocket의 개발방식의 차이인 StateFul과 Stateless를 먼저알아보고

Reactive 웹소켓을 액터모델과 연동했을때 장점과 확장가능한 샘플코드를 살펴보겠습니다.

Let't go

Stateful VS Stateless

REST API (Stateless 방식)

...

🚀 즉, 성능과 확장성이 중요한 경우 WebFlux, 익숙한 개발 방식과 기존 시스템 통합이 중요한 경우 MVC 웹소켓을 선택하는 것이 좋습니다.


Note

액터모델이 국내에 개발패턴으로 잘 안알려져 있기도하고 레퍼런스가 부족하지만

이미 성공한 메시징/메신저/통신 테크기업들이 액터모델을 직접 채택하거나 액터모델이 내재화된 프레임워크를 사용하고 있는 것으로 추정합니다.

🔹 액터 모델을 채택한 메시징/메신저 시스템

...

  • 기술 스택: Erlang
  • 특징:
    • 메시지 브로커로 사용되지만, 내부적으로 Erlang의 액터 모델을 활용하여 높은 동시성 처리 가능
    • AMQP 프로토콜을 사용하여 안정적인 메시지 큐 제공
  • 장점:
    • 메시징 시스템에 최적화
    • 확장 가능하며, 분산 아키텍처에서 활용 가능

7. Ray


🚀 분석: 액터 모델과 웹소켓 연동의 장점

이 코드는 Akka (현재 Apache Pekko) 기반 액터 모델을 활용하여 **웹소켓을 관리하는 세션 관리자(SessionManagerActor)**를 구현한 것입니다.
액터 모델이 웹소켓과 연동될 때 가지는 장점은 다음과 같습니다.

...

💡 예제 코드 적용:

  • onSubscribeToTopic → 클라이언트가 특정 토픽을 구독하면 세션 ID를 저장
  • onSendMessageToTopic → 해당 토픽을 구독한 모든 세션에 메시지를 전송




샘플코드


Image Added

  • 샘플코드
    • base : pub/sub을 로컬클래스 모델로 구현한 기본 Reactive 사용법입니다.
    • actor : base버전의 로컬클래스 모델을 로컬액터모델로 변환한 ActorModel버전입니다.




확장