장애처리에 유연하고 고성능 분산처리 개발 개념을 익히기위해 AKKA를 선택하여 학습중에 있으며
샘플코드는(C#) 특정 플래폼에 한정적이지만, 분산개발환경을 위한 개발 패턴은 개발언어/플래폼등에 종속적이지 않는것으로
분산처리 개발환경에 필요한 지식들을 배우는것을 우선으로 자료정리중에있습니다. (배우고 학습하면서 문서화)
모바일버젼은 탐색 네비게이션이 불편하여, PC 브라우져 권장합니다.
목차
*AKKA장점:JAVA와 C#이 모델과 개발패턴을 공유하여 동일컨셉 개발가능하다. 그림:순수 이기종 통신 지원 Jnbridge.com 에서 발췌
Akka
Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.
동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.
Akka는 Java환경및 .net Framework에서 이용가능하다.
AKKA와 유사한 목적을 가진 플래폼
지원 범위및 컨셉(Reactive)이 비슷하여, 한가지만 잘 배워두면 접근하기 용이한 툴킷
(라이브러리라고 안부르고 툴또는 툴킷이라고 부르는 경향이있음 -차이는모르겠음)
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/ - Actor MS지원
추가 참조 : http://blog.takipi.com/async-goes-mainstream-7-reactive-programming-tools-you-must-know/
공통점: 스케일아웃이 용이한 동시성 프로그래밍 개발지원 ,메시지처리 Actor모델로 추상화
또한 도메인명(네임스페이스) 에 IO처리에 강하다란 의미인지? .io 룰 붙이는 경향이 있음
특징
시스템
액터와 스트림을 사용하면 여러 서버에서 효율적으로 리소스를 사용하여
확장하고 확장하는 시스템을 구축 할 수 있는 개발 모델지원
디자인에 의한 탄력성
장애가 발생할 경우,자가 치유되고 응답 성을 유지하는 시스템을 작성할 수 있는
개발 모델을 제시해줍니다.
고성능
단일 기계에서 최대 초당 5 천만 메시지 처리 가능하며
메모리 힙 GB 당 250 만명의 액터생성가능합니다.
탄성및 분산
단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및
CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터 프로그래밍 모델지원
반응형 스트리밍 데이터
성능에 있어서 역배압장치(backpressure) 사용으로, 비동기 비 차단 스트림 처리.
완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트 에서
마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다.
키워드로 살펴본 AKKA가 가진 스택범위
참고링크: 주요참고 문서
- Akka for JVM ( Java/Scala) -원조
- Akka.Net ( C# ) -후발주자
이문서는 원본문서+추가정보 조합을하고개인적 취향에따라 이해가 쉽고 잘정리된 문서위주로 재해석의 과정을 거쳤으며,
샘플코드 작동검증을 하면서 새롭게 구성하였습니다. 영문메뉴얼이 익숙하면 원문을 권장합니다.
샘플코드저장소: http://git.webnori.com/projects/AKKA/repos/akkastudy/browse
문서화 활동 : http://jira.webnori.com/projects/AKKADOCU/summary
진행사항
문서화도 어떠한 개발 프로세스임으로 JIRA의 기능을 1퍼 활용
문서화계획