여러가지 소스에서 분석및 집계를 수행하여 추천데이터 혹은 목적성 데이터를 만들어야하며

그렇게 만들어진 데이터를 수십만명의 사용자에게 제공하기 위해 실시간 검색기능이 필요하다고 가정해봅시다.


기능 요약

1차 설계


설계는 마무리되었고, 아래와같은 컨셉을 사용할것입니다.

RDB와 아닌것의 저장소를 썩어서 상호운영이 가능하게 하는것은 어려운일이고

SPARK 엔진 + 하둡 + RDB + 파이썬기반 분석시스템 조합으로 이러한 부분의 문제를 상당히 단순화하고

강력한 솔류션을 제공해주며 그것을 잘이용하는게 요즘 추세입니다.

여기서의 목표는 규모보다는, 빅데이터가 되지않게하기위해 빠른소비를 하고

스토리지가 무한대로 늘어나는것을 막고 , 분석처리결과를 더 빨리 감지하는데 목적이 있습니다.

그리고 직접 클러스터기능을 구현하면서 시행착오를 통해 학습을 하는것입니다.

주요컨셉

Spring with AKKA https://gofore.com/en/collecting-data-with-akka-and-spring-boot/  (분산메시지처리를위해 Spring만으로는 부족함)

JPA Persitence : http://heowc.tistory.com/55 ( ORM은 RDB개발에서 메시지중심설계로 전환하는 핵심입니다. )

Spring Batch : http://wiki.gurubee.net/pages/viewpage.action?pageId=4949437 ( 일괄적인 방법의 배치 스케쥴링과 부분배치, 풀배치및 SP배치 사용배제)

Akka Persitence : https://doc.akka.io/docs/akka/2.5.5/scala/persistence.html  ( 레디스와 같은 메모리 DB를 직접구현)

AKKA Cluster : https://doc.akka.io/docs/akka/2.5/cluster-usage.html ( 이기종통신에서 카프카는 필수이지만, 카프카의 클러스터 메시징처리를 대처)

MapReduce : https://blog.knoldus.com/2014/09/29/map-reduce-with-akka-and-scala-the-famous-word-count/  (  메모리 데이터를 분산하고 그것을 다시 모으는방법 )

대부분 이용하는것보다, 직접 설계하는것에 컨셉을 두었습니다.

FastDataFlatform에서 잘설계된것을 이용하는것은 아래 LightBend가 가 추천되며

유사 아키텍을 여러개 살펴보았지만,가장 깔끔하게 구성된것으로 보이며 연구대상 1호입니다. 

https://www.lightbend.com/products/fast-data-platform





1차 설계의 문제점

준비중

2차 설계:

준비중