본문 바로가기
데이터/Architecture

Lambda Architecture 란

by Sunyoung95 2024. 7. 29.
문서 작성시 Batch Architecture를 Lambda Architecture와 혼동하여 용어를 잘못기재했다... (진짜 똥멍청이)
Lambda Architecture에 대한 이해도가 낮아서 발생한 일이라 생각하고
다음부터는 이런 일을 방지하고자 Lambda Architecture에 대한 정의를 정리해서 머리에 콱 박아놓을 예정이다.
(용어를 사용할 땐 꼭 확실히 이해한 뒤에 사용하자!!)

 

Lambda Architecture

정의

  • Batch Process와 Stream Process 를 모두 활용하여 대량의 데이터를 처리하도록 설계된 아키텍처
  • 대량의 데이터를 실시간으로 분석하기 어려우므로 Batch를 통해 만들어진 데이터와 실시간 데이터를 혼합하여 사용하는 방식. 

구성요소

lambda architecture 구성요소 (https://www.mdpi.com/1424-8220/23/17/7580)

① Batch Layer

  • Batch를 통해 대용량의 데이터를 미리 계산한다.
  • 미리 계산한 데이터 외에도 데이터 복구 혹은 새로운 view 생성을 위한 원본(raw) 데이터도 함께 저장한다.
  • 저장소 : Apache Hadoop MapReduce, Snowflake, Redshift, Big Query, 등등 (대부분의 OLAP DB가 해당)

② Speed Layer 

  • 실시간으로 데이터 스트림을 처리한다. 
  • 가장 최근의 데이터에 대한 실시간 view를 제공하여 지연시간을 최소화 하는 것을 목표로 한다.
  • Batch Layer의 데이터와 현재의 데이터의 "Gap"을 줄이는 역할을 한다.
  • 데이터 스트림 처리 s/w : Apache Kafka, Amazon Kinesis, Apache Flink, Apache Spark, 등등
  • 저장소 : 주로 NoSQL DB 

③ Serving Layer

  • Batch Layer와 Speed Layer에서 생성된 데이터를 저장하는 공간.
  • Batch Layer에서 생성된 데이터 DB와 Speed Layer에서 생성된 데이터 DB가 종류는 다를 수 있으나 Join과 같은 트랜잭션을 통해 통합 조회가 가능해야한다! (해당 부분이 내가 이해를 잘못하고 있었던 부분이다. 보통 NoSQL DB와 SQL DB는 호환이 되지 않는다...)
    • aws 환경에서는 Dynamo DB를 Speed Layer DB로 사용하고 Redshift를 Batch Layer DB로 사용한다면 Athena를 통해 통합쿼리를 쓸 수 있을것 같다! (Athena 와 Dynamo DB 연동 가능)

필요한 상황 

Lambda Architecture는 여러 계층을 관리하기 때문에 더 복잡하다. 배치 및 실시간 처리의 이점이 복잡성보다 더 큰 경우 선택해야 한다. 이후 데이터 디버깅 시 Batch Layer와 Stream Layer 모두를 점검해야하기 때문에 관리포인트가 2배가 된다. 
  • 사기 감지: 과거 거래 데이터를 분석(일괄 처리 계층)하고 실시간 거래에서 이상을 감지(속도 계층).
  • IoT 데이터 처리: IoT 장치에서 실시간 데이터를 처리(속도 계층)와 동시에 과거 센서 데이터를 집계하고 분석(일괄 계층)
  • 고객 분석: 통찰력을 위해 기존 고객 데이터를 분석(일괄 처리 계층)하는 동시에 사용자 행동에 따른 실시간 추천을 제공(속도 계층).

참고

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

CDC Architecture  (0) 2024.08.10
Star Schema 란?  (0) 2024.08.10

댓글