AKKA 문서화중
*ACTOR : 여러가지 개발 플래폼에서 도입 하기 시작함.
Akka
Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.
동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.
Akka는 Java환경및 .net Framework에서 이용가능하다.
분산처리관련 동일한 목표를 가진 녀석들
지원 범위및 컨셉이 비슷하며 분산처리 관련 개발 툴킷의 춘추전국 시대가 된듯
Akka : http://akka.io/ -Akka 원조(Scala언어에 특화,JAVA언어에서도 동일하게 사용가능)
Vert.x : http://vertx.io/ -유사한 Actor모델
Erlang : https://www.erlang.org/ - Actor의 원조
Kafka : https://kafka.apache.org/ -Apache 지원
Orleans : https://dotnet.github.io/orleans/ - MS에서 지원하는 Actor
그외 기타 정보
외국블로그 : http://blog.takipi.com/async-goes-mainstream-7-reactive-programming-tools-you-must-know/
위키정보 : https://en.wikipedia.org/wiki/Actor_model#Actor_libraries_and_frameworks ( 다양한 언어 프레임워크에서 액터모델 사용가능 )
국내도서 추천 : Akka 코딩 공작소
공통점:
- Reactive 단어를 강조하며 스케일아웃이 용이한 동시성 프로그래밍 개발지원
- 동시성 달성 을 위해 복잡한 멀티스레딩 프로그래밍을 지양함
- 메시지 처리 를 어떠한 패턴으로(Actor) 추상화
- 도메인명(네임스페이스) 에 .io 룰 붙이는 경향이 있으며 라이브러리가 아닌 툴또는 툴킷이라고 소개됨
- 함수형프로그래밍 을 강조하기도함
차이점: 각각 장단점 존재
- 언랭에서의 액터가 영향을 많이 줌
- 기존 개발언어 유지및 프레임워크 유지차원에서, 라이브러리(툴킷)을 통해 이문제를 풀려고함 ( AKKA, Orleans )
- 전체 개발 프레임워크를 통해 , 풀 패키지 제공으로 이문제를 풀려고함 ( Kafka )
AKKA에서 내세우는 강점
시스템
액터와 스트림을 사용하면 여러 서버에서 효율적으로 리소스를 사용하여
확장하고 확장하는 시스템을 구축 할 수 있는 개발 모델지원
디자인에 의한 유여한 대처
장애가 발생할 경우,자가 치유되고 응답 성을 유지하는 시스템을 작성할 수 있는
개발 모델을 제시해줍니다.
Resilient : 탄력적인 , 유연한
고성능
단일 기계에서 최대 초당 5 천만 메시지 처리 가능하며
메모리 힙 GB 당 250 만명의 액터생성가능합니다.
탄성및 분산
단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및
CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터 프로그래밍 모델지원
반응형 스트리밍 데이터
성능에 있어서 역압력장치(backpressure) 사용으로, 비동기 비 차단 스트림을 모두 처리하려고함.
완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트에서
마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다.
AKKA-Training에서 샘플코드 기능검증과 활용안을 준비중에있습니다.
키워드로 살펴본 AKKA가 가진 스택범위
참고링크: 주요참고 문서
- Akka for JVM ( Java/Scala) -원조
- Akka.Net ( C# ) -후발주자