시나리오 4: 디바이스 센서 실시간 이상 탐지 및 알림 - Amazon Kinesis를 사용한 AWS 기반 스트리밍 데이터 솔루션

시나리오 4: 디바이스 센서 실시간 이상 탐지 및 알림

ABC4Logistics는 가솔린, 액체 프로판(LPG), 나프타와 같은 인화성이 높은 석유 제품을 항구에서 여러 도시로 운송하는 회사입니다. 이 회사는 위치, 엔진 온도, 컨테이너 내부 온도, 주행 속도, 주차 위치, 도로 상태 등을 모니터링하기 위해 여러 개의 센서가 설치된 수백 대의 차량을 보유하고 있습니다. ABC4Logistics의 요구 사항 중 하나는 엔진과 컨테이너의 온도를 실시간으로 모니터링하고 이상이 발생할 경우 운전자와 차량 모니터링 팀에 경고하는 것입니다. 이러한 상황을 탐지하고 실시간으로 알림을 생성하기 위해 ABC4Logistics는 AWS를 기반으로 다음 아키텍처를 구현했습니다.

ABC4Logistics의 디바이스 센서 실시간 이상 탐지 및 알림 아키텍처

ABC4Logistics의 디바이스 센서 실시간 이상 탐지 및 알림 아키텍처

디바이스 센서의 데이터는 AWS IoT 게이트웨이에 의해 수집되며, 여기서AWS IoT 규칙 엔진은 스트리밍 데이터를 Amazon Kinesis Data Streams에서 사용할 수 있도록 합니다. ABC4Logistics는 Kinesis Data Analytics를 사용하여 Kinesis Data Streams의 스트리밍 데이터에 대한 실시간 분석을 수행할 수 있습니다.

ABC4Logistics는 Kinesis Data Analytics를 사용하여 센서의 온도 판독값이 10초 동안 정상 판독값에서 벗어나면 이를 탐지하고 레코드를 다른 Kinesis Data Streams 인스턴스에 수집하여 비정상적인 레코드를 식별할 수 있습니다. 그런 다음 Amazon Kinesis Data Streams가 Lambda 함수를 호출하여 Amazon SNS를 통해 운전자와 차량 모니터링 팀에 알림을 보낼 수 있습니다.

또한 Kinesis Data Streams의 데이터가 Amazon Kinesis Data Firehose로 푸시됩니다. Amazon Kinesis Data Firehose는 이 데이터를 Amazon S3에 보관하여 ABC4Logistics가 센서 데이터에 대해 배치 또는 실시간에 가까운 분석을 수행할 수 있도록 합니다. ABC4LogisticsAmazon Athena를 사용하여 S3의 데이터를 쿼리하고 시각화를 위해 Amazon QuickSight를 사용합니다. 장기 데이터 보존을 위해 S3 수명 주기 정책은 Amazon S3 Glacier에 데이터를 아카이브하는 데 사용됩니다.

이 아키텍처의 중요한 구성 요소는 아래에 자세히 설명되어 있습니다.

Amazon Kinesis Data Analytics

Amazon Kinesis Data Analytics를 사용하면 스트리밍 데이터를 변환 및 분석하고 실시간으로 이상 현상에 대응할 수 있습니다. AWS 기반 서버리스 서비스인 Kinesis Data Analytics는 프로비저닝을 처리하고 모든 데이터 처리량을 감당할 수 있도록 인프라를 탄력적으로 조정합니다. 이렇게 하면 스트리밍 인프라를 설정하고 관리하는 획일적인 부담이 모두 사라지고, 스트리밍 애플리케이션을 작성하는 데 더 많은 시간을 할애할 수 있습니다.

Amazon Kinesis Data Analytics를 사용하면 표준 SQL과 Java, Python 및 Scala의 Apache Flink 애플리케이션 등 다양한 옵션을 사용하여 스트리밍 데이터를 대화식으로 쿼리하고 Java로 Apache Beam 애플리케이션을 구축하여 데이터 스트림을 분석할 수 있습니다.

이러한 옵션은 스트리밍 애플리케이션 및 소스/대상 지원의 복잡성 수준에 따라 특정 접근 방식을 유연하게 사용할 수 있도록 합니다. 다음 단원에서는 Flink 애플리케이션용 Kinesis Data Analytics 옵션에 대해 설명합니다.

Apache Flink무제한 및 제한된 데이터 스트림의 상태 유지 계산을 위한 인기 있는 오픈 소스 프레임워크 및 분산 처리 엔진입니다. Apache Flink는 정확히 하나의 의미 체계를 지원하여 인 메모리 속도와 대규모로 계산을 수행하도록 설계되었습니다. Apache Flink를 기반으로 하는 애플리케이션은 내결함성 방식으로 높은 처리량으로 짧은 대기 시간을 달성할 수 있도록 지원합니다.

Apache Flink용 Amazon Kinesis Data Analytics를 사용하면 복잡한 분산 Apache Flink 환경을 관리하지 않고도 스트리밍 소스에 대해 코드를 작성 및 실행하여 시계열 분석을 수행하고, 실시간 대시보드를 제공하며, 실시간 지표를 생성할 수 있습니다. Flink 인프라를 직접 호스팅할 때와 동일한 방식으로 높은 수준의 Flink 프로그래밍 기능을 사용할 수 있습니다.

Apache Flink용 Kinesis Data Analytics를 사용하면 Java, Scala, Python 또는 SQL로 애플리케이션을 생성하여 스트리밍 데이터를 처리하고 분석할 수 있습니다. 일반적인 Flink 애플리케이션은 입력 스트림이나 데이터 위치 또는 소스에서 데이터를 읽고, 연산자 또는 함수를 사용하여 데이터를 변환/필터링하거나 결합하며, 출력 스트림이나 데이터 위치 또는 싱크에 데이터를 저장합니다.

다음 아키텍처 다이어그램은 Kinesis Data Analytics Flink 애플리케이션에 지원되는 소스 및 싱크 중 일부를 보여 줍니다. 소스/싱크에 대해 미리 번들로 제공되는 커넥터 외에도 Kinesis Data Analytics의 Flink 애플리케이션을 위한 다양한 기타 소스/싱크로 사용자 정의 커넥터를 가져올 수도 있습니다.

실시간 스트림 처리를 위한 Kinesis Data Analytics의 Apache Flink 애플리케이션

실시간 스트림 처리를 위한 Kinesis Data Analytics의 Apache Flink 애플리케이션

개발자는 선호하는 IDE를 사용하여 Flink 애플리케이션을 개발하고 AWS Management Console 또는 DevOps 도구에서 Kinesis Data Analytics에 배포할 수 있습니다.

Amazon Kinesis Data Analytics Studio

Kinesis Data Analytics 서비스의 일부인 Kinesis Data Analytics Studio를 사용하면 고객이 실시간으로 데이터 스트림을 대화식으로 쿼리하고 SQL, Python 및 Scala를 사용하여 스트림 처리 애플리케이션을 쉽게 구축 및 실행할 수 있습니다. Studio 노트북은 Apache Zeppelin으로 구동됩니다.

Studio 노트북을 사용하면 노트북 환경에서 Flink 애플리케이션 코드를 개발하고, 코드 결과를 실시간으로 확인하며, 노트북 내에서 시각화할 수 있습니다. Kinesis Data Streams 및 Amazon MSK 콘솔에서 클릭 한 번으로 Apache Zeppelin 및 Apache Flink로 구동되는 Studio 노트북을 생성하거나 Kinesis Data Analytics 콘솔에서 실행할 수 있습니다.

Kinesis Data Analytics Studio의 일부로 반복적으로 코드를 개발하면 노트북을 Kinesis Data Analytics 애플리케이션으로 배포하여 스트리밍 모드에서 지속적으로 실행하고, 소스에서 데이터를 읽고, 대상에 쓰고, 장기 실행 애플리케이션의 상태를 유지 관리하며, 소스 스트림의 처리량에 따라 크기 조정이 자동으로 수행됩니다. 이전에는 고객이 AWS에서 실시간 스트리밍 데이터를 대화식으로 분석하기 위해 SQL 애플리케이션용 Kinesis Data Analytics를 사용했습니다.

SQL 애플리케이션용 Kinesis Data Analytics도 계속 사용할 수 있지만 새 프로젝트의 경우 새로운 Kinesis Data Analytics Studio를 사용하는 것이 좋습니다. Kinesis Data Analytics Studio에서는 고급 분석 기능을 손쉽게 사용하여 정교한 스트림 처리 애플리케이션을 몇 분 안에 구축할 수 있습니다.

Kinesis Data Analytics Flink 애플리케이션의 내결함성을 설정하려면 Implementing Fault Tolerance in Kinesis Data Analytics for Apache Flink(Apache Flink용 Kinesis Data Analytics에서 내결함성 구현)에 설명된 대로 체크포인트 및 스냅샷을 사용하면 됩니다.

Kinesis Data Analytics Flink 애플리케이션은 데이터 처리, 체크포인트 기능 및 데이터 원본(예: Kinesis Data Streams, Kinesis Data Firehose, Amazon MSK, Rabbit MQ 및 사용자 정의 커넥터를 포함한 Apache Cassandra)의 데이터 처리에 대해 정확히 하나의 의미 체계를 사용하는 애플리케이션과 같은 복잡한 스트리밍 분석 애플리케이션을 작성하는 데 유용합니다.

Flink 애플리케이션에서 스트리밍 데이터를 처리한 후에는 Amazon Kinesis Data Streams, Amazon Kinesis Data Firehose, Amazon DynamoDB, Amazon OpenSearch Service, Amazon Timestream, Amazon S3 등과 같은 다양한 싱크 또는 대상에 데이터를 유지할 수 있습니다. Kinesis Data Analytics Flink 애플리케이션은 1초 미만의 성능을 보장합니다.

Kinesis Data Analytics용 Apache Beam 애플리케이션

Apache Beam은 스트리밍 데이터를 처리하기 위한 프로그래밍 모델입니다. Apache Beam은 Flink, Spark Streaming, Apache Samza 등의 다양한 엔진 또는 실행기에서 실행될 수 있는 정교한 데이터 병렬 처리 파이프라인을 구축하기 위한 이식 가능한 API 계층을 제공합니다.

Kinesis Data Analytics 애플리케이션과 함께 Apache Beam 프레임워크를 사용하여 스트리밍 데이터를 처리할 수 있습니다. Apache Beam을 사용하는 Kinesis Data Analytics 애플리케이션은 Apache Flink 실행기를 사용하여 Beam 파이프라인을 실행합니다.

요약

AWS 스트리밍 서비스인 Amazon Kinesis Data Streams, Amazon Kinesis Data Analytics 및 Amazon Kinesis Data Firehose를 사용하여

ABC4Logistics는 온도 판독 값의 이상 패턴을 탐지하고 운전자와 차량 관리 팀에 실시간으로 통보하여 차량 전파나 화재와 같은 주요 사고를 예방할 수 있습니다.