Page History
Tip |
---|
영문 인터넷 리소스를 참고하여 AKKA 개념을 쉽게 설명하고 한글로 카테고리화 하는데 목적이 있는 문서페이지입니다. C# 코드베이스로 테스트하며 작성예정이지만, 상황에따라 스칼라/자바 코드등이 언급될수도 있습니다. AKKA/ACTOR를 이용한 동시성/분산처리 기법은 언어에 종속적이지 않다것이며 AKKA는 JAVA가 태생이지만, 근본적인 철학은 Erlang의 Actor에서 영향을 받아 탄생이된 툴킷입니다. 이것을 배우는 과정에서 일반적인 분산환경에서의 필요한 개발 상식이 조금더 풍부해 질것으로 기대해봅니다. |
*그림 : JAVA와 .NET의 이기종 통신을 지원하는 Jnbridge.com 에서 발췌
분산처리환경에서 단순화된 개발방법을 제시하는 AKKA 분산환경에서의 동시성 처리에대한 해결모델은 언어및 플랫폼에 종속적이지 않으며,AKKA가 아니여도 됩니다. AKKA는단지 분산처리에있어서 필요한 기본개념을 먼저 알려주고 이벤트중심 설계를 활용한 단순화된 개발모델을 제시하며 개발자는 그것을 이용하여 응용프로그램내에 직접 작성 할수있습니다. 그 중심엔 액터가 있으며 선택가능한 수많은 툴중 하나입니다. 다음과 같은 컨셉으로 컨텐츠를 정리하고 있습니다.
|
ACTOR :
여러가지 개발 플래폼에서 도입 하기 시작하였으며, 분산 미들웨어에서 수많은 일을 하기위한, 능동적 메시지 객체
마이크로서비스의 구성요소로 적합하며, 마이크로서비스보다 더 작은 단위
- 어떠한 액터라도, 리모트상에 위치가가능하며 클러스터 구성이 가능하며 고성능 대화가가능
- 언랭에서 처음 소개된 프로그래밍 모델
Akka :
Akka- Akka는 오픈 소스 툴킷으로 동시성과 분산 애플리케이션을 단순화하는 런타임이다.
- 동시성을 위한 여러 프로그래밍 모델을 지원하며, Erlang으로부터 영향을 받아 actor기반의 동시성이 두드러진다.
- Akka는 Java환경및 .net Framework에서
Info |
---|
번외 - MS Orleans ( https://dotnet.github.io/orleans/ ) : MS에서도 Actor 개발 패턴의 장점을 인지했는지? Actor 모델을 지원하는 Orleans 라이브러리를 Microsoft. 네임스페이스에 포함하기 시작했으며 다음 .net framework에는 기본 탑재될것으로 예상해봅니다.( 항상 틀리는 저의 개인적 예상) MS Orleans에서 언급되는 스택이 AKKA에서 언급되는 스택의 범위가 유사합니다. . NET환경에서만 비동기 분산처리를위해 Actor 패턴이 필요하고 클라우드 배포환경인인 Azure까지 쉽게 지원받으려면 Orleans만 사용해되도 무방하지만 Java(JVM) ↔ C#(CRM) 환경을 넘나들기위해서는 개인적으로 AKKA를 추천합니다. |
특징
- 동시성은 메시지 기반이며 비동기 방식으로 이루어진다: 일반적으로 변형 가능한 데이터를 공유하거나 동기화되는 primitive를 사용해서는 안됩니다: Akka는 액터 모델을 구현한다. ( 객체 공유는 죽음의 칵테일과 같다라고 비유하기도 합니다.)
- 동일한 호스트든 분산된 호스트들이든, 직접 통신하든, 몇몇 혹은 다수의 스레드 상에서 동작하는 라우팅 채널을 이용하여 통신하든, 혹은 이외의 방법으로 통신을 하든 actor들이 상호작용하는 방식은 동일하다. 이러한 세부사항들은 프로그램의 수정 없이 스케일-업(더 성능이 뛰어난 서버를 사용)하거나 스케일-아웃(더 많은 서버를 사용)하기 위해 배포 시점의 구성 메카니즘에 따라 변경할 수 있다.
- Actor들은 프로그램의 오류를 연관성에 따라 계층적으로 분류한다. 이 오류들은 actor의 supervisor의 이벤트로 처리된다(어느 actor가 오류를 발생했다는 메시지인지를 가리지 않음). 얼랭과는 대조적으로 Akka는 parental supervision을 강조한다. 이는 각 actor가 parent actor에 의해 생성되고 감독받는 것을 의미한다.
주요 지원 모듈
- Actors - 기본 동시성처리를 위한 모델( 동시성처리에서 OOP의 한계를 보완)
- Remoting -원격처리객체
- Cluster -분산을위한 클러스터
- Cluster Sharding -분산 저장처리를 위한
- Cluster Singleton
- Cluster Publish-Subscribe -분산환경에서의 실시간 감지기능처리 모듈
- Persistence -상태값을 보존하여 메모리 DB로 확장가능
- Distributed Data
- Streams -대용량 처리를위한, 작은단위 고성능 실시간처리
참고링크: 영문이 익숙하면 신뢰성있는 영문 메뉴을을 보는것을 추천합니다. ( 본 자료는 재해석하거나, 오역이 있을수 있음을 알려드립니다.)
- Akka for JVM ( Java/Scala) -원조
- Akka.Net ( C# ) -후발주자
컨텐츠
Children Display | ||||||
---|---|---|---|---|---|---|
|
Children Display | ||||||
---|---|---|---|---|---|---|
|
Children Display | ||||||
---|---|---|---|---|---|---|
|
진행사항
Related Ticket
Jira | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
History
이 문서 검색
Livesearch | ||
---|---|---|
|
인기있는 주제
Popular Labels | ||||
---|---|---|---|---|
|
특별 페이지
Page Tree | ||||
---|---|---|---|---|
|
- 이용가능하며, Actor모델은 이제 대부분의 개발플래폼에서 툴킷형태로 사용가능합니다.
AKKA에서 내세우는 강점
Tip | ||
---|---|---|
| ||
액터와 스트림을 사용하면 여러 서버에서 효율적으로 리소스를 사용하여 확장하는 시스템을 구축 할 수 있는 개발 모델지원 |
Tip | ||
---|---|---|
| ||
현대시스템에서 시스템의 일부가 다운되거나 고장 나는것은 예외적인 현상이아니라 평범한 동작의 일부이다. 장애가 발생할 경우,자가 치유되고 응답 성을 유지하는 시스템을 작성할 수 있는 개발 모델을 제시해줍니다. Resilient : 탄력적인 , 유연한 |
Tip | ||
---|---|---|
| ||
단일 기계에서 최대 초당 5 천만 메시지 처리 가능하며 메모리 힙 GB 당 250 만명의 액터생성가능합니다. |
Tip | |||||
---|---|---|---|---|---|
| |||||
단일 실패 지점이없는 분산 시스템. 로드 밸런싱 및 라우팅 노드. 클러스터 소싱을 사용한 이벤트 소싱 및 CQRS CRDT를 사용한 최종 일관성을위한 분산 데이터 프로그래밍 모델지원
|
Tip | |||||
---|---|---|---|---|---|
| |||||
성능에 있어서 역압력장치(backpressure) 사용으로, 비동기 비 차단 스트림을 모두 처리하려고함. 완전 비동기 및 스트리밍 HTTP 서버 및 클라이언트에서 마이크로 서비스를 구축하기위한 훌륭한 플랫폼을 제공합니다. 이것은 AkkaStream에서 지원을 합니다.
|
키워드로 살펴본 AKKA 제공 툴킷
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
Expand | ||
---|---|---|
| ||
|
추가 이점
JAVA와 .NET 진영에서 동시성및 고성능 분산메시징 처리에 관련된 문제를 동일해결모델을 통해 해결할수 있습니다.
그 해결방법을 AKKA를 통해 배울수도 있으며, 해결툴로 AKKA가 아니여도 됩니다.
그 중심엔 액터와 리액티브 스트림이 있습니다.
페이스북 채널을 통해서 최신 기술소식을 국내버전으로도 전달하고 있습니다.
Panel | ||
---|---|---|
| ||
액터모델을 도입한 개발 툴킷들
그외 기타 정보
|
Include Page | ||||
---|---|---|---|---|
|