# Akka

### Akka를 이야기할땐 Actor가 먼저!

![http://renien.com/blog/akka-blog-series/akka-queue.png](https://3666647831-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh4xwxLlPC383jv2RIM%2F-Lir9_mk5nyY78uLwfgs%2F-LirADefxRf9pimASXAf%2FActor%20%E1%84%80%E1%85%B3%E1%84%85%E1%85%B5%E1%86%B7.png?alt=media\&token=a1698b0e-eed1-41cb-bbfc-70d240240a10)

Actor는 어떤 동작의 주체라고 보면 된다.\
메시지 기반 통신을 하여 Actor간 직접적인 호출이 없다. (Class 모델과 다른점)

Dispatcher 가 Mailbox Queue에서 Message를 하나 가져와서 Actor를 동작시킬 때는 Single thread로 동작한다. 그 덕분에 Lock이나 Atomic 연산에 대해서 생각할 필요가 없다.

###

### Actor들을 관리하는 ActorSystem을 알아보자

![https://i1.wp.com/www.datio.com/wp-content/uploads/2017/02/Akka3.png?resize=691%2C516](https://3666647831-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh4xwxLlPC383jv2RIM%2F-Lir9_mk5nyY78uLwfgs%2F-LirDSlu3WLjT4tV1MDc%2FAkka3.png?alt=media\&token=193cc4df-375a-443a-b9bf-c2a8b859afbc)

그림이 매우 잘 나와있다!

### ActorReference

![https://miro.medium.com/max/680/1\*Z9mbLItuNvx2lq8O0Dymvg.png](https://3666647831-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh4xwxLlPC383jv2RIM%2F-LirF3ZsD9mN7h1Zau7K%2F-LirFCyDpavZ0h2XBygf%2F1*Z9mbLItuNvx2lq8O0Dymvg.png?alt=media\&token=21f120c5-f287-4426-b9f0-c100876ab6f3)

Actor Instance에 직접 접근 하지 못하고 Reference를 통해서만 접근이 가능하다는 것만 알면 된다.\
그 덕분에 결합도도 낮아지고, 위치 투명성 등이 보장된다!

###

### ActorPath

![https://doc.akka.io/docs/akka/2.5.11/guide/diagrams/actor\_top\_tree.png](https://3666647831-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Lh4xwxLlPC383jv2RIM%2F-LirF3ZsD9mN7h1Zau7K%2F-LirFlQmqEvQSkWyImMw%2Factor_top_tree.png?alt=media\&token=fded0f09-79d5-40da-af70-fdc1949733df)

Actor 들은 ActorSystem 아래로 Tree 구조처럼 자신의 위치 정보를 가지고 있다. 그 중 개발자의 Actor 는 /user 아래에 위치해있고, /system 아래에 있는 Actor들은 ActorSystem을 위한 기본 Actor들이다.

###

### 그 외 Akka Library들

[다양합니다.](https://akka.io/docs/)

### Akka를 더 알고싶다면...

[아카 공식 홈페이지 문서](https://doc.akka.io/docs/akka/current/index.html)

[스칼라를 이용하여 아카 시작하기](https://developer.lightbend.com/guides/akka-quickstart-scala/index.html)

[아카 라이프 사이클](http://wiki.webnori.com/display/AKKA/00.Lifecycle)

[아카 홈 설명](http://wiki.webnori.com/display/AKKA/Akka-Home)

[아카 공부용 번역 자료](https://blog.rajephon.dev/2018/11/25/akka-00/)

[길벗 아카 코딩공작소 책](http://www.yes24.com/Product/Goods/44015335), [예제 소스코드](https://github.com/gilbutITbook/006877)

[액터 테스트](https://reniowood.github.io/akka/2019/05/27/Akka-Akka-%EC%BD%94%EB%94%A9%EA%B3%B5%EC%9E%91%EC%86%8C-Chapter03-%EC%95%A1%ED%84%B0%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%9C-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C.html)
