You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 92 Next »


목차



Unable to render {children}. Page not found: AKKA-Training.

장애처리에 유연하고 고성능 분산처리 개념을 익히기위해 AKKA를 선택했으며

관련 지식(영문메뉴얼,구글링)을 한글화하고 카테고리화 하는데 목적이 있는 문서페이지입니다.

C# 코드베이스로 테스트하며 작성예정이지만, 상황에따라 스칼라/자바 코드등이 언급될수도 있습니다.

ACTOR는 동시성/분산처리 해결을 쉽게하는 언어에 종속적이지 않는 개발 패턴이며

개발패턴과 상관없이 본질적인 문제를 파악하고 해결하는 과정은 라이브러리 혹은 툴깃에 종속적이지 않습니다.

AKKA의 근본 철학은 Erlang의 Actor에서 영향을 받아 탄생이된 툴킷이며

이것을 배우는 과정에서 개발언어/프레임워크와는 별개로 일반적인 분산환경에서의 필요한 개발 상식이 조금더 풍부해 질것으로 기대해봅니다.

*그림 : JAVA와 .NET의 이기종 통신을 지원하는 Jnbridge.com 에서 발췌

Akka

Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.  

동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.

Akka는 Java환경및 .net Framework에서 이용가능하다. 


MS Orleans ( https://dotnet.github.io/orleans/ ) : MS에서도 Actor 개발 패턴의 장점을 인지했는지?

Actor 모델을 지원하는 Orleans 라이브러리를 Microsoft. 네임스페이스에 포함하기 시작했으며  

다음 .net framework에는 기본 탑재될것으로 예상해봅니다.( 항상 틀리는 플래폼에 대한 예측)

MS가 프레임워크에 공식적으로 포함시키면, Microsoft. 네임스페이스를 제거해버립니다.

이 여부에따라 라이브러리이냐? 프레임워크냐? 분류가되는듯 합니다.

해일로게임 네트워크 프로그래밍에 사용되었다고함

MS Orleans에서 언급되는 스택도 AKKA에서 언급되는 스택의 범위가 유사하며

그 목적과 사용방법이 유사합니다.

Java(JVM) ↔ C#(CRM) 환경을 넘나들기 위해서는 개인적으로 AKKA를 추천합니다.


특징



시스템

액터와 스트림을 사용하면 여러 서버를 사용하여보다 효율적으로 서버의 리소스를 사용하여

확장하고 확장하는 시스템을 구축 할 수 있습니다.

디자인에 의한 탄력성

장애가 발생할 경우,자가 치유되고 응답 성을 유지하는 시스템을 작성할 수 있습니다.

고성능

단일 기계에서 최대 5 천만 메시지/초. 처리

작은 메모리 공간 : 힙 GB 당 250 만 명의 액터생성가능.

탄성및 분산

단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및 CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터.

반응형 스트리밍 데이터

부하가 생길시 합리적인 비동기 비 차단 스트림 처리.

완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트 에서

마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다.

키워드로 살펴본 AKKA가 가진 스택범위



  • ReceiveActor
  • UntypedActor
  • Routers
  • Dispachers
  • Mailboxes
  • Inbox
  • FiniteStateMachines
  • FalutTolerance
  • DependencyInjection
  • TesitingActorSystems
  • CorrdinatedShotdown
  • EventSourcing
  • SnapShots
  • AtLeast OnceDelivery
  • Event Adapters
  • PersitentFSM
  • Storage Plugins
  • Custom Serialization
  • Persitence Query
  • Basics and working with Flows
  • Working with Graphs
  • Modularity,Composition and Hierarchy
  • Buffers and working with rate
  • Custom Stream processing
  • Working with stream IO
  • Pipelining and Paralleism
  • Cluster Routing
  • Cluster Configuration
  • Accesing the Cluster Actor
  • Distibuted Publish Subscribe in Cluster
  • Cluster Client
  • Cluster Sharding
  • Distibuted Data
  • Event Bus
  • Logging
  • Scheduler
  • Circuit Breaker


참고링크: 주요참고 문서

 이문서는 원본문서+추가정보 조합을하고개인적 취향에따라 이해가 쉽고 잘정리된 문서위주로 재해석의 과정을 거쳤으며, 실습은 작동검증의 과정과 더불어 새롭게 구성하였습니다. 원문메뉴얼이 익숙하면 원문을 권장합니다. 

진행사항


문서화도 어떠한 개발 프로세스임으로 JIRA의 기능을 1퍼 활용

AKKA의 문서화는 다음과 같이 절차로 요란하게 진행중입니다.

  • 카테고리화 범위를 위키로 작성
  • 문서 카테고리별 지라 Task 작성
  • 문서작성중 예제코드 작성 필요시 지라 Task 작성
  • 예제 코드는 Git(Bitbucket)을 이용하여 작성
  • 예제 코드에대한 설명 위키에 카테고리내에 문서화
  • 예제 코드 리뷰기능
  • 스크럼보드를 통한 문서화 스프린터 계획

PMS를 통한 개발 프로세스 개선은 Atlassian PreView 참고


문서화계획

28-Aug201704-Sep11-Sep18-Sep25-Sep02-Oct09-Oct16-Oct23-Oct30-Oct스프린트1-초안작성스프린트2-예제보강스프린트-응용보강
문서화
응용코드

기본문서작성

다이어그램및 샘플코드추가

기본응용코드

고급응용코드

Unable to locate Jira server for this macro. It may be due to Application Link configuration.



이 문서 검색

최근에 변경된 페이지

  • No labels