Versions Compared

Key

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

자바진영 ( 자바,스칼라,코틀린 ) 에서 모두 활용가능한 패턴으로

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

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

Let't go

...

Note

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

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

학습도에따라 액터모델이 우리에게 고통을 줄수도 있습니다. 액터모델 프로그래밍을 할필요없는 Reactive진영의 우수한 MQ PasS를 채택할수도 있겠지만

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

액터 모델 vs 스레드 모델 비교 요약

비교 항목액터 모델 (Actor Model)스레드 모델 (Thread Model)
동시성 처리경량 액터 기반으로 수천만 개 병렬 처리 가능OS 스레드 기반, 스레드 개수 제한
상태 관리각 액터가 자체적으로 상태 유지 (Stateful)공유 메모리로 상태 관리 (Mutex, Lock 필요)
메시지 전달비동기 메시지 패싱 (No Lock)동기 방식 (Lock, Context Switching 부담)
리소스 효율가벼운 액터 (스레드보다 적은 메모리)스레드마다 메모리(Stack) 사용량 높음
확장성액터 개수와 관계없이 수평 확장 가능 (Cluster 지원)스레드 개수 제한으로 확장성 제한적
안정성액터 단위 장애 격리 가능 (Supervisor Strategy)하나의 스레드 장애 시 전체 영향 가능
데드락 발생메시지 기반 → 데드락 없음공유 메모리 접근 시 데드락 발생 가능
구현 난이도비동기 메시지 기반, 설계 패턴 필요전통적인 동기 방식으로 직관적

🚀 액터 모델의 주요 장점

  • 고성능 동시성 처리 (수백만 개 액터 운영 가능)
  • 데드락 없는 안정적인 상태 관리 (Lock-Free)
  • 확장성 뛰어난 구조 (Akka Cluster, Pekko 활용 가능)
  • 분산 시스템에 적합 (분산 액터로 수평 확장 가능)

...