Akka 장점 간략한 정리
Akka 1일차
전통적인 확장
application의 service를 한 후 요구증가(사용증가)가 발생되면 전통적으로 수평확장(scale-out) 또는 수직확장(scale-up)를 하여 대처한다.
문제는 이렇게 수평,수직 확장시 자원의 소요 상승 기울기가 가파르고 거기에 따른 program의 복잡도가 증가 한다는데 어려움이 있다.
예를 들면 서버확장에 따른 RPC call, 동시성 프로그램에 따른 코드, Queue server의 도입, 상태의 서버간 동기등…
Akka로써의 확장
Akka는 ActorModel만의 한가지 모델만을 채용함으로써 확장에 따른 복잡도를 줄이고, polling기반이 아닌 event기반(또 thread 보다 actor의 memory 사용량도 상대적으로 적다)으로써 자원의 소비가 적다.
Actor의 연산
- 생성(create)
- 송수신(send&receive)
- 상태변화(become)
- 감독(supervise)
Actor의 확장에 대한 decoupling
-
공간
Actor는 다른 Actor의 위치에 대해 알 필요가 없다. -
시간
Actor는 자신이 보낸 작업이 끝나는 것에 blocking 되지 않는다. -
interface
Actor간에는 message만으로 통신하므로 다른 Actor가 어떠한 mesasge 를 처리하는지에 대해 알 필요가 없다.
Akka 의 등장 model
- ActorSystem
- Actor
- ActorRef(with mailbox)
- Dispatcher(thread)