[System Design] What is Lambda Architecture?

What is Lambda Architecture?

람다 아키텍처는 대량의 데이터를 처리하는 방법으로, 하이브리드 접근 방식인 일괄 처리 및 스트림 처리에 엑세스해 데이터를 처리하는 아키텍처를 말한다. 람다 아키텍처는 임의의 함수식을 계산하는 문제를 해결하는 데 사용한다. 람다 아키텍처는 크게 3개의 레이어로 구성된다.

Batch Layer

새로운 데이터는 데이터 시스템에 지속적으로 공급된다. 이 데이터는 배치 레이어와 스피드 레이어에 동시에 공급된다. 배치 레이어는 모든 데이터를 한 번에 살펴보고 최종적으로 스트림 레이어가 작성한 데이터를 수정한다. 이 계층은 보통 하루에 한두 번씩 미리 정의된 일정에 따라 수행한다. 배치 레이어에는 매우 중요한 두 가지 기능이 있다.

  • 마스터 데이터 세트 관리
  • 배치 뷰의 pre-compute

Serving Layer

배치 뷰의 형태로 배치 계층에서 나오는 출력과 준실시간에 가까운 뷰의 형태로 스피드 레이어에서 나오는 출력은 서빙 레이어로 전달된다. 이 계층은 배치 뷰를 인덱싱해 필요할 때마다 짧은 지연 시간으로 쿼리할 수 있도록 한다.

Speed Layer (Stream Layer)

이 계층은 배치 레이어의 지연 시간으로 인해 배치 뷰에 아직 전달되지 않은 데이터를 처리한다. 또한 실시간 뷰를 생성해서 사용자에게 데이터의 전체 뷰를 제공하기 위한 최근 데이터를 처리한다.

Benefits of lambda architectures

  • No Server Management - 소프트웨어를 설치, 유지, 관리할 필요가 없다.
  • Flexible Scaling - 애플리케이션을 자동으로 확장하거나 용량을 조정해 확장할 수 있다.
  • Automated High Availability - 서버리스 애플리케이션에 이미 가용성 및 내결함성이 내장되어 있다는 것을 의미한다. 이는 모든 요청이 성공했는지 여부에 대한 응답을 받을 수 있다는 것을 의미한다.
  • Business Agility - 변화하는 비즈니스 / 시장 시나리오에 실시간으로 대응한다.

Challenges with lambda architectures

  • Complexity - 람다 아키텍처는 매우 복잡하다. 배치 레이어와 스트리밍 레이어의 별도 코드 베이스 유지, 디버깅, 모니터링 등 비용이 많이 든다.
Author: Song Hayoung
Link: https://songhayoung.github.io/2023/12/05/System%20Design/etc/what-is-lambda-architecture/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.