Versions Compared

Key

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

장애처리에 유연하고 고성능 분산처리 개발 개념을 익히기위해 AKKA를 선택하여 학습중에 있으며

샘플코드는 특정 플래폼에 한정적이지만, 분산개발환경을 위한 개발 패턴은 개발언어/플래폼등에 종속적이지 않는것으로

분산처리 개발환경에 필요한 지식들을 배우는것을 우선으로 자료정리중에있습니다. (배우고 학습하면서 문서화)


목차



Expand
titleIntroduction

Children Display
depth1
styleh3
pageIntroduction

Expand
titleConcepts

Children Display
depth1
styleh3
pageConcepts

Expand
titleAKKA-Training

Children Display
depth1
styleh3
pageAKKA-Training


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

Akka

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

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

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


Note
titleAKKA와 유사한 목적을 가진 플래폼

지원 범위및 컨셉이 비슷하여, 한가지만 잘 배워두면 접근하기 용이한 녀석들

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지원


공통점: 스케일아웃이 용이한 동시성 프로그래밍 개발지원 ,메시지처리 Actor모델로 추상화

또한 도메인명(네임스페이스) 에 IO처리에 강하다란 의미인지? .io 룰 붙이는 경향이 있음



특징



Tip
title시스템

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

확장하고 확장하는 시스템을 구축 할 수 있는 개발 모델지원

Tip
title디자인에 의한 탄력성

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

개발 모델을 제시해줍니다.

Tip
title고성능

단일 기계에서 최대 초당 5 천만 메시지 처리 가능하며

메모리 힙 GB 당 250 만명의 액터생성가능합니다.

Tip
title탄성및 분산

단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및

CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터 프로그래밍 모델지원


Expand
title추가용어설명

이벤트소싱 (EventSourcing)

어플리케이션에 가능한 활동을 이벤트로 전환해 이벤트 스트림DB에 쌓고

이곳에만 집중하여 복잡도를 단순화시키고

어플리케이션에 가능한 실제 활동 소비스트림을 분리하여 이벤트 스트림을 사용함으로

대용량 트래픽처리 및 복구전략(이벤트 스트림에 이미 서비스 원본소스가 있기때문에)을 세울수 있는 패턴


CQRS (Command Query Responsiblity Segregation)

대부부의 대용량 트래픽은 Read에서 발생하며

이름에서 알 수 있다시피 코맨드, 즉 C (Create – INSERT), U(Update – UPDATE), D (Delete – DELETE) 쿼리와

R (Read – SELECT) 쿼리를 분리하자는 것이다.


CRDT(Conflict-free replicated data types)

충돌없는 데이터 복제란 : 분산환경에서 데이터복제를 통한 분산처리가 필요하며

이전략을 세우기위해 복제에따른 데이터 불일치 문제를 해결하고자 하는 방법






Tip
title반응형 스트리밍 데이터

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

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

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

키워드로 살펴본 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


참고링크: 주요참고 문서

 이문서는 원본문서+추가정보 조합을하고개인적 취향에따라 이해가 쉽고 잘정리된 문서위주로 재해석의 과정을 거쳤으며,

샘플코드 작동검증을 하면서 새롭게 구성하였습니다.  영문메뉴얼이 익숙하면 원문을 권장합니다. 

샘플코드저장소: http://git.webnori.com/projects/AKKA/repos/akkastudy/browse

문서화 활동 : http://jira.webnori.com/projects/AKKADOCU/summary

진행사항


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

Expand
title문서화 과정

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

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

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


문서화계획

Roadmap Planner
maplinks4e7f9e09-4d81-4d34-9386-c53ef8ade7ff
timelinetrue
pagelinksConcepts
source%7B%22title%22%3A%22%EB%A1%9C%EB%93%9C%EB%A7%B5%20%ED%94%8C%EB%9E%98%EB%84%88%22%2C%22timeline%22%3A%7B%22startDate%22%3A%222017-09-01%2000%3A00%3A00%22%2C%22endDate%22%3A%222017-10-31%2000%3A00%3A00%22%2C%22displayOption%22%3A%22WEEK%22%7D%2C%22lanes%22%3A%5B%7B%22title%22%3A%22%EB%AC%B8%EC%84%9C%ED%99%94%22%2C%22color%22%3A%7B%22lane%22%3A%22%23f6c342%22%2C%22bar%22%3A%22%23fadb8e%22%2C%22text%22%3A%22%23594300%22%7D%2C%22bars%22%3A%5B%7B%22id%22%3A%2216b70f0f-7985-46e4-b93c-6e39926c9959%22%2C%22title%22%3A%22%EA%B8%B0%EB%B3%B8%EB%AC%B8%EC%84%9C%EC%9E%91%EC%84%B1%22%2C%22description%22%3A%22%EA%B8%B0%EB%B3%B8%EB%AC%B8%EC%84%9C%EC%9E%91%EC%84%B1%22%2C%22startDate%22%3A%222017-08-28%2002%3A39%3A40%22%2C%22duration%22%3A3.108910891089109%2C%22rowIndex%22%3A0%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22id%22%3A%224e7f9e09-4d81-4d34-9386-c53ef8ade7ff%22%2C%22title%22%3A%22%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8%EB%B0%8F%20%EC%83%98%ED%94%8C%EC%BD%94%EB%93%9C%EC%B6%94%EA%B0%80%22%2C%22description%22%3A%22%EC%9D%B4%20%EA%B2%83%EC%9D%80%20%EB%91%90%EB%B2%88%EC%A7%B8%20%EB%A7%89%EB%8C%80%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C%22startDate%22%3A%222017-09-14%2016%3A13%3A39%22%2C%22duration%22%3A2.5544554455445545%2C%22rowIndex%22%3A1%2C%22pageLink%22%3A%7B%22id%22%3A%221507409%22%2C%22spaceKey%22%3A%22AKKA%22%2C%22title%22%3A%22Concepts%22%2C%22type%22%3A%22page%22%2C%22wikiLink%22%3A%22%5BAKKA%3AConcepts%5D%22%7D%7D%5D%7D%2C%7B%22title%22%3A%22%EC%9D%91%EC%9A%A9%EC%BD%94%EB%93%9C%22%2C%22color%22%3A%7B%22lane%22%3A%22%233b7fc4%22%2C%22bar%22%3A%22%236c9fd3%22%2C%22text%22%3A%22%23ffffff%22%7D%2C%22bars%22%3A%5B%7B%22id%22%3A%22069c8761-0687-43b5-99a6-11193dfa47f0%22%2C%22title%22%3A%22%EA%B8%B0%EB%B3%B8%EC%9D%91%EC%9A%A9%EC%BD%94%EB%93%9C%22%2C%22description%22%3A%22%EC%9D%B4%20%EA%B2%83%EC%9D%80%20%EC%84%B8%EB%B2%88%EC%A7%B8%20%EB%A7%89%EB%8C%80%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C%22startDate%22%3A%222017-09-10%2018%3A28%3A42%22%2C%22duration%22%3A4.811881188118812%2C%22rowIndex%22%3A0%2C%22pageLink%22%3A%7B%7D%7D%2C%7B%22id%22%3A%22612b0efe-9d38-4b56-a923-857b24c0ae70%22%2C%22title%22%3A%22%EA%B3%A0%EA%B8%89%EC%9D%91%EC%9A%A9%EC%BD%94%EB%93%9C%22%2C%22description%22%3A%22%22%2C%22startDate%22%3A%222017-09-25%2002%3A47%3A43%22%2C%22duration%22%3A5.01980198019802%2C%22rowIndex%22%3A1%2C%22pageLink%22%3A%7B%7D%7D%5D%7D%5D%2C%22markers%22%3A%5B%7B%22title%22%3A%22%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B81-%EC%B4%88%EC%95%88%EC%9E%91%EC%84%B1%22%2C%22markerDate%22%3A%222017-09-18%2003%3A19%3A36%22%7D%2C%7B%22title%22%3A%22%ED%91%9C%EC%8B%9D%22%2C%22markerDate%22%3A%222017-12-04%2016%3A23%3A45%22%7D%2C%7B%22title%22%3A%22%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B82-%EC%98%88%EC%A0%9C%EB%B3%B4%EA%B0%95%22%2C%22markerDate%22%3A%222017-10-09%2004%3A59%3A24%22%7D%2C%7B%22title%22%3A%22%EC%8A%A4%ED%94%84%EB%A6%B0%ED%8A%B8-%EC%9D%91%EC%9A%A9%EB%B3%B4%EA%B0%95%22%2C%22markerDate%22%3A%222017-10-30%2001%3A39%3A47%22%7D%5D%7D
title%EB%A1%9C%EB%93%9C%EB%A7%B5%20%ED%94%8C%EB%9E%98%EB%84%88
hash3ce21905713ebe76b6c222ea9f4ff3ac

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



이 문서 검색

Livesearch
spaceKeyAKKA

인기있는 주제

Popular Labels
spaceKeyAKKA
count10

최근에 변경된 페이지

Recently Updated
typespage
max5
hideHeadingtrue
themeconcise