람다 아키텍처(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

Lambda Architecture

A repository dedicated to the Lambda Architecture (LA). We collect and publish examples and good practices around the LA.

Updates

What is the Lambda Architecture?

Nathan Marz came up with the term Lambda Architecture (LA) for a generic, scalable and fault-tolerant data processing architecture, based on his experience working on distributed data processing systems at Backtype and Twitter.

The LA aims to satisfy the needs for a robust system that is fault-tolerant, both against hardware failures and human mistakes, being able to serve a wide range of workloads and use cases, and in which low-latency reads and updates are required. The resulting system should be linearly scalable, and it should scale out rather than up.

Here’s how it looks like, from a high-level perspective:

LA overview

  1. All data entering the system is dispatched to both the batch layer and the speed layer for processing.
  2. The batch layer has two functions: (i) managing the master dataset (an immutable, append-only set of raw data), and (ii) to pre-compute the batch views.
  3. The serving layer indexes the batch views so that they can be queried in low-latency, ad-hoc way.
  4. The speed layer compensates for the high latency of updates to the serving layer and deals with recent data only.
  5. Any incoming query can be answered by merging results from batch views and real-time views.

Resources

Who is behind this?

See the about us section for details.


Sunday, July 15, 2012

3M의 혁신적 문화

3M은 혁신적인 문화를 제도화하기 위해 다음과 같은 메커니즘을 활용하고 있다.

◈ 15% 규칙: 1920년부터 3M에서는 개인시간의 15%까지를 원하는 프로젝트에 자유롭게 사용해도 좋다고 되어 있다. 이것은 자신의 꿈과 흥미가 있는 부문의 연구에 몰두하는 것을 공적으로 승인하는 것으로 참신한 아이디어의 탄생을 지원하고 있다.

◈ 25% 규칙: 각 사업부 매출액의 25%를 지난 5년 내에 개발된 신제품으로 구성한다.

◈ Genesis Grants: 사업부를 중심으로 한 중요한 연구개발과 관련해서 가용한 아이디어가 묻혀버릴 위험성을 고려해서 마련된 내부 모험투자기금으로써 신규 프로젝트의 시제품 개발 및 시장테스트를 위해 지원한다.

◈ Product Champion: 3M에서 신제품 개발에 관계하고 사업에 성공한 사람들에게 주어지는 명예로운 칭호로 10년, 20년에 걸쳐서 수많은 고생과 장애를 겪고 몇 번씩이나 실패를 거듭하면서도 작정한 프로젝트에 몰입해서 드디어 성공을 거둔 그 무용담은 계속 전해지고 후에 뒤를 잇는 사람들에게 무한한 격려가 된다.

◈ Carlton Society: 독창적인 기술적 공헌을 한 연구원들을 우대하기 위해 명예회원제를 운영한다.

◈ Dual Ladder Career Track: 기술직과 관리직의 승진경로를 별도로 설정하여 기술자들이 지속적으로 연구활동에 전념할 수 있도록 하고, 급여에서 차이가 나지 않게 하고 있다. 이는 기술직 신입사원에게도 승진에 대한 가능성을 자극시켜 줄 뿐만 아니라, 사원 한 사람, 한 사람의 적성과 장점을 최대한으로 발휘시킴으로써 회사 전체의 성장을 꾀한다.

◈ Own Business Opportunities: 신제품 아이디어를 고안한 사람이 실제 프로젝트를 추진할 수 있도록 한다.

◈ High Impact Program: 각 사업부가 1~3개의 제품을 선정하며 특정 기간 내에 신속히 출시 할 수 있도록 관리한다.


'생산성' 카테고리의 다른 글

Lean 개발방법론 ( Agile의 하나 )  (0) 2016.06.19

+ Recent posts