Page History
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 활용 가능)
- 분산 시스템에 적합 (분산 액터로 수평 확장 가능)
...