Versions Compared

Key

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

Image RemovedImage Added


AKKA는 동시성 처리와 분산처리에 특화된 툴킷으로, 이 기술을 루나에서는 어떻게 활용하는지 활용편을 포함 실제 사용한 작동가능한 샘플 코드를 공개합니다.




AKKA 채택이유?

...

...


다양한 언어와 플랫폼을 수용하는 개발방식을 폴리그랏 프로그래밍이라고 프로그래밍이라고 정의를 합니다.

우리는 JAVA/PHP/.NET 백엔드 3진영의 경계단위를 세진영의 경계단위를 적절하게 분리하고 개발문화를 균형적으로 발전하는 방식을 채택하였으며

다양한 개발환경의 균형을 유지하는것은 항상 어렵고 바쁜일중에 하나입니다. 


서비스가 성장함에 따라 성능처리 문제는 따라오게되며 보안/성능 문제등 기술부채의 이슈가 발생하게되며 단순하게 비동기/멀티스레드 프로그래밍만으로

대용량 처리의 문제를 해결하는것에 한계를 느끼게 되었으며  언어및 플랫폼 중립적인  새로운  패러다임을 조사하게 되었습니다.

물론 대용량 처리의 문제를 해결하기 위해 처음 선택한 플랫폼은 카프카였습니다.


AKKA는 초기부터 CQRS를 포함 다양한 이벤트 중심의 메시징 패턴을 툴킷에 포함시켰으며

DDD는 개발철학및 방법론에 가깝지만 , DDD에서 소개하는 이벤트 중심패턴을 잘 구현한 툴킷중에 하나인것을 알게되었습니다CQRS는 DDD에서 이론을 소개하기 시작하였고 AKKA를 포함 구현체들이 하나둘 등장하고 있습니다.


여기서 툴킷은 라이브러리와 같은 유사한 개념으로 우리가 결정한 개발플랫폼에 프레임워크에 탑재하거나 부분적으로 이용할수 있음을 의미합니다

라이브러리를 레고조각처럼 선택하고 조립할수 있어서 라이브러리 보다는 상위개념이며 다양한 공구가 준비된 툴킷으로 표현되는것이 정확합니다.

  • 스트림처리 API가 없는 자바7에 , AKKA스트림을 탑재하여 JAVA8부터 제공하는 스트림기능보다 더 강력하게 사용할수 있습니다.
  • 닷넷코어에서 Akka.net을 탑재하여 유사한 프로그래밍 모델로 대용량 처리를 할수 있습니다.
  • https://dev.to/withinboredom/php-actors-dapr-39h1 - php진영에서도 액터모델을 활용할수 있지만 여기서 소개하는 akka와는 약간 차이는 있습니다. 타진영 플랫폼에서는 어떻게 해결을 할까? 같이 고민하는것으로도 우리는 충분합니다.

...

이것을 전반적으로 도입하기에는 학습곡선이 높을수 있습니다. 하지만   AKKA는 프레임워크가 아닌 툴킷이며 유용한 도구가 무엇이 있는지 살펴보기로 하였습니다.


레일건(못박는 공구)을 알지못한다고 하면 우리는 망치로만 못을 박기때문입니다. ( 레일건을 직접 만드는것은 훨씬 어려울수 있습니다.)

아카에서 레일건은 하나의 공구일뿐이고 다양한 공구를 제공합니다.

링크 : https://getakka.net/articles/intro/what-is-akka.html

...

단순하게 이론만이 아닌 유닛테스트 가능한 구현체가 존재합니다.  ( 여기서 제공되는 유닛테스트는 비동기로 진행되는 메시지검사를 블락없이 검사할수 있습니다. )

유닛테스트에 관심이 있다고하면 메시지 큐시스템을 사용하는 곳에서 블락을 시키고 검사를 하는 기존 방식의 유닛테스트의 한계를 극복하기위해

블락없이 메시지를 검사하는 테스트 툴킷을 제공합니다. 

정리된 자료 : UnitTest For Actor Message


AKKA는 툴킷의 특성을 가지고 있으며, 필요한 도구만 이용 가능합니다. 그래서 프레임워크가 이미 선택된 상황에서도 부분도입 가능하며

학습곡선이 높은것은 단점으로 지적될수 있지만 역설적으로 복잡한 문제를 풀수 있는 단순화된 방법인 툴을 제공해줍니다이용할수 있습니다.

해결사례와 적용사례

...

루나소프트에서 AKKA의 부분요소를 활용하여 다양한 솔루션에서 어떻게 이용되었는지 살펴보겠습니다.

...

우리는 측정기를 빠르게 만들었고 그와함께 커스텀하게 부하를 줄수 있는 AKKA 분산처리 부하기를 만들었습니다. 그리고 로드밸런스및 발송기 처리률을 개선하여 나이키의 전설적인 이벤트를 안정적으로 처리하게 되었습니다.


AKKA 분산처리기

AWS의 기본 로드밸런스 , 순간 최대 TPS가 1024란 사실은 알기가 어렵습니다모르고 사용할수도 있습니다.  대용량 메시징 발송에서 1024는 너무도 작은 숫자이지만, 적은처리량일수 있고  일반적인 서비스에서는 충분한 숫자일수 있습니다.

AWS의 로드밸런스를 무력화시킬 로드테스트를 하려면 단일장비로는 트래픽유발하기가 어려우며 측정가능 부하기또한 분산처리 가 되어야 합니다.


성능측정

...

Warning

측정을위해  어느정도 자원이필요하지만, 성능을 위해 측정을 포기하는것은 바람직하지 않습니다.

측정을 하지못하면 개선 또한 할수 없습니다.호출량이 모두 측정이되어야하며 유실또한 없어야합니다. 


참고기술

...

셀룩 상품 인덱싱 업데이트

...

루나 소프트의 야심찬 형제 프로젝트로 그린앤 그레이 셀룩의 검색엔진 데이터 동기화 부문에서 준실시간 데이터 업데이트를 위해 FSMACTOR가 이용되었습니다.

...

단순하게 매크로 기능뿐만 아니라, 고객이 사용한 상담단어는 곧 트렌드가 될수 있습니다. 고객의 문장을 FSM ACTOR를 활용하여 고성능으로 적재를 합니다.

루나 상담센터는 젠데스크(게시판형CS처리) / 콜상담을포함 카카오상담톡,네이버톡톡 등을 모두 통합  옴니채널로 운영가능합니다.  멀티채널과 옴니채널은 다음과 같은 의미를 가지고 있습니다.

멀티 채널 : 단순하게 N개의 채널을 각각 이용할수 있음을 의미합니다.
옴니 채널 : N개의 채널을 단일지점을 통해 이용할수 있음을 의미합니다.


상담트렌드 실시간 형태소분석

형태소분석기를 액터에 탑재하여  AKKA 이벤트 처리기를 활용하여 문장분석기를 액터에 탑재하여 ,  실시간으로 고객의 상담 트렌드를 빠르게 파악할수 있으며

반송/회수/반품 문의가 이커머스 상담에서 항상 1,2위를 랭크되고 있는것을 알수 있습니다. 하지만 하위 랭크되는 단어도 다양한 의미를 가질수 있습니다.

...

View file
name루나톡-WORD.mp4
height400


이러한 데이터가 꼭 광고로만 활용되어야 할까요? 고객의 상담으로 획득한 키워드를 통해  우리 고객의 시즌별 상품 품질관리및 개선 아이디어에 대한 지표도 제공할수 있게됩니다. ( 준비중.... )


참고

...

분산환경에서의 동시성 처리에대한 해결모델은 언어및 플랫폼에 종속적이지 않으며종속적일 필요없으며, AKKA가 아니여도 됩니다.


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

개발자는 그것을 이용하여 응용프로그램내에 직접 작성 할수있습니다. 그 중심엔 이벤트드리븐을 지원하는 액터가 있으며 선택가능한 수많은 스택중 하나입니다.


AKKA를 만든 라이트벤드가 주도하는 리액티브 서밋을 주목할 필요가 있으며, 카프카를 포함 리액티브를 선언한 오픈플랫폼 기업이 참여하고 있으며 AKKA종속적이지 않습니다.

정확하게는 리액티브 인터페이스 규약(OOP의 인터페이스)을 준수하겠다란 선언이며, 이것의 구현체가 블락없이 상호연동을 강력하게 하는것입니다.

다양한 글로벌 오픈 플랫폼이 참여를 하며 이벤트 중심의 대용량처리 아키텍처에 대한 발표내용을 주목할필요가 있습니다.

링크 :  https://www.youtube.com/@ReactiveSummit/videos


루나소프트에서는 이 툴킷을 MSA에 전면적으로 채택하여 클러스터로 활용하기 보다, 클러스터까지 확장하기 보다  AkkaStream을 포함 툴킷을 부분적으로 활용하고 있습니다.


추가로 다양한 플랫폼에서 AKKA를 포함 국내외 Reactive 활동들을 페이스북 그룹을 통해 소개하고 있으니 더 많은 정보를 찾고자 할때 도움이 되었으면 좋겠습니다.

Image Added

링크 : https://www.facebook.com/groups/akkalabs


Next