You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

AKKA는 루나소프트에서 대용량 메시징 처리를 부분적으로 활용하는 툴킷으로( 이상한 툴킷 - 똑바로 읽어도 거꾸로 읽어도 AKKA입니다.)  

루나소프트에서는 이 기술을 어떻게 활용하는지 활용편을 소개합니다.

AKKA


Amdahl's Law

Amdahl's Law :

멀티코어를 사용하는 프로그램의 속도는 프로그램 내부에 존재하는 순차적 부분이 사용하는 시간에 의해서 제한됩니다.


멀티스레드 프로그래밍으로 복잡한 도메인의 동시성을 처리하는데는 논리적인 한계가 있습니다. 그 복잡도가 도메인과 함께 증가하기 때문이며

Akka는 곳곳에 존재하는 순차적인 부분을 전부 없애거나 최소한으로 만들기 위해서 사용되며 액터패턴을 활용하여 다음과 같이 고성능 메시지 전송 전략 툴을 제공합니다. 


서비스 소개 - 루나소프트 솔루션




루나코인과 무관하며, 다양하게 파트너사로 확보한 채널또는 호스팅( 카카오채널,네이버톡톡,메타,CAFE24,MakeShop ) 을 통해 E-Commerce를 위한 구축형이아닌 SaaS형태의 CRM/메시지/마케팅 솔루션을 제공하고 있습니다.

Luna는 통상 달, 혹은 달의 여신을 지칭하지만 미칠 듯한 열정(lunatic)을 뜻하는 중의적 의미도 담고 있습니다. 치열한 E-commerce 생태계 속에서 어두운 밤길을 안내해 주는 달빛처럼 길을 제시하고, 파트너사들의 성공적인 내일을 위해 열정적으로 뛰겠다는 사명감을 가지고 시작한 루나소프트는 기존의 서비스들과 다른 새로운 아이템과 기술력으로 문화와 유행을 만들기 시작했습니다.

- 그레이

링크 : https://lunasoft.co.kr/home/main/page/company/partner

파트너사 솔루션 맵핑




해결사례와 적용사례


스마트 플러스 상품연동

  • 호스팅 연동 상품정보 병렬및 동시성처리를 위해 멀티스레드를 대신하여 Akka의 Dispatcher가 활용되고 있으며 상품정보를 안정적으로 업데이트하고 있습니다.  - Spring Boot With AKKA

나이키 드로우 이벤트 - 타임리밋 이벤트


문제 : 나이키 드로우 이벤트에서는 타임리및 이벤트를 진행하며, 전설적인 상품의 경우 100만건 이상의 이벤트가 짧은 시간에 응모됩니다. 순식간에 발생하는 대용량 이벤트를, 초기 시스템은 처리하지 못하였습니다.

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

AKKA 분산처리기

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

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


성능측정

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


참고기술


이벤트 실시간 적재및 분석

CRM서비스에서 유용한 실시간 이벤트는 불특정하게 발생하며, 배치가 아닌 스트리밍형태로 즉각 처리를 하기위해 AKKA가 부분활용되었습니다.

고성능 이벤트 처리기 

문제 : 1000개의 이벤트가 1초내에 외부로부터 발생했다고 가정해봅시다. 1000개의 개별 이벤트를  DB를 순신간에 저장해야한다면 커넥션풀 1000개를 순식간에 소진할것입니다. 그리고 이것은 대부분 이벤트 대량 유실및 장애로 이어지게됩니다.

해결 : 이벤트 적재의 저장소 라운드트립을 줄이기위해 FSMACTOR를 사용되었으며 위와같은 케이스에서 라운드트립 1이면 충분합니다. - Kafka와 연계되어 메시징 분산처리 성능및 보장능력을 더 개선할수 있습니다.




고객의 문장을 이해하기위해 NLP사전관리를 하고 있으며 단어 매칭이 될시 자주쓰는 메시지 설정을 통해 빠른 상담이 가능합니다. 

단순하게 매크로 기능뿐만 아니라, 고객이 사용한 상담단어는 곧 트렌드가 될수 있습니다.


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

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

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

  • 반품 - 회수 - 지역명  : 반품 CS에는 주로 지역명이 함께 언급됩니다.
  • 원피스-블라우스-사이즈-색상 : 언급되는 카테고리및 옵션들은 주요 트렌드가 될수 있습니다.
  • 퇴실/ 복숭아 : 패션뿐 아니라 다양한 산업군에서 루나톡을 사용하는것을 활용할수 있으며, 산업군 별로 트렌트 파악또한 가능합니다.
  • 고객감동 지표 키워드 : 중요한것은 고객 CS(CUSTOMER SERVICE)가 잘 처리되어, 고객이 CS(Customer Satisfied)하는것입니다. CS가 잘 마무리된 경우 "감사" 라는 단어가 랭킹 되며 루나톡에서 중위권에 언급되는 단어입니다.



쇼핑 이커머스 대부분의 상담내용중 대부분은 교환/반품이며 해당 CS처리를 위한 택배회수 챗봇기능이 제공됩니다. 


CRM EVENT GRAPH


이벤트를 단지 적재하고 통계를 내는것만으로는  부족하며,  GRAPH로 사용자 이벤트를 연결하여 시각화하여 고객의 불만뿐아니라 고객의 새로운 니즈를 찾아 낼수 있습니다.

원피스와 운동화는 도대체 어떠한 연관이 있을까요? 

실제 상담내용으로  "고객 : 혹시 아래 나이키 신발과 어울릴만한 스커트나 원피스 있을까요? 많이 걸어야하고 아이가 어려 신발은 편한걸 신어야하는데 오랜만에 스커트가 입고싶어서 구매하려고 합니다.

제가 둘러보았는데 코디때문인지 모던하고 여성스런스타일이라 저신발엔 어울릴지 모르겠어서 챗드려요"  - 원피스복장에도 운동화를 찾는 고객의 니즈가 있음

루나톡-WORD.mp4




참고기술


기다림이 없는 메시지 전송 - TELL ( Forgot And Fire )


카카오모빌리티 챗봇/채팅상담 - 루나개발제공


챗봇에서 발생하는 챗봇응답속도를 위해 메시지를 비동기적(액터 Tell)으로 저장하고

이후 챗봇에서 발생한 데이터를 활용하여 빠른 CS상담처리가 됩니다.  챗봇의 액션을 저장하기위해 고객은 그 시간을 기다릴 필요가 없습니다.


레거시를 위한 지원 - 메시지전송기능 지원


기존 레거시 시스템이 큐처리및 변경이 불가한경우,  API연결지점을 만들어 AKKA에서 제공하는 큐기능으로

메시지 순차처리및 메시지 우선순위(메일BOX) 같은것을 지원할수 있습니다.

링크:


마무리


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

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

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

AKKA는 OOP에서 디자인 패턴과 함께, 다양한 메시지 전송전략및 패턴을 학습할수 있는 좋은 툴킷으로


루나소프트에서는 이 툴킷을 MSA에 전면적으로 채택하기 보다 , 부분적으로 활용하고 있습니다.



  • No labels