람다 아키텍쳐와 카파 아키텍쳐

1 minute read

람다와 카파 이전의 데이터 플랫폼 아키텍쳐

이전의 레거시 데이터 플랫폼 아키텍쳐는 다음 그림과 같이 굉장히 복잡했습니다. 스크린샷 2021-07-18 오후 4 51 12

이렇게 복잡하다 보니 데이터 플랫폼이 유연하지 못하고 실시간으로 생성되는 데이터를 효과적으로 처리하지 못하는 한계점을 가지고 있었습니다. 또한 데이터가 파편화되어 관리되므로 데이터의 효율적인 관리, 인사이트 추출이 힘든 상황입니다.

람다 아키텍쳐

위에서 언급한 레거시 아키텍쳐의 문제점을 해결하기 위해 기존의 데이터 파이프라인을 개선한 것이 람다 아키텍쳐입니다. 람다 아키텍쳐는 기존의 배치 처리 부분과 별도로 스피드 레이어를 만들어서 실시간 데이터 ETL작업을 수행하는 레이어를 만들었습니다. 또한 실시간 데이터 처리하는 스피드 레이어와 배치 레이어를 분리하여 단기 데이터, 장기 데이터를 효과적으로 관리할 수 있고 전체 파이프라인 관리를 좀더 용이하게 처리할 수 있습니다.

람다 아키텍쳐의 구조는 다음과 같습니다.

스크린샷 2021-07-18 오후 5 01 39

람다 아키텍쳐는 기존 데이터 파이프라인처럼 데이터를 처리하는 배치 레이어, 실시간 데이터를 처리하는 스피드레이어, 그리고 사용자에게 데이터를 서빙하는 서빙레이어로 구성되어 있습니다. 람다 아키텍쳐에서 추가된 스피드레이어는 실시간 데이터 처리를 통해 기존의 레거시 아키텍쳐가 가지고 있던 데이터 처리의 파편화, 비실시간성을 개선하였습니다.

또한 배치 레이어와 스피드 레이어가 구별되어 실시간 처리가 되어야 하는 데이터와 장기 기억으로 가져가야할 데이터가 분리되어 관리가 한층 편해졌습니다.

다만 이렇게 배치 레이어와 스피드 레이어가 구분되었기 때문에 두 레이어의 데이터를 통합하는데 다소 유연하지 못한 데이터 처리가 강제된다는 단점이 있습니다. 또한 이런 람다 이키텍쳐의 경우 각 레이어 마다 적절한 기술을 사용해야하기 때문에 관리가 어려워지고 단기/장기 데이터를 따로 관리하기 때문에 관리 비용이 많이 든다는 단점이 있습니다.

카파 아키텍쳐

카파아키텍쳐는 람다 아키텍쳐의 단점을 개선하기 위해 나온 아키텍쳐입니다. 카파 아키텍쳐는 데이터의 크기나 저장 기간에 상관 없이 동일한 데이터 계산을 하는 아키텍쳐입니다. 또한 장기 데이터를 계산해서 저장하는 것이 아니라 장기 데이터를 로우 데이터 형식으로 저장해 놓은 다음 데이터 조회 요청이 올 경우 그 즉시 계산을 하는 방식으로 구성됩니다. 람다 아키텍쳐는 데이터 조회를 위해서 데이터를 저장된 곳에서 가져오는 것이 핵심이지만 카파 아키텍쳐는 조회를 요청하는 즉시 계산해서 데이터를 가져다 준다는 것이 핵심입니다.

카파 아키텍쳐의 구조는 다음과 같습니다.

스크린샷 2021-07-18 오후 5 31 01

이러한 카파 아키텍쳐는 람다 아키텍쳐의 단점인 로직의 파편화, 관리의 어려움 등의 이슈를 제거하기 위해 배치레이어를 제거하고 스피드 레이어만을 남겨놓아 스피드 레이어에서 데이터를 모두 처리합니다.

이러한 카파 아키텍쳐를 위해서 데이터들은 모두 스트림 형태로 제공이 되며 여기서 스피드 레이어는 스트림 데이터를 효과적으로 처리할 수 있어야합니다. 이렇게 스피드 레이어에서 요구되는 기술 사항들을 가장 잘 충족 시키는 것이 오늘날 카프카 라고 불리는 오픈 소스 기술입니다.

참조문헌: 아파치 카프카 애플리케이션 프로그래밍 with 자바, 카프카, 데이터 플랫폼의 최강자, Apache Kafka documentation

Leave a comment