[레포트]김대리는 어떻게 서버 없이 그 많던 대용량의 데이터를 처리했는가#AWSSummitOnlineKorea

안녕하세요 클래스메소드 서은우 입니다. 이번 AWS Partner Summit Korea 2022에서「김대리는 어떻게 서버 없이 그 많던 대용량의 데이터를 처리했는가」세션을 정리해 봤습니다.
2022.05.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

세션 개요

개요

김대리는 어떻게 다양한 요구 사항에 맞춰 그 많은 데이터를 빠르게 처리할 수 있었을까요? 대체 김대리는 어떤 기술을 사용했을까요? AWS에서 제공하는 기존의 서버리스 분석 서비스와 이번 re:Invent에서 소개된 EMR Serverless, Redshift Serverless를 소개합니다. 이를 통해 OS 패치, 인스턴스 타입 및 확장에 대한 비용 고민 없이 효율적으로 데이터 분석에 집중할 수 있습니다. 자, 지금부터 김대리와 함께 서버리스 데이터 분석에 빠져볼까요?

발표자

강연 내용

본 블로그 에서 사용한 이미지는 AWS Summit Korea에서 제공된 발표자료와 영상을 사용했습니다.

시작하며

  • 김대리가 해결해야하는 문제

김대리는 Amazon EMR을 사용하여 고객 분석을 수행하고 있는 A팀과, Amazon Redshift를 사용하여 결제 데이터를 분석하던 B팀을 통합해야하는 문제를 안고 있습니다. 현재, S3를 사용하여 데이터 레이크를 구성하고 AWS Glue Data Catalog를 사용하여 데이터 레이크의 데이터를 탐색, 스키마 파악, Catalog로 관리하고 있는 상태입니다. 그리고 Amazon Athena로 데이터에 SQL 쿼리를 던져서 분석하거나  Amazon QuickSight에 연결하여 BI 대시보드를 구성하고 있습니다.

이러한 상황에서 인프라 관리 및 운영 부담을 없애고 비지니스에 필요한 분석에 집중할 수 있는 방법은 어떤 것이 있을까요? 또한 김대리는 아키텍처를 최소한을 변경하면서 데이터나 분석 워크로드가 늘어나도 확장에 대해서 고민하지 않아하고 싶습니다. 그리고 컴퓨팅과 스토리지가 독립적으로 확장되며, 다양한 분석 서비스를 동일한 데이터에서 수행하기를 원하고 있습니다.

서버리스 데이터 레이크

우선, 현재 운영 중인 데이터 팀의 아키텍처를 살펴 보겠습니다.

  • S3를 서비리스 데이터 레이크로 사용

S3를 서버리스 데이터 레이크로 사용하는 것은 매우 좋은 선택지입니다. 데이터 웨어하우스나 데이터 확장을 고민할 필요가 없으며, 엑사바이트 규모로 저장하고 보안 및 규정 준수도 가능합니다. 또한 S3에 모인 단일 데이터를 Athena, Redshift, EMR 등의 분석 서비스들로 함께 분석할 수 있습니다. 그리고 AWS에는 여러 곳에서 생성되는 데이터들을 s3로 스토리지로 저장할 수 있는 다양한 툴들이 있으며, 이것을 다양한 분석 서비스들로 원하는 분석을 수행할 수 있습니다.

  • AWS Glue Data Catalog

현재 김대리는 AWS Glue Data Catalog로 S3에 모인 데이터를 통합 관리하고 있습니다. Glue Data Catalog를 사용하면 사용하면 S3에 있는 데이터를 탐색, 스키마 파악, Catalog로 관리하는 것이 가능합니다.

  • Amazon Athena

그리고 Amazon Athena를 사용하여 Data Catalog의 테이블에 AD-HOC 쿼리를 실행합니다. 또한, Athena에는 Data Catalog의 테이블을 사용하고 생성할 수 있는 기능을 사용할 수도 있습니다.

  • Amazon QuickSight

Amazon Athena와 Amazon QuickSight를 연결하여 분석한 데이터들을 대시보드로 시각화합니다.

이러한 상황에서 김대리의 고민을 해결하고 요구사항을 충족하기 위해 Amazon EMR Serverless와 Amazon Redshift Serverless를 사용할 수 있습니다.

Amazon EMR Serverless

Amazon EMR은 최적화된 EMR 런타임을 사용중이기 때문에 런타임 버전을 올리는 것 만으로도 성능, 비용절감의 효과를 볼 수 있습니다. spark, presto 등에도 최적화된 런타임이 적용됩니다. 또한 EMR은 한 번 빌드된 Job을 다양한 환경에서 사용 가능하며, EC2 EKS 등에서 사용이 가능하기 때문에 기존의 워크로드를 쉽게 옮겨오는 것이 가능합니다. 이는 Amazon EMR Serverless에도 똑같이 적용되는 사항입니다.

Amazon EMR Serverless는 미리 초기화된 pool을 사용해서 요청에 몇 초 이내에 반응하기 때문에 인터렉티브한 환경에서도 사용할 수 있습니다. 그리고 생성 시에 원하는 worker의 초기 용량을 지정할 수 있습니다. 애플리케이션을 시작하면 Worker들이 Ready 상태가 되고 언제든지 작업을 실행할 수 있습니다. 미리 초기화 된 Worker들을 필요할 때마다 사용하면 되여 여러 작업들을 동시에 실행할 수 있으며, 초기화된 용량보다 많은 요청에 대해서는 자동으로 필요한 Worker들을 프로비저닝하기 때문에 확장에 대한 고민을 하지 않아도 됩니다.

Amazon EMR Serverless는 각 스테이지에 제출된 Worker만큼만 리소스를 사용하기 때문에, 사용한 리소스만큼만 비용을 지불하면 됩니다. 최소 1분 단위이며 사용한 vCPU, 구성된 총 메모리, 추가로 구성한 임시 스토리지의 요금을 지불하게 됩니다.

Amazon Redshift Serverless

  • Amazon Redshift

Amazon Redshift Serverless 설명하기 전에 Amazon Redshift에 대해서 먼저 설명하겠습니다. Amazon Redshift는 Federated Query(연합 쿼리)를 지원하기 때문에 데이터베이스에 저장된 데이터에 대해서 쿼리를 수행하거나 뷰를 생성할 수 있습니다. 그리고 AWS Glue Data Catalog의 데이터베이스를 참조하여 S3 데이터 레이크에 있는 데이터에 대한 쿼리를 수행할 수 있으며 이렇게 분석한 데이터들은 시각화 대시보드를 통해 확인하거나 ML 및 분석 서비스에 활용할 수 있습니다.

  • Amazon Redshift Serverless

Amazon Redshift Serverless는 운영 효율성과 다양한 데이터와 통합을 서버리스로 제공하는 서비스입니다. 기존 Redshift에서도 클러스터를 구성에 대한 인프라 걱정을 할 필요는 없었지만, 노드 수, 유형 등의 클러스터 크기에 관한 설정은 필요했습니다.

Redshift Serverless는 Redshift 관리형 스토리지, S3 데이터 레이크, DB에 대해 쿼리를 수행하고, 자동으로 컴퓨팅 리소스를 프로비저닝합니다. 클러스터의 생성이나 관리가 필요하지 않기 때문에 데이터웨어하우스 경험이 없거나 비즈니스에 집중하고 싶은 경우에 유용하게 사용할 수 있을 것입니다. 실행한 쿼리에 맞는 컴퓨팅 리소스가 할당되며 일관성 있는 높은 성능을 제공하기 때문에 워크로드를 예측할 수 없는 경우에도 유용하게 사용할 수 있습니다.

그리고 분석이 끝난 데이터들은 서버리스 엔드포인트를 통해서 실시간으로 안전하게 공유가 가능함. 서로 다른 AWS 계정, Provisioned Cluster, 서로 다른 리전에서 데이터를 공유할 수 있습니다.

Amazon Redshift Serverless는 컴퓨팅과 스토리지가 분리되어 과금됩니다. RPU(Redshift Processing Unit)라는 단위를 사용하여 초당 사용한 RPU에 대한 비용이 청구되게 됩니다. RPU를 사용하여 최대 처리량과 최대 사용량을 제한하여 성능이나 비용을 제어하는 것도 가능합니다.

최종 아키텍처

문제를 해결한 김대리의 최종 아키텍처입니다. 다양한 분석 도구를 사용하고, 관리 운영 및 효율성 문제를 해결하기 위해 S3,  Amazon Redshift Serverless, Amazon EMR Serverless를 채택하였습니다.

감상

Amazon Redshift Serverless와 Amazon EMR Serverless를 활용한 아키텍처에 대해 살펴 보고 각 서비스들을 공부할 수 있는 좋은 기회였습니다. 본 블로그에는 작성하지 않았지만 실제 세션에서는 데모도 진행되었기 때문에 많은 도움이 되었던 세션이라고 생각합니다.