[reinvent 2024] 서버리스 분석을 활용하여 고성능 데이터 솔루션을 구축

Summary

데이터 전문가들은 빠르게 확장 및 비용 효율적이고 다양한 데이터 사용자들의 요구를 지원할 수 있는 솔루션을 구축하는 데 어려움을 겪고 있습니다. 이 세션에서는  AWS의 서버리스 분석 서비스가 이벤트 기반 데이터 파이프라인과 마이크로서비스 아키텍처를 신속하게 구축하는 방법을 통해 어떻게 더 빠르고 쉽게 현대적인 데이터 전략을 실행하도록 돕는지 알아봅니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Build highly performant data solutions with serverless analytics
  • Date: 2024년 12월 2일(월)
  • Venue: Mandalay Bay
  • Speaker:
  • Scott Rigney(Senior Product Manager, Amazon Web Services)
  • Sandipan Bhaumik(Sr. Analytics SA, Amazon Web Services)
  • Industry: –

들어가며

이번 칼럼에서는 다룰 세션은 데이터 시스템을 설계할 때 성능 최적화를 위한 모델과 실제사례를 통해 설계 시 고려할 요소들을 소개하는 세션입니다.

데이터를 다룰 때 빼놓을 수 없는 성능최적화에 대해 고민해볼 기회를 가지며 그동안 활용하지 않았던 AWS 서비스 및 기능이 있는지 인사이트를 얻기위해 해당 세션을 신청하게 되었습니다.

높은 성능을 위한 디자인

어떻게 하면 고성능 데이터 시스템을 구축할 수 있을까요?
이번 세션에서는 오각형 모델을 활용해 고성능 시스템을 설계하는 기준을 제시하고 있는데요. 효율적이고 안정적인 시스템을 설계하려면 지연 시간, 확장성, 효율성, 신뢰성, 비용이라는 다섯 가지 핵심 요소를 균형 있게 고려해야 한다고 합니다. 아래에 핵심 요소들에 대해 정리해보았습니다.

  1. 지연 시간
    데이터를 얼마나 빠르게 처리하고 전달할 수 있는지를 나타냅니다.
    짧은 지연 시간은 실시간 처리와 사용자 만족도를 높이는 데 필수적입니다.

  2. 확장성
    시스템이 증가하는 데이터와 트래픽을 안정적으로 처리할 수 있는 능력입니다.
    수평 확장 및 자동 확장 기능은 확장성을 강화하는 핵심 요소입니다.

  3. 효율성
    자원을 최대한 활용하면서도 비용을 절감할 수 있는 능력입니다.
    CPU, 메모리, 스토리지를 효율적으로 관리해 불필요한 낭비를 줄이는 것이 중요합니다.

  4. 신뢰성
    시스템이 장애 상황에서도 안정적으로 작동하도록 설계된 능력입니다.
    데이터 복제, 백업, 장애 복구 전략 등을 통해 서비스 중단을 최소화해야 합니다.

  5. 비용
    성능을 유지하면서도 최적의 비용으로 시스템을 설계할 수 있는지에 대한 부분입니다.

실제 사례 및 대응 패턴 1

다음으로는 실제 사례와 대응 패턴들에 대해 살펴보겠습니다.

첫 번째 사례에서는 수백 수천 개의 쿼리, 복잡한 조인을 실행하는 사용자, 짧은 쿼리, 대화형 쿼리 등 낮은 대기 시간을 기대하는 사용자 등이 있습니다. 다양한 쿼리 패턴에 대응하기 위해 한 개의 서비스로 모든 걸 대응할 수는 없기 때문에 쿼리가 수행될 때 피크치에 주목해야 하고 어떻게 관리할 지에 대해 주목해야한다고 합니다.

높은 동시성 부하를 처리하기 위한 효과적인 솔루션 중 한 패턴을 소개하고 있는데요.

이 예시에서는 사용자로부터 쿼리 워크로드가 들어오면, 쿼리 계획을 수립하고 이를 실행할 최적의 위치를 결정하는 방식을 소개하고 있습니다. Redshift는 복잡한 쿼리와 낮은 지연 시간 요구사항을 충족하도록 설계되어 있으며, 특히 여러 테이블을 조인하거나 대량의 데이터를 스캔하는 작업에 강점을 보입니다. 반면, Athena는 대화형 Ad-hoc 쿼리를 실행할 때 적합한 선택지로 소개하고 있습니다. 두 서비스 모두 부하에 따라 유연하게 스케일 업다운이 가능하다는 장점이 있습니다.

스토리지 시스템으로는 S3를 활용할 수 있는데 S3는 데이터 레이크를 구축하기에 적합한 객체 스토리지로, 여기에 Apache Iceberg 같은 오픈 테이블 포맷을 결합하면 더 강력한 데이터 관리가 가능해집니다. 또한  Iceberg를 활용하면 데이터 레이크에서 데이터 처리뿐 아니라 증분 업데이트와 삭제 같은 작업도 쉽게 수행할 수 있습니다.

또한, 메타데이터 관리를 위해 AWS Glue와 통합하면, 데이터 카탈로그를 통해 모든 시스템을 중앙에서 연결하고 효율적으로 관리할 수 있습니다.

서비스 기능 및 신기능 소개

위에 제시한 서비스들에서 쿼리 수행시간을 줄이기 위한 여러 기능들을 살펴보겠습니다.

  • Redshift 서버리스의  Auto MV 기능은 부하를 모니터링해서 자주 접근하는 테이블을 구체화된 뷰로 만들 시점을 결정하고 이후 쿼리 성능을 가속화하는 것입니다.
  • Athena의  Auto join 재정렬 기능은 쿼리 정확성에 영향을 주지 않으면서 쿼리 성능을 가속화할 수 있다고 판단되면 쿼리 계획에서 조인의 순서를 변경하는 것입니다.
  • Redshift 서버리스의 새로운 기능으로는 쿼리 식별자가 있습니다. 쿼리나 워크로드에 태그를 지정하고, 시간에 따라 성능을 모니터링할 수 있는 기능을 제공합니다. 세션 재사용 기능은 Redshift 서버리스 세션을 빠르게 연결하고 끊고 재개할 수 있는 기능을 제공합니다.
  • Athena의 새로운 기능으로는 Pass-through 쿼리가 있습니다. 전체 쿼리 작업을 소스로 전달하여 소스에서 데이터를 직접 읽을 수 있는 기능을 제공합니다.

실제 사례 및 대응 패턴 2

두 번째 사례인 Real-time intelligence에서는 이벤트가 발생하는 즉시 즉각적으로 반응해야 한다고 합니다. 이 과정은 연속적인 데이터 처리를 의미하며 이를 처리할 수 있는 지능형 시스템이 필요합니다. 예를 들어, 사기 방지 시스템에서는 사전에 훈련된 머신러닝 모델이 있을 수 있지만, 그 모델은 변화하는 데이터 패턴에 적응하여 새로운 사기 패턴을 식별할 수 있어야 합니다.

실시간으로 이벤트에 반응하고, 대규모 데이터를 처리할 수 있는 이벤트 기반 스트리밍 파이프라인 패턴의 예 입니다.

금융거래 시스템을 예로들면 다음과 같습니다.

  • API Gateway → Lambda → MSK(Amazon Managed Kafka) → Apache Flink 로 데이터의 흐름을 처리합니다.
  • Apache Flink는 스트리밍 데이터를 처리하며, 비동기 호출을 통해 SageMaker 머신러닝 모델과 같은 지능형 시스템에 데이터를 전달합니다.
  • Flink는 요청 페이로드를 사용해 머신러닝 모델에 데이터를 보내고, 모델은 “이 이벤트는 사기로 보입니다”와 같은 결과를 Flink로 다시 보냅니다.
  • 이후 데이터는 다른 참조 데이터와 조인해서 활용하거나 MSK를 이용해 다양한 consumer시스템에 전달할 수 있습니다.(SNS 알람 발생, opensearch 실시간 대시보드, glue-s3를 활용한 배치분석) 이러한 서비스들을 통합해서 단일 시스템, 단일 파이프라인으로 관리할 수 있습니다.

위 사례에서 사용된 OpenSearch 서버리스 기능들에 대해 살펴보겠습니다. Zero ETL 및 스트리밍 통합 기능을 통해 S3, DocumentDB, Amazon MSK와 같은 서비스와 통합할 수 있으며, 데이터 유입 후 낮은 지연 시간으로 인덱싱과 쿼리를 지원합니다. 또한, 스마트 캐싱 기능은 자주 사용되는 데이터만 캐시에 저장하여 OCU 소비량을 줄여 비용 효율적으로 사용할 수 있게 도와줍니다. 올해 추가된 Expanded capacity와 autoscaling 기능은 더 큰 데이터 세트를 처리할 수 있도록 워크로드를 확장하는 데 도움을 줍니다. 이를 위해 OCU 용량을 200에서 500 OCU로 확장했습니다.

다음으로 Glue 의 새로운 기능을 살펴보겠습니다.

Usage profiles 는 최대 워커 수와 타임아웃 설정으로 성능과 비용을 제어 가능하고 Job run queues 는 개발자가 작업을 Glue 로 보내면 Glue가 대기열을 관리할 수 있습니다. 

또한 서비스 할당량 초과로 작업이 실패할 경우 Glue가 job을 대기열에 추가하고 FIFO 방식으로 작업을 실행합니다.

서버리스 성능최적화

 마지막으로 성능 최적화에 대해 알아보겠습니다.

보안, 확장성, 가용성, 인프라 관리, 패치 작업을 AWS 가 대신하기 때문에 서버리스 서비스를 사용하면 사용자는 부담을 덜 수 있습니다.

성능 최적화 측면에서는 사용자가 특정 작업에 적합한 서비스를 선택하는 것이 중요합니다. AWS Trusted Advisor와 AWS Well-Architected Framework를 활용하여 지속적으로 워크로드를 점검하고, 6개월마다 리뷰를 실행하여 시스템을 최신 상태로 유지하는 것이 권장됩니다. 또한, 모니터링을 통해 지속적인 개선 작업을 진행하는 것도 필수적입니다.

마지막으로, Trade-offs에 대해 생각해볼 필요가 있습니다. 시스템을 더욱 효율적이고 고성능으로 만들기 위해서는 앞서 설명한 성능 디자인 오각형 모델을 활용하여 여러 요소 간의 절충점을 고려해야 합니다.

결론

이번 세션에서는 고성능 데이터 시스템의 기준을 제시하고, 이를 충족하기 위한 사례와 아키텍처를 다루는 한편, 서버리스 서비스의 새로운 기능들을 소개했습니다.

세션을 통해 다양한 쿼리 패턴에 대응할 수 있는 효율적인 아키텍처를 확인할 수 있었으며, 성능 관점에서 서버리스 서비스를 더욱 효과적으로 활용할 방법에 대한 인사이트를 얻을 수 있는 시간이었습니다.

또한, 데이터 분석 및 처리 서비스의 최신 기능에 대한 정보를 접하고, 성능 오각형 모델을 참고하여 더 효율적인 데이터 파이프라인을 설계할 아이디어를 얻을 수 있었습니다. 이를 업무에 적용해 서버리스 서비스들을 한층 더 효과적으로 사용할 수 있을 것으로 기대됩니다.

글 │메가존클라우드, Cloud Technology Center(CTC), Cloud Data SA 팀, 이민정 SA
게시물 주소가 복사되었습니다.