제퍼넷 로고

Amazon Kinesis Data Streams를 사용한 실시간 분석을 위한 아키텍처 패턴, 1부 | 아마존 웹 서비스

시간

우리는 지연 시간이 짧은 데이터 스트리밍 애플리케이션을 기반으로 실시간 데이터와 통찰력의 시대에 살고 있습니다. 오늘날 모든 사람은 모든 애플리케이션에서 개인화된 경험을 기대하며, 조직은 비즈니스 운영 및 의사 결정 속도를 높이기 위해 끊임없이 혁신하고 있습니다. 새로운 비즈니스와 고객 사용 사례 전반에 걸쳐 다양한 형식의 데이터가 도입되면서 생성되는 시간에 민감한 데이터의 양이 빠르게 증가하고 있습니다. 따라서 조직에서는 실시간 비즈니스 애플리케이션과 더 나은 고객 경험을 제공하기 위해 지연 시간이 짧고 확장 가능하며 안정적인 데이터 스트리밍 인프라를 수용하는 것이 중요합니다.

이것은 광범위한 사용 사례에 대해 Kinesis Data Streams를 사용하여 실시간 데이터 스트리밍 인프라를 구축하는 데 있어 일반적인 아키텍처 패턴을 제공하는 블로그 시리즈의 첫 번째 게시물입니다. AWS 클라우드에서 지연 시간이 짧은 스트리밍 애플리케이션을 생성하기 위한 프레임워크를 제공하는 것을 목표로 합니다. Amazon Kinesis 데이터 스트림AWS에서 특별히 구축한 데이터 분석 서비스.

이 게시물에서는 시계열 데이터 분석과 이벤트 기반 마이크로서비스라는 두 가지 사용 사례의 일반적인 아키텍처 패턴을 검토합니다. 시리즈의 후속 게시물에서는 실시간 BI 대시보드, 컨택 센터 에이전트, 원장 데이터, 개인화된 실시간 추천, 로그 분석, IoT 데이터, 변경 데이터 캡처 및 실제 데이터를 위한 스트리밍 파이프라인 구축의 아키텍처 패턴을 살펴보겠습니다. -시간 마케팅 데이터. 이러한 모든 아키텍처 패턴은 Amazon Kinesis Data Streams와 통합됩니다.

Kinesis Data Streams를 사용한 실시간 스트리밍

Amazon Kinesis Data Streams는 규모에 관계없이 실시간 데이터를 쉽게 캡처, 처리 및 저장할 수 있게 해주는 클라우드 기반 서버리스 스트리밍 데이터 서비스입니다. Kinesis Data Streams를 사용하면 수십만 개의 소스에서 초당 수백 기가바이트의 데이터를 수집하고 처리할 수 있으므로 실시간으로 정보를 처리하는 애플리케이션을 쉽게 작성할 수 있습니다. 수집된 데이터는 실시간 대시보드, 실시간 이상 탐지, 동적 가격 책정 등 실시간 분석 사용 사례를 지원하기 위해 밀리초 단위로 제공됩니다. 기본적으로 Kinesis Data Stream 내의 데이터는 24시간 동안 저장되며 데이터 보존 기간을 365일로 늘리는 옵션도 있습니다. 고객이 여러 애플리케이션을 사용하여 동일한 데이터를 실시간으로 처리하려는 경우 EFO(Enhanced Fan-Out) 기능을 사용할 수 있습니다. 이 기능 이전에는 스트림의 데이터를 소비하는 모든 애플리케이션이 2MB/초/샤드 출력을 공유했습니다. 향상된 팬아웃을 사용하도록 스트림 소비자를 구성하면 각 데이터 소비자는 샤드당 읽기 처리량의 전용 2MB/초 파이프를 수신하여 데이터 검색 대기 시간을 더욱 줄일 수 있습니다.

고가용성과 내구성을 위해 Kinesis Data Streams는 AWS 리전의 365개 가용 영역에 걸쳐 스트리밍된 데이터를 동기식으로 복제하여 높은 내구성을 달성하고 최대 XNUMX일 동안 데이터를 보관할 수 있는 옵션을 제공합니다. 보안을 위해 Kinesis Data Streams는 서버 측 암호화를 제공하므로 저장 데이터와 Amazon Virtual Private Cloud(VPC) 인터페이스 엔드포인트를 암호화하여 Amazon VPC와 Kinesis Data Streams 간의 트래픽을 비공개로 유지함으로써 엄격한 데이터 관리 요구 사항을 충족할 수 있습니다.

Kinesis Data Streams는 다음과 같은 다른 AWS 서비스와 기본적으로 통합되어 있습니다. AWS 접착제아마존 이벤트 브리지 AWS에서 실시간 스트리밍 애플리케이션을 구축합니다. 자세한 내용은 Amazon Kinesis Data Streams 통합을 참조하십시오.

Kinesis Data Streams를 사용한 최신 데이터 스트리밍 아키텍처

Kinesis Data Streams를 사용하는 최신 스트리밍 데이터 아키텍처는 5개 논리 계층의 스택으로 설계될 수 있습니다. 각 계층은 다음 다이어그램에 설명된 것처럼 특정 요구 사항을 해결하기 위해 특별히 제작된 여러 구성 요소로 구성됩니다.

아키텍처는 다음과 같은 주요 구성 요소로 구성됩니다.

  • 스트리밍 소스 – 스트리밍 데이터 소스에는 클릭스트림 데이터, 센서, 소셜 미디어, 사물 인터넷(IoT) 장치, 웹 및 모바일 애플리케이션을 사용하여 생성된 로그 파일, 반정형 및 비정형 데이터를 연속 스트림으로 생성하는 모바일 장치와 같은 데이터 소스가 포함됩니다. 빠른 속도로.
  • 스트림 수집 – 스트림 수집 계층은 데이터를 스트림 저장 계층으로 수집하는 역할을 담당합니다. 수만 개의 데이터 소스에서 데이터를 수집하고 실시간으로 수집하는 기능을 제공합니다. 당신은 사용할 수 있습니다 키네시스 SDK API를 통해 스트리밍 데이터를 수집하기 위해 Kinesis 생산자 라이브러리 고성능 및 장기 실행 스트리밍 프로듀서 구축을 위한 Kinesis 에이전트 파일 세트를 수집하여 Kinesis Data Streams로 수집합니다. 또한 다음과 같은 다양한 사전 빌드 통합을 사용할 수 있습니다. AWS 데이터베이스 마이그레이션 서비스(AWS DMS), 아마존 DynamoDBAWS IoT 코어 코드 없는 방식으로 데이터를 수집합니다. Apache Spark 및 Apache Kafka Connect와 같은 타사 플랫폼에서 데이터를 수집할 수도 있습니다.
  • 스트림 저장 – Kinesis Data Streams는 데이터 처리량을 지원하기 위해 온디맨드 모드와 프로비저닝 모드라는 두 가지 모드를 제공합니다. 이제 기본 선택인 온디맨드 모드는 가변적인 처리량을 흡수하도록 탄력적으로 확장할 수 있으므로 고객은 용량 관리에 대해 걱정하고 데이터 처리량에 따라 비용을 지불할 필요가 없습니다. 온디맨드 모드는 데이터 수집의 예상치 못한 급증에 대비해 충분한 용량을 제공하기 위해 과거 최대 데이터 수집보다 스트림 용량을 2배 자동으로 확장합니다. 또는 스트림 리소스에 대한 세부적인 제어를 원하는 고객은 프로비저닝 모드를 사용하고 처리량 요구 사항에 맞게 샤드 수를 사전에 확장 및 축소할 수 있습니다. 또한 Kinesis Data Streams는 기본적으로 최대 24시간까지 스트리밍 데이터를 저장할 수 있지만 사용 사례에 따라 7일 또는 365일까지 연장될 수 있습니다. 여러 애플리케이션이 동일한 스트림을 사용할 수 있습니다.
  • 스트림 처리 – 스트림 처리 계층은 데이터 검증, 정리, 정규화, 변환 및 강화를 통해 데이터를 소비 가능한 상태로 변환하는 일을 담당합니다. 스트리밍 레코드는 생성된 순서대로 읽혀 실시간 분석, 이벤트 기반 애플리케이션 구축 또는 스트리밍 ETL(추출, 변환 및 로드)이 가능합니다. 당신이 사용할 수있는 Apache Flink용 Amazon 관리형 서비스 복잡한 스트림 데이터 처리를 위해 AWS 람다 무상태 스트림 데이터 처리를 위해 AWS 접착제 & 아마존 EMR 거의 실시간 컴퓨팅을 위해. 다음을 사용하여 맞춤형 소비자 애플리케이션을 구축할 수도 있습니다. Kinesis 소비자 라이브러리, 이는 분산 컴퓨팅과 관련된 많은 복잡한 작업을 처리합니다.
  • 목적지 - 대상 레이어는 사용 사례에 따라 특별히 제작된 대상과 같습니다. 데이터를 직접 스트리밍할 수 있습니다. 아마존 레드 시프트 데이터 웨어하우징용, Amazon EventBridge용으로 이벤트 기반 애플리케이션 구축용입니다. 당신은 또한 사용할 수 있습니다 아마존 키네 시스 데이터 파이어 호스 AWS Lambda를 사용하여 가벼운 스트리밍 처리를 수행한 다음 처리된 스트리밍을 다음과 같은 대상으로 전달할 수 있는 스트리밍 통합의 경우 아마존 S3 데이터 레이크, 운영 분석을 위한 OpenSearch 서비스, Redshift 데이터 웨어하우스, Amazon DynamoDB와 같은 No-SQL 데이터베이스 및 관계형 데이터베이스 아마존 RDS 비즈니스 애플리케이션에 실시간 스트림을 사용합니다. 대상은 실시간 대시보드, 처리된 스트리밍 데이터를 기반으로 한 자동 결정, 실시간 변경 등을 위한 이벤트 기반 애플리케이션일 수 있습니다.

시계열에 대한 실시간 분석 아키텍처

시계열 데이터는 시간에 따라 변화하는 이벤트를 측정하기 위해 시간 간격에 따라 기록된 일련의 데이터 포인트입니다. 시간 경과에 따른 주가, 웹페이지 클릭 스트림, 시간 경과에 따른 장치 로그 등을 예로 들 수 있습니다. 고객은 시계열 데이터를 사용하여 시간 경과에 따른 변화를 모니터링함으로써 이상 현상을 감지하고, 패턴을 식별하고, 시간이 지남에 따라 특정 변수가 어떻게 영향을 받는지 분석할 수 있습니다. 시계열 데이터는 일반적으로 여러 소스에서 대용량으로 생성되며 거의 실시간으로 비용 효율적으로 수집되어야 합니다.

일반적으로 고객이 시계열 데이터 처리에서 달성하고자 하는 세 가지 주요 목표는 다음과 같습니다.

  • 시스템 성능에 대한 실시간 통찰력을 얻고 이상 현상을 감지합니다.
  • 최종 사용자 행동을 이해하여 추세를 추적하고 이러한 통찰력을 바탕으로 시각화를 쿼리/구축합니다.
  • 보관 데이터와 자주 액세스하는 데이터를 모두 수집하고 저장할 수 있는 내구성 있는 스토리지 솔루션을 갖추세요.

Kinesis Data Streams를 사용하면 고객은 정리, 강화, 저장, 분석 및 시각화를 위해 수천 개의 소스에서 테라바이트 규모의 시계열 데이터를 지속적으로 캡처할 수 있습니다.

다음 아키텍처 패턴은 Kinesis Data Streams를 사용하여 시계열 데이터에 대한 실시간 분석을 달성할 수 있는 방법을 보여줍니다.

시계열 데이터를 위한 서버리스 스트리밍 데이터 파이프라인 구축

워크플로 단계는 다음과 같습니다.

  1. 데이터 수집 및 저장 – Kinesis Data Streams는 수천 개의 소스에서 테라바이트 규모의 데이터를 지속적으로 캡처하고 저장할 수 있습니다.
  2. 스트림 처리 – 다음을 사용하여 만든 애플리케이션 Apache Flink용 Amazon 관리형 서비스 데이터 스트림에서 레코드를 읽어 시계열 데이터의 오류를 감지 및 정리하고 특정 메타데이터로 데이터를 강화하여 운영 분석을 최적화할 수 있습니다. 중간에 데이터 스트림을 사용하면 시계열 데이터를 다른 프로세스 및 솔루션에서 동시에 사용할 수 있는 이점이 있습니다. 그러면 Lambda 함수가 이러한 이벤트와 함께 호출되어 메모리에서 시계열 계산을 수행할 수 있습니다.
  3. 목적지 – 정리 및 강화 후 처리된 시계열 데이터를 다음으로 스트리밍할 수 있습니다. 아마존 타임 스트림 실시간 대시보드 작성 및 분석을 위한 데이터베이스 또는 최종 사용자 쿼리를 위해 DynamoDB와 같은 데이터베이스에 저장됩니다. 원시 데이터는 보관을 위해 Amazon S3로 스트리밍될 수 있습니다.
  4. 시각화 및 통찰력 확보 – 고객은 다음을 사용하여 경고를 쿼리, 시각화 및 생성할 수 있습니다. Grafana용 Amazon 관리형 서비스. Grafana는 시계열 데이터의 스토리지 백엔드인 데이터 소스를 지원합니다. Timestream에서 데이터에 액세스하려면 Grafana용 Timestream 플러그인을 설치해야 합니다. 최종 사용자는 다음을 사용하여 DynamoDB 테이블에서 데이터를 쿼리할 수 있습니다. 아마존 API 게이트웨이 대리인 역할을 합니다.

인용하다 Amazon Kinesis, Amazon Timestream 및 Grafana를 사용한 거의 실시간 처리 장치 원격 측정 IoT 데이터를 처리하고 Amazon Timestream과 같은 시계열 최적화 데이터 저장소에 저장하는 서버리스 스트리밍 파이프라인을 선보입니다.

이벤트 소싱 마이크로서비스를 위한 실시간 데이터 강화 및 재생

마이크로서비스는 소프트웨어가 잘 정의된 API를 통해 통신하는 소규모 독립 서비스로 구성되는 소프트웨어 개발에 대한 아키텍처 및 조직적 접근 방식입니다. 이벤트 기반 마이크로서비스를 구축할 때 고객은 1. 들어오는 이벤트의 양을 처리할 수 있는 높은 확장성과 2. 이벤트 처리의 안정성을 달성하고 오류가 발생하더라도 시스템 기능을 유지하기를 원합니다.

고객은 마이크로서비스 아키텍처 패턴을 활용하여 애플리케이션을 더 쉽게 확장하고 더 빠르게 개발할 수 있으므로 혁신을 가속화하고 새로운 기능에 대한 출시 기간을 단축합니다. 그러나 다른 마이크로서비스에 대한 네트워크 호출에서 데이터를 강화하고 재생하는 것은 애플리케이션의 안정성에 영향을 미치고 오류 디버깅 및 추적을 어렵게 만들 수 있기 때문에 어렵습니다. 이 문제를 해결하기 위해 이벤트 소싱은 강화 및 재생을 위해 모든 상태 변경에 대한 기록 기록을 중앙 집중화하고 쓰기 워크로드에서 읽기를 분리하는 효과적인 디자인 패턴입니다. 고객은 이벤트 소싱 마이크로서비스를 위한 중앙 집중식 이벤트 저장소로 Kinesis Data Streams를 사용할 수 있습니다. KDS는 높은 확장성과 거의 실시간에 대한 요구 사항을 충족하기 위해 스트림당 초당 기가바이트의 데이터 처리량을 처리하고 밀리초 단위로 데이터를 스트리밍할 수 있기 때문입니다. 대기 시간, 1/ 마이크로 서비스에서 완전히 분리되는 동안 데이터 강화 및 달성을 위해 Flink 및 S2와 통합하고 3/ KDS가 기본값인 3시간 동안 데이터 레코드를 유지하므로 나중에 재시도 및 비동기 읽기를 허용하고 선택적으로 최대 24일.

다음 아키텍처 패턴은 이벤트 소싱 마이크로서비스에 Kinesis Data Streams를 사용하는 방법을 보여주는 일반적인 그림입니다.

워크플로의 단계는 다음과 같습니다.

  1. 데이터 수집 및 저장 – 마이크로서비스의 입력을 저장을 위해 Kinesis Data Streams로 집계할 수 있습니다.
  2. 스트림 처리 - Apache Flink 상태 저장 함수 분산 상태 저장 이벤트 기반 애플리케이션 구축을 단순화합니다. 입력 Kinesis 데이터 스트림에서 이벤트를 수신하고 결과 스트림을 출력 데이터 스트림으로 라우팅할 수 있습니다. 애플리케이션 비즈니스 로직을 기반으로 Apache Flink를 사용하여 상태 저장 기능 클러스터를 생성할 수 있습니다.
  3. Amazon S3의 상태 스냅샷 – 추적을 위해 상태 스냅샷을 Amazon S3에 저장할 수 있습니다.
  4. 출력 스트림 – 출력 스트림은 API Gateway를 통해 HTTP/gRPC 프로토콜을 통해 Lambda 원격 기능을 통해 소비될 수 있습니다.
  5. Lambda 원격 기능 – Lambda 기능은 다양한 애플리케이션 및 비즈니스 로직에 대한 마이크로서비스 역할을 하여 비즈니스 애플리케이션과 모바일 앱을 제공할 수 있습니다.

다른 고객이 Kinesis Data Streams를 사용하여 이벤트 기반 마이크로서비스를 구축한 방법을 알아보려면 다음을 참조하십시오.

주요 고려사항 및 모범 사례

다음은 명심해야 할 고려 사항과 모범 사례입니다.

  • 데이터 검색은 최신 데이터 스트리밍 애플리케이션을 구축하는 첫 번째 단계여야 합니다. 원하는 비즈니스 결과를 달성하려면 비즈니스 가치를 정의한 다음 스트리밍 데이터 소스와 사용자 페르소나를 식별해야 합니다.
  • 스트리밍 데이터 소스를 기반으로 스트리밍 데이터 수집 도구를 선택하세요. 예를 들어 다음을 사용할 수 있습니다. 키네시스 SDK API를 통해 스트리밍 데이터를 수집하기 위해 Kinesis 생산자 라이브러리 고성능 및 장기 실행 스트리밍 프로듀서 구축을 위한 Kinesis 에이전트 파일 세트를 수집하고 이를 Kinesis Data Streams로 수집하기 위해 AWS DMS CDC 스트리밍 사용 사례의 경우 AWS IoT 코어 IoT 디바이스 데이터를 Kinesis Data Streams로 수집하기 위한 것입니다. 스트리밍 데이터를 Amazon Redshift로 직접 수집하여 지연 시간이 짧은 스트리밍 애플리케이션을 구축할 수 있습니다. Apache Spark 및 Apache Kafka와 같은 타사 라이브러리를 사용하여 스트리밍 데이터를 Kinesis Data Streams로 수집할 수도 있습니다.
  • 특정 사용 사례와 비즈니스 요구 사항에 따라 스트리밍 데이터 처리 서비스를 선택해야 합니다. 예를 들어, 여러 스트리밍 대상과 복잡한 상태 저장 스트림 처리가 포함된 고급 스트리밍 사용 사례를 위해 또는 실시간(예: 매시간)으로 비즈니스 지표를 모니터링하려는 경우 Apache Flink용 Amazon Kinesis Managed Service를 사용할 수 있습니다. Lambda는 이벤트 기반 및 상태 비저장 처리에 적합합니다. 당신이 사용할 수있는 아마존 EMR 스트리밍 데이터 처리를 위해 선호하는 오픈 소스 빅 데이터 프레임워크를 사용하세요. AWS Glue는 스트리밍 ETL과 같은 사용 사례에 대한 거의 실시간 스트리밍 데이터 처리에 적합합니다.
  • Kinesis Data Streams 온디맨드 모드는 사용량에 따라 비용을 청구하고 리소스 용량을 자동으로 확장하므로 급증하는 스트리밍 워크로드 및 핸즈프리 유지 관리에 적합합니다. 프로비저닝 모드는 용량별로 비용이 청구되며 사전 용량 관리가 필요하므로 예측 가능한 스트리밍 워크로드에 적합합니다.
  • 당신은을 사용할 수 있습니다 Kinesis 공유 계산기 프로비저닝 모드에 필요한 샤드 수를 계산합니다. 온디맨드 모드에서는 샤드에 대해 걱정할 필요가 없습니다.
  • 권한을 부여할 때 Kinesis Data Streams 리소스에 대해 누가 어떤 권한을 받을지 결정합니다. 해당 리소스에 대해 허용하려는 특정 작업을 활성화합니다. 따라서 작업을 수행하는 데 필요한 권한만 부여해야 합니다. KMS 고객 관리형 키(CMK)를 사용하여 저장 데이터를 암호화할 수도 있습니다.
  • 여러분의 시간과 재능으로 보존 기간 업데이트 Kinesis Data Streams 콘솔을 통해 또는 증가스트림 보존 기간 그리고 스트림 보존 기간 감소 특정 사용 사례를 기반으로 한 작업.
  • Kinesis Data Streams는 다음을 지원합니다. 리샤딩. 이 함수에 권장되는 API는 다음과 같습니다. 업데이트ShardCount이를 통해 스트림을 통한 데이터 흐름 속도의 변화에 ​​맞게 스트림의 샤드 수를 수정할 수 있습니다. 리샤딩 API(분할 및 병합)는 일반적으로 핫 샤드를 처리하는 데 사용됩니다.

결론

이 게시물에서는 Kinesis Data Streams를 사용하여 지연 시간이 짧은 스트리밍 애플리케이션을 구축하기 위한 다양한 아키텍처 패턴을 보여주었습니다. 이 게시물의 정보를 사용하면 Kinesis Data Streams로 지연 시간이 짧은 스트리밍 애플리케이션을 직접 구축할 수 있습니다.

자세한 아키텍처 패턴은 다음 리소스를 참조하세요.

데이터 비전과 전략을 수립하고 싶다면 다음을 확인하세요. AWS 데이터 기반의 모든 것 (D2E) 프로그램.


저자에 관하여

라가바라오 소다바티나 그는 데이터 분석, AI/ML 및 클라우드 보안에 중점을 두고 있는 AWS의 수석 솔루션 아키텍트입니다. 그는 고객과 협력하여 고객 비즈니스 문제를 해결하고 AWS 서비스 채택을 가속화하는 혁신적인 솔루션을 만듭니다. 여가 시간에는 Raghavarao가 가족과 함께 책을 읽고 영화를 보는 것을 즐깁니다.

항주오 Amazon Web Services의 Amazon Kinesis Data Streams 팀 선임 제품 관리자입니다. 그는 복잡한 고객 문제를 해결하고 고객이 비즈니스 목표를 달성할 수 있도록 하는 직관적인 제품 경험을 개발하는 데 열정적입니다.

쉐타 라다크리슈난 데이터 분석에 중점을 둔 AWS용 솔루션 아키텍트입니다. 그녀는 클라우드 채택을 촉진하고 조직이 공공 부문 내에서 데이터 기반 의사 결정을 내릴 수 있도록 지원하는 솔루션을 구축해 왔습니다. 직장 밖에서 그녀는 춤추고, 친구 및 가족과 함께 시간을 보내고, 여행하는 것을 좋아합니다.

브리트니 리 AWS의 솔루션스 아키텍트입니다. 그녀는 기업 고객의 클라우드 채택 및 현대화 여정을 돕는 데 중점을 두고 있으며 보안 및 분석 분야에 관심이 있습니다. 직장 밖에서 그녀는 개와 함께 시간을 보내고 피클볼을 하는 것을 좋아합니다.

spot_img

최신 인텔리전스

spot_img