관리 메뉴

HAMA 블로그

예제로 보는 아카(akka) - 15. 하나의 ActorSystem에 IO,Remote 등 사용 본문

Akka

예제로 보는 아카(akka) - 15. 하나의 ActorSystem에 IO,Remote 등 사용

[하마] 이승현 (wowlsh93@gmail.com) 2016. 11. 1. 11:45

- Scala 2.11.8 기반 

- Akka 2.4.11 기반 

- Java 8  (akka 2.4 부터는 java 8 요구함. scala 2.11 은 java 7도 괜찮지만~) 


하나의 ActorSystem에 IO,Remote 등 사용

내가 만들고 있는 마이크로 서비스 타입의 시스템에서는 들어오는 메세지에 대해 각자 다르게 처리하기 (다른 목적지로 배달해주는)위한 커뮤니케이션 모듈이 있는데 (이름은 룰엔진이며 아이디어는 AWS IoT 에서 따왔다) 
대략 아래 처럼 구성되어 있다.



단일 액터 시스템 내에 슈퍼바이저 액터라는 가장 부모 액터가 나머지 액터를 관리하고 그 중 룰엔진 액터가 나머지 액터들의 메세지를 커뮤니케이션 된다. Akka.tcp 가 이종간 통신을 위해 사용되며 원격 액터시스템 끼리는 akka.remote 를 사용해서 통신하고 있다. 위에 GW 에서 HTTP 라고 되어 있지만 TCP, MQTT, HTTP 아무거나 상관없을 것이다.

이렇게 구성하는것이 훗날 Akka 안티패턴이라고 깨닳을지도 모르겠지만, 이상 없다고 본다. 

P.S Akka.io 대신 Akka.streams 로 바꾸어야하는 부분이 있는데 고민을 좀 더 해보자. 그리고 이렇게 여러언어들을 가지고 만드는 마이크로 서비스의 경우 통신에 아파치 쓰리프트의 사용을 고려해 보자.

Comments