람다 아키텍처(Lambda Architecture)

우연잖게 찾게 된 람다 아키텍처(Lambda Architecture)
제대로 기억해 두기 위하여 글로 남겨둔다.

람다(Lamdba)는 도대체 무엇인가?
람다 대수라는 정의가 있고 람다(λ)에 대한 다양한 쓰임을 설명한 것도 있다. 간단하게는 축약 함수라는 단어로 설명하기도 한다.
또 Java 8 에 적용될 람다의 경우 병렬 처리를 위한 작업 함수를 정의하는 간결한 방식이라고 설명할 수 있다.
람다 아키텍처도 병렬 처리에 대한 간력한 방식을 설명하고 있는 것이라고 볼 수 있다.

우선 아키텍처의 High-Level 개념도를 살펴보자.



개념도를 살펴보면 batch layer 에서 배치 작업을 통해 데이터를 생산해 내고 serving layer 에서 데이터를 조회할 수 있다. 물론 배치 작업이 이루어지지 않은 부분에 대하여 speed layer 에서 조회할 수 있다. 조회된 2개의 데이터 덩어리를 merge 하면 원하는 데이터를 얻는다는 것이 람다 아키텍처의 내용이다.

빅데이터가 나오면서 람다 아키텍처에 대한 사항이 많이 나왔지만 예전부터 쓰던 방식이다. 예를 들어 일별 통계 데이터와 실시간 통계 데이터에 대한 것을 들수 있다. 전일까지의 데이터는 새벽 배치작업을 통해 작업해 두고 당일 데이터는 실시간으로 조회할 수 있도록 하여 SQL 문에서 union 을 통해 데이터를 조회하도록 하는 방식이다. 이렇게 생각하면 람다 아키텍처는 쉽게 이해할 수 있을 것이다.

조금 더 상세한 내용을 살펴보도록 하자.

  • Batch Layer

더 이상 변하지 않는 데이터들에 대하여 배치 작업을 통해 결과 값을 저장해 둔다.
가능하다면 변하지 않는 데이터들이어야하나 실무에서 수작업이라는 엄청나게 무서운 일들이 발생하는 경우가 있어 가능하다면 수동으로 재작업이 가능하도록 만들어 두는 것이 좋다.


  • Serving Layer


배치 작업을 통해 저장된 Batch View 에 대하여 조회할 수 있도록 제공한다. 데이터에 대한 업데이트는 반드시 Batch Layer 의 배치작업을 통해 이루어져야 한다. Batch Layer 에서도 언급하였지만 실무에서는 뜻하지 않은 수작업이라는 것이 존재한다. 절대로 Batch View 에 대하여 직접적인 작업을 하지 말아야한다. 건드리는 순간 쓰레기가 된다. 굳이 하자면 원본 데이터를 수정하고 Batch Layer 에서 배치작업을 수동으로 하여야한다. 가능하다면 이런 수작업을 하지 말아야 한다.

  • Speed Layer
일반적인 데이터 조회 기능을 제공한다. 다만 배치 작업을 통해 생성된 Batch View 와 중복되는 데이터가 없도록 처리하는 것이 중요하다. 그리고 실시간 데이터 조회를 처리하므로 되도록 퍼포먼스에 대하여 신경을 써야한다. 퍼포먼스를 위하여 많은 부분을 Batch Layer 으로 넘겨 처리를 하거나 조회 쿼리에 대하여 훌륭하게 튜닝해두면 된다.

아래는 빅데이터 처리에 적용한 람다 아키텍처 예이다. 실제 빅데이터에서 어떻게 사용하는지 조금더 구체적인 사항들이 나와있다.


어설픈 설명이지만 일단 이렇게 정리를 해둔다.
차후 직접 만들어 볼 기회가 있다면 이를 바탕으로 만들어보고 구축 경험을 더 정리해 보자.



reference
* http://lambda-architecture.net/
* http://www.databasetube.com/database/big-data-lambda-architecture/
* http://www.datasciencecentral.com/profiles/blogs/lambda-architecture-for-big-data-systems


'빅데이터' 카테고리의 다른 글

Hello, TensorFlow!  (0) 2016.07.08
분산 로그 수집기 Fluentd 소개  (0) 2016.06.14
Lambda Architecture  (0) 2016.05.18
Can Spark Streaming survive Chaos Monkey?  (0) 2016.05.11
Comparison of Apache Stream Processing Frameworks: Part 2  (0) 2016.05.11

+ Recent posts