Versions Compared

Key

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

...

Info

수많은 노드로 규모를 확장하는것이, AKKA 메시지의 궁극적인 목표입니다.

여러분의 로컬에서만 실행되는 코드를 하나도 바꾸지 않고 분산시스템에서 실행되게 할수 있을까요?

짧게 답하면 '아니오' 입니다. 로컬과 원격의 환경차이를 그냥 추상화해서 없애 버릴수는 없습니다.

다음과 같은 무시할수 없는 네 영역이 있기때문입니다.

  • 지연시간: 노드사이의 네트워크를 통해 전송되는 지연시간을 예측할수 없습니다.
  • 부분실패: 분산 시스템을 이루는 각 부분을 항상 감시할수없으며, 각 부분이 제대로 작동하는지 알아내기가 어렵습니다.
  • 메모리접근: 로컬에서는 메모리 객체에대한 참조를 항상 얻을수 있지만, 원격 노드의 원격객체에대한 참조를 얻는 것은 어럽습니다.
  • 동시성: 원격노드를 조정하는 모든 권한을 가지는 주인이 없으며, 연산순서를 보장받기가 어렵습니다.


이와 같은 문제로 로컬프로그래밍 모델은 분산환경에서의 규모 확장에 실패할 가능성이매우 높습니다.


그래서 아카는 이와 반대되는 접근방법을 선택하게 됩니다. 로컬에서도 원격을 위한 메시지처리기법을 메시지처리기법(액터를통한) 을 사용합니다.

이것은 객체공유를 배제하고 메시지 처리기법만으로 로컬개발과 원격처리 분산처리등의 차이를 줄여 일관성있는 개발을 유도합니다.

이것의 단점도 분명 있습니다. 로컬 시스템에서의 프로그래밍이 불필요하게 어려워질수도 있다란것입니다.

Akka/Actor의 단점도 분명존재합니다.akka의 단점 :

717


예를들어 A class의 모든 접근수준이 private라고 한다면, B Class는 A class의 값을 어떻게 획득해야 할까요?

하지만 반대로 생각해보십시오, 객체 접근을 통해 구현된 로컬서비스인 A class의 모든 접근 수준이 public이라 할지라도...,

원격에 있는 B Class가 어떻게 A class의 퍼로퍼티에 접근 할수 있을까요?


이러한 관점에서, ACTOR는 로컬에서도 객체공유가아닌 메시지 전송기법을 사용하여 구현을 하게되며 실제로 이렇게

구현된 ACTOR는 수평/수직확장을 최소한의 코드변경(심지어는 환경설정변경만으로)만으로 목표를 이루어냅니다.

...