Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


목차



Expand
titleIntroduction

Children Display
depth1
styleh3
pageIntroduction

Expand
titleConcepts

Children Display
depth1
styleh3
pageConcepts

Expand
titleAKKA-Training

Children Display
depth1
styleh3
pageAKKA-Training

Tip

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

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

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

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

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

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

이것을 배우는 과정에서 어떠한 패턴/개발언어에 종속적이지 않는 일반적인 분산환경에서의 필요한 개발 상식이 조금더 풍부해 질것으로 기대해봅니다.

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

Akka

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

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

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


Info

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

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

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

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

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

MS Orleans에서 언급되는 스택이 AKKA에서 언급되는 스택의 범위가 유사합니다. .

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


특징

  • 동시성은 메시지 기반이며 비동기 방식으로 이루어진다: 일반적으로 변형 가능한 데이터를 공유하거나 동기화되는 primitive를 사용해서는 안됩니다: Akka는 액터 모델을 구현한다. ( 객체 공유는 죽음의 칵테일과 같다라고 비유하기도 합니다.)
  • 동일한 호스트든 분산된 호스트들이든, 직접 통신하든, 몇몇 혹은 다수의 스레드 상에서 동작하는 라우팅 채널을 이용하여 통신하든, 혹은 이외의 방법으로 통신을 하든 actor들이 상호작용하는 방식은 동일하다. 이러한 세부사항들은 프로그램의 수정 없이 스케일-업(더 성능이 뛰어난 서버를 사용)하거나 스케일-아웃(더 많은 서버를 사용)하기 위해 배포 시점의 구성 메카니즘에 따라 변경할 수 있다.
  • Actor들은 프로그램의 오류를 연관성에 따라 계층적으로 분류한다. 이 오류들은 actor의 supervisor의 이벤트로 처리된다(어느 actor가 오류를 발생했다는 메시지인지를 가리지 않음). 얼랭과는 대조적으로 Akka는 parental supervision을 강조한다. 이는 각 actor가 parent actor에 의해 생성되고 감독받는 것을 의미한다.


Expand
title프리미티브(Primitive)
1. 프리미티브 (Primitive)

  ㅇ 영어 뜻으로는 `원초적인`,`원시적인`,`가장 기초적인`

  ㅇ 공학적 의미로는, 가장 기본적인 동작에 대한 의미적 표현을 뜻함
     - 어떤 동작을 실행하거나, 수행될 동작에 대한 통보(통지)의 의미를 갖음

 2. 프리미티브 例)통신 계층에 의해 제공되는 계층간 서비스로써의 `프리미티브(동작)` 
     - 사실상 통신계층과 관련되어, 서비스는 한 계층이 상위계층에게 제공하는
       프리미티브(동작)의 집합이라 할 수 있음
        . 이때, 하위계층은 서비스의 제공자가 되고 상위계층은 서비스의 사용자가 됨

  ㅇ 그래픽 표현으로써의 `프리미티브`
     - 그림을 만드는 기본 요소 즉, 그래픽(그림)에 대한 가장 기초가되는 표현(서술) 요소
        . 그래픽 요소를 기술하는데 사용되는 그래픽 패키지 내의 관련 함수를 지칭하기도 함
     - `점은 좌표 위치를 지정`하게되며, `선분은 두 좌표를 지정`하는 등


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



Expand
titleActors
  • ReceiveActor
  • UntypedActor
  • Routers
  • Dispachers
  • Mailboxes
  • Inbox
  • FiniteStateMachines
  • FalutTolerance
  • DependencyInjection
  • TesitingActorSystems
  • CorrdinatedShotdown
Expand
titlePersistence
  • EventSourcing
  • SnapShots
  • AtLeast OnceDelivery
  • Event Adapters
  • PersitentFSM
  • Storage Plugins
  • Custom Serialization
  • Persitence Query
Expand
titleStreams
  • 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
Expand
titleClustering
  • Cluster Routing
  • Cluster Configuration
  • Accesing the Cluster Actor
  • Distibuted Publish Subscribe in Cluster
  • Cluster Client
  • Cluster Sharding
  • Distibuted Data
Expand
titleUtilities
  • Event Bus
  • Logging
  • Scheduler
  • Circuit Breaker


참고링크: 주요참고 문서

영문 메뉴얼이 익숙하면,재해석된 정보보다 원문을 보는것을 추천합니다.  이문서는 원본문서+추가정보 조합을하였으며 개인적 취향에따라

이해가 쉽고 잘정리된 문서위주로 재해석의 과정을 거쳤으며, 실습은 작동검증의 과정과 더불어 새롭게 구성하였습니다. 

진행사항


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

Expand
title문서화 과정

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

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

Atlassian PreView 에서 자세하게 설명


Jira Charts
serverJIRA
sortDirection
jqlfilter%3D%22AKKA%EB%AC%B8%EC%84%9C%EC%A7%84%ED%96%89%22
ystattypecustomfield_10004
chartTypetwodimensional
width
sortBy
isAuthenticatedtrue
numberToShow5
xstattypestatuses
serverIdfeb819c4-adfb-3d6d-aaee-7d42f588dbbe

Related Ticket

Jira
serverJIRA
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQueryfilter="AKKA문서진행"
serverIdfeb819c4-adfb-3d6d-aaee-7d42f588dbbe

History

Jira ChartsbordertrueserverJIRAjqlfilter%3D%22AKKA%EB%AC%B8%EC%84%9C%EC%A7%84%ED%96%89%22periodNamedailyshowUnresolvedTrendtrueisAuthenticatedtrueserverIdfeb819c4-adfb-3d6d-aaee-7d42f588dbbeshowinfortrueversionLabelallisCumulativetruechartTypecreatedvsresolvedwidthdaysprevious30


이 문서 검색

Livesearch
spaceKeyAKKA

인기있는 주제

Popular Labels
spaceKeyAKKA
count10

특별 페이지

true
Page Tree
expandCollapseAlltrue
excerpt
Page Index

최근에 변경된 페이지

Recently Updated
typespage
max5
hideHeadingtrue
themeconcise