Versions Compared

Key

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

Image Added


Tip

분산처리환경에서 단순화된 개발방법을 제시하는 AKKA 분산환경에서의 동시성 처리에대한 해결모델은 언어및 플랫폼에 종속적이지 않으며,AKKA가 아니여도 됩니다.


AKKA는단지 분산처리에있어서 필요한 기본개념을 먼저 알려주고 이벤트중심 설계를 활용한 단순화된 개발모델을 제시하며

개발자는 그것을 이용하여 응용프로그램내에 직접 작성 할수있습니다.

그 중심엔 액터가 있으며 선택가능한 수많은 툴중 하나입니다.


다음과 같은 컨셉으로 컨텐츠를 정리하고 있습니다.

  • 분산처리 환경의 이해와 필요한것들
  • 분산처리 개발에서 고전적인 개발방법이 가진 한계와 이를 단순화하는 방법
  • C# 닷넷 진영에서의 AKKA활용
  • JAVA 진영에서의 AKKA활용법
  • 최신제공 공식문서를 통해 활용법 유닛테스트화
  • AKKA와 대응되는 ReactiveStream의 주변기술 조사 



Image Added



ACTOR :

  • 여러가지 개발 플래폼에서 도입 하기 시작하였으며, 분산 미들웨어에서 수많은 일을 하기위한, 능동적 메시지 객체 
  • 마이크로서비스의 구성요소로 적합하며, 마이크로서비스보다 더 작은 단위
  • 어떠한 액터라도, 리모트상에 위치가가능하며 클러스터 구성이 가능하며 고성능 대화가가능
  • 언랭에서 처음 소개된 프로그래밍 모델

Akka :

Tip

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

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

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

모바일버젼은 탐색 네비게이션이 불편하여, PC 브라우져에서의 사용을 권장합니다.

피시버젼에서 노란색 바탕으로된 단어를 클릭하면, 사전이 튀어나옵니다. 원본의 올바른 의미를 그대로 옮긴경우 문제가안되지만

재해석과정에서 잘못된 해석일수도 있기때문에 뎃글기능을통한 사전보정 가능합니다.

목차

Expand
titleIntroduction

Children Display
depth1
styleh3
pageIntroduction

Expand
titleConcepts

Children Display
depth1
styleh3
pageConcepts

Expand
titleAKKA-Training

Children Display
depth1
styleh3
pageAKKA-Training

Image Removed

*AKKA장점:JAVA와 C#이 모델과 개발패턴을 공유하여 동일컨셉 개발가능하다.  그림:순수 이기종 통신 지원 Jnbridge.com 에서 발췌

Akka

  • Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.  
  • 동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.
  • Akka는 Java환경및 .net Framework에서
이용가능하다.  Note
titleAKKA와 유사한 목적을 가진 플래폼

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

Image Removed

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지원 (microsoft 네임스페이스에포함,차기 닷넷프레임워크에 포함가능성)

기타 : http://blog.takipi.com/async-goes-mainstream-7-reactive-programming-tools-you-must-know/

공통점:

  • Reactive 단어를 강조하며 스케일아웃이 용이한 동시성 프로그래밍 개발지원
  • 동시성 달성 을 위해 복잡한 멀티스레딩 프로그래밍을 지양함
  • 메시지 처리 를 어떠한 패턴으로(Actor) 추상화
  • 도메인명(네임스페이스) 에 .io 룰 붙이는 경향이 있으며 라이브러리가 아닌 툴또는 툴킷이라고 소개됨
  • 함수형프로그래밍 을 강조하기도함
  • 이용가능하며, Actor모델은 이제 대부분의 개발플래폼에서 툴킷형태로 사용가능합니다.


AKKA에서 내세우는 강점



특징

Tip
title시스템

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

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

Tip
title디자인에 의한 탄력성유여한 장애 처리

현대시스템에서 시스템의 일부가 다운되거나 고장 나는것은 예외적인 현상이아니라

평범한 동작의 일부이다.

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

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

Resilient : 탄력적인 , 유연한

Tip
title고성능

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

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

Tip
title탄성및 분산

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

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


Expand
title추가용어설명

신축성: (Elastic)

초기에는 scaleable(확장가능) 이라는 말을자주 사용하고 스케일-아웃만을 의미하지만

Elastic은 트래픽에따라 스케일아웃(확장) 스케일인(축소)을 자유롭게 할수 있는 구조로

리액티브영역에서 Elastic이란 용어를 더 많이 사용


이벤트소싱 (EventSourcing)

이벤트 소싱(및 샤딩) 은 커다란 웹사이트를 수십억명의 사용자 규모로 확장하는 아이디어이며

이아이디어는 매우 간답합니다. 액터가 처리가 될때 명령의 이벤트 목록을 생성하고 저장을 합니다.

이 계획은 이벤트만이 저장소에 추가되고 아무것도 변이되지 않는 점이며 

이를 통해 이벤트 스트림의 소비자를 완벽하게 복제하고 확장할수 있습니다. 

구성요소의 컴퓨터가 고장이나거나 푸시로기능중 손실되는경우 , 이벤트 스트림을 재생하여 쉽게 재구성합니다.

이벤트 소싱은 Akka.net 지속성(Persistence)에서 지원됩니다.  (  참고 소스 : http://getakka.net/articles/persistence/event-sourcing.html  )



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반응형 스트리밍 데이터

성능에 있어서 역배압장치역압력장치(backpressure) 사용으로, 비동기 비 차단 스트림 처리스트림을 모두 처리하려고함.

완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트 에서클라이언트에서 마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다.

이것은 AkkaStream에서 지원을 합니다.


Expand
title스트리밍


역압력 설정에따른 처리량

Image Added

불안정한 상태에서는, 입력량을 제어해야 출력량이 더 안정적으로 많이 처리를 할수 있다란 내용

출처 : http://readme.skplanet.com/?p=12465


메시지흐름의 진보된 모니터링

Image Added

메시지중심의 스트림 설계가 잘되었다고 하면 Request에대한 흐름과

병목지점에대한 파악및 조정이 가능해집니다. 이것은 한번에 이루어질수 없으며

데이터중심적인 설계방식에서 이벤트중심으로 개발 패러다임을 바꾸고

그에 맞는 기반시스템을 먼저 구축할필요가 있습니다.
(데이터가 중요하지 않다는 이야기가 아니며, 이벤트변화에 따른 상태를 저장하는것 또한 중요합니다.
CRUD는 여전히 중요하지만 메시지큐 없이 CRUD에만 의존하는 서비스의 한계를 이야기합니다.)

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

출처 : https://www.lightbend.com/products/enterprise-suite/intelligent-monitoring





키워드로 살펴본 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)을 이용하여 작성
  • 예제 코드에대한 설명 위키에 카테고리내에 문서화
  • 예제 코드 리뷰기능
  • 스크럼보드를 통한 문서화 스프린터 계획

JIRA 1퍼 활용 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


추가 이점

JAVA와 .NET 진영에서 동시성및 고성능 분산메시징 처리에 관련된 문제를 동일해결모델을 통해 해결할수 있습니다.

그 해결방법을 AKKA를 통해 배울수도 있으며, 해결툴로 AKKA가 아니여도 됩니다.

그 중심엔 액터와 리액티브 스트림이 있습니다.


페이스북 채널을 통해서 최신 기술소식을 국내버전으로도 전달하고 있습니다.  



Panel
borderStylesolid


액터모델을 도입한 개발 툴킷들


그외 기타 정보

Include Page
devbegin:모집공고
devbegin:모집공고

최근에 변경된 페이지

Recently Updatedtypespagemax5hideHeadingtruethemeconcise