Page History
Tip |
---|
장애처리에 유연하고 고성능 분산처리 개발 개념을 익히기위해 AKKA를 선택하여 학습중에 있으며 샘플코드는(C#) 특정 플래폼에 한정적이지만, 분산개발환경을 위한 개발 패턴은 개발언어/플래폼등에 종속적이지 않는것으로 분산처리 개발환경에 필요한 지식들을 배우는것을 우선으로 자료정리중에있습니다. |
*ACTOR 장점 : JAVA와 C#에서 모델과 개발패턴을 공유하여 비슷한수준의 개발이 가능해진다. 그림:순수 이기종 통신 지원 Jnbridge.com 에서 발췌
분산처리환경에서 단순화된 개발방법을 제시하는 AKKA 분산환경에서의 동시성 처리에대한 해결모델은 언어및 플랫폼에 종속적이지 않으며,AKKA가 아니여도 됩니다. AKKA는단지 분산처리에있어서 필요한 기본개념을 먼저 알려주고 이벤트중심 설계를 활용한 단순화된 개발모델을 제시하며 개발자는 그것을 이용하여 응용프로그램내에 직접 작성 할수있습니다. 그 중심엔 액터가 있으며 선택가능한 수많은 툴중 하나입니다. 다음과 같은 컨셉으로 컨텐츠를 정리하고 있습니다.
|
ACTOR :
여러가지 개발 플래폼에서 도입 하기 시작하였으며, 분산 미들웨어에서 수많은 일을 하기위한, 능동적 메시지 객체
마이크로서비스의 구성요소로 적합하며, 마이크로서비스보다 더 작은 단위
- 어떠한 액터라도, 리모트상에 위치가가능하며 클러스터 구성이 가능하며 고성능 대화가가능
- 언랭에서 처음 소개된 프로그래밍 모델
Akka :
Akka- Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.
- 동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.
- Akka는 Java환경및 .net Framework에서
title | 분산처리관련 동일한 목표를 가진 녀석들 |
---|
지원 범위및 컨셉이 비슷하여, 한가지만 잘 배워두면 접근하기 용이한 툴킷
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/
파이썬 : https://github.com/jodal/pykka/tree/master ( 파이선에서도 AKKA 액터모델 사용가능 하며 동시처리를 위한 로컬 액터만 지원 )
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
import pykka
import time
class Greeter(pykka.ThreadingActor):
def __init__(self, greeting='Hi there!'):
super(Greeter, self).__init__()
self.greeting = greeting
def on_receive(self, message):
print(self.greeting)
# 미국인 액터와, 한국인 액터를 만든다.
actor_ref = Greeter.start(greeting='Hi you!')
actor_korref = Greeter.start(greeting='안녕하세요')
# 각각에게 인사를 한다. -결과를 기다리는 순차처리
answer = actor_ref.ask({'msg': 'Hi?'}, timeout=3)
answer = actor_korref.ask({'msg': '안녕?'}, timeout=3)
# 동시에 인사를한다. -동시성처리
actor_ref.tell({'msg': 'Hi?'} )
actor_korref.tell({'msg': '안녕?'} )
# 수행 결과 : AKKA 액터컨셉을 잘 수행하는지, 필자가 직접 파이썬에서 수행해봄~
# 결론 : 동일 액터모델의 지원을 받으면, 언어는 상관없고 , 멀티스레딩을 직접 핸들링할 필요없이 로직 설계가능
# 실제 개발언어를 변경하게되면, 스레딩처리방법,비동기처리등에서 큰 차이가 발생
Hi you!
안녕하세요
============= wait for test ==================
안녕하세요
Hi you!
Lalala~
|
이것을 모두다 익히는것은 불가할듯하고, 시간이되면 이 문서 레이아웃과 똑같은 AKKA for JAVA 메뉴얼도 작성예정입니다.
공통점:
- Reactive 단어를 강조하며 스케일아웃이 용이한 동시성 프로그래밍 개발지원
- 동시성 달성 을 위해 복잡한 멀티스레딩 프로그래밍을 지양함
- 메시지 처리 를 어떠한 패턴으로(Actor) 추상화
- 도메인명(네임스페이스) 에 .io 룰 붙이는 경향이 있으며 라이브러리가 아닌 툴또는 툴킷이라고 소개됨
- 함수형프로그래밍 을 강조하기도함
차이점: 각각 장단점 존재
- 순수하게 개발언어가 동시성문제를 풀기위해 Actor를 지원함 ( 언랭)
- 기존 개발언어 유지및 프레임워크 유지차원에서, 라이브러리(툴킷)을 통해 이문제를 풀려고함 ( AKKA, Orleans )
- 전체 개발 프레임워크를 통해 , 풀 패키지 제공으로 이문제를 풀려고함 ( Kafka )
- 이용가능하며, Actor모델은 이제 대부분의 개발플래폼에서 툴킷형태로 사용가능합니다.
AKKA에서 내세우는 강점
Tip | ||
---|---|---|
| ||
액터와 스트림을 사용하면 여러 서버에서 효율적으로 리소스를 사용하여 확장하고 확장하는 시스템을 구축 할 수 있는 개발 모델지원 |
Tip | ||
---|---|---|
| ||
현대시스템에서 시스템의 일부가 다운되거나 고장 나는것은 예외적인 현상이아니라 평범한 동작의 일부이다. 장애가 발생할 경우,자가 치유되고 응답 성을 유지하는 시스템을 작성할 수 있는 개발 모델을 제시해줍니다. Resilient : 탄력적인 , 유연한 |
Tip | ||
---|---|---|
| ||
단일 기계에서 최대 초당 5 천만 메시지 처리 가능하며 메모리 힙 GB 당 250 만명의 액터생성가능합니다. |
Tip | |||||
---|---|---|---|---|---|
| |||||
단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및 CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터 프로그래밍 모델지원
|
Tip | ||
---|---|---|
| ||
성능에 있어서 역배압장치역압력장치(backpressure) 사용으로, 비동기 비 차단 스트림을 모두 처리하려고함. 완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트에서 마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다. 이것은 AkkaStream에서 지원을 합니다. |
AKKA-Training에서 샘플코드 기능검증과 활용안을 준비중에있습니다.
키워드로 살펴본 AKKA가 가진 스택범위
|
키워드로 살펴본 AKKA 제공 툴킷
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
참고링크: 주요참고 문서
- 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퍼 활용
Expand | ||
---|---|---|
| ||
AKKA의 문서화는 다음과 같이 절차로 요란하게 진행중입니다.
JIRA 1퍼 활용 Atlassian PreView 참고 |
문서화계획
Roadmap Planner | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
추가 이점
JAVA와 .NET 진영에서 동시성및 고성능 분산메시징 처리에 관련된 문제를 동일해결모델을 통해 해결할수 있습니다.
그 해결방법을 AKKA를 통해 배울수도 있으며, 해결툴로 AKKA가 아니여도 됩니다.
그 중심엔 액터와 리액티브 스트림이 있습니다.
페이스북 채널을 통해서 최신 기술소식을 국내버전으로도 전달하고 있습니다.
Panel | ||
---|---|---|
| ||
액터모델을 도입한 개발 툴킷들
그외 기타 정보
|
Include Page | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||
Jira Charts | ||||||||||||||||
|