이 모듈에서는 Amazon Kinesis Data Analytics 애플리케이션을 생성하여 유니콘 플릿의 센서 데이터를 실시간으로 집계합니다. 애플리케이션이 Amazon Kinesis 스트림에서 읽고, 현재 Wide Ryde에 있는 각 유니콘의 총 이동 거리, 최소 및 최대 상태와 매직 포인트를 계산하고, 이 집계된 통계를 1분마다 Amazon Kinesis 스트림으로 출력합니다.

이 모듈의 아키텍처는 Amazon Kinesis Data Analytics 애플리케이션, 원본 및 대상 Amazon Kinesis Streams, 생산자 및 소비자 명령줄 클라이언트 가 있습니다.

Amazon Kinesis Data Analytics 애플리케이션이 이전의 모듈에서 생성한 원본 Amazon Kinesis 스트림에서 데이터를 처리하고 1분 간격으로 집계합니다. 1분마다 애플리케이션이 플릿에 있는 각 유니콘이 이전 1분 동안 이동한 총 거리, 상태 및 매직 포인트의 최소 및 최댓값 등을 포함한 데이터를 출력합니다. 이 데이터 포인트는 Amazon Kinesis 스트림으로 보내서 시스템의 다른 구성 요소에서 처리하게 합니다.

모듈 완료 시간: 20분

사용되는 서비스:
• Amazon Kinesis Data Streams
• Amazon Kinesis Data Analytics


  • 1단계. Amazon Kinesis 스트림 생성

    Amazon Kinesis 데이터 스트림 콘솔을 사용하여 샤드가 1이고 wildrydes-summary라는 이름의 새 스트림을 생성합니다.


    a. AWS Management Console로 이동하여 [서비스]를 클릭한 후에 분석 아래 Kinesis를 선택합니다.

    b. 소개 화면이 표시되는 경우에는 [시작하기]를 선택합니다.

    c. [데이터 스트림 생성]을 선택합니다.

    d. wildrydes-summary를 [Kinesis 스트림 이름]에, 1을 [샤드 수]에 입력한 다음, [Kinesis 스트림 생성]을 선택합니다.

    e. 60초 이내에 Kinesis 스트림이 활성화되면서 실시간 스트리밍 데이터를 저장할 수 있는 준비를 합니다.

  • 2단계. Amazon Kinesis Data Analytics 애플리케이션 생성

    이전 모듈에서 구축한 wildrydes 스트림에서 읽고 다음의 속성을 포함한 JSON 객체를 1분마다 출력할 Amazon Kinesis Data Analytics 애플리케이션을 구축합니다.

    이름 유니콘 이름
    StatusTime Amazon Kinesis Data Analytics가 제공한 ROWTIME
    거리 유니콘이 이동한 거리 합계
    MinMagicPoints MagicPoints  속성의 최소 데이터 포인트
    MaxMagicPoints MagicPooints  속성의 최대 데이터 포인트
    MinHealthPoints HealthPoints 속성의 최소 데이터 포인트
    MaxHealthPoints HealthPoints 속성의 최대 데이터 포인트

    a. Cloud9 환경이 열린 탭으로 전환합니다.

    b. 생산자를 실행하여 센서 데이터를 스트림으로 내보내기 시작합니다.

    ./producer

    애플리케이션을 구축하는 동안 센서 데이터를 능동적으로 생성하면 Amazon Kinesis Data Analytics가 스키마를 자동 탐지합니다.

    c. AWS Management Console로 이동하여 [서비스]를 클릭한 후에 분석 아래 Kinesis를 선택합니다.

    d. [분석 애플리케이션 생성]을 선택합니다.

    e. wildrydes애플리케이션 이름에 입력한 다음, [애플리케이션 생성]을 선택합니다.

    f. [스트리밍 데이터 연결]을 선택합니다.

    g. Kinesis 스트림에서 wildrydes를 선택합니다.

    h. 스크롤을 내려서 [스키마 검색]을 클릭한 다음, 잠시 기다려서 스키마가 자동으로 검색되는지 확인합니다.

    자동 검색된 스키마에 다음이 포함되는지 확인합니다.

     

    데이터 유형
    거리 DOUBLE
    HealthPoints INTERGER
    위도 DOUBLE
    경도 DOUBLE
    MagicPoints INTEGER
    이름 VARCHAR(16)
    StatusTime TIMESTAMP

    i. [저장 및 계속]을 선택합니다.

    j. [SQL 편집기로 이동]을 선택합니다. 대화형 쿼리 세션이 열리고, 여기에서 실시간 Amazon Kinesis 스트림 위에 쿼리를 구축할 수 있습니다.

    k. [예, 애플리케이션을 시작합니다]를 선택합니다. 애플리케이션 시작되려면 30~90초가 걸립니다.

    l. 다음 SQL 쿼리를 복사해서 SQL 편집기에 붙여넣습니다.

     

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" (
      "Name"                VARCHAR(16),
      "StatusTime"          TIMESTAMP,
      "Distance"            SMALLINT,
      "MinMagicPoints"      SMALLINT,
      "MaxMagicPoints"      SMALLINT,
      "MinHealthPoints"     SMALLINT,
      "MaxHealthPoints"     SMALLINT
    );
    
    CREATE OR REPLACE PUMP "STREAM_PUMP" AS
      INSERT INTO "DESTINATION_SQL_STREAM"
        SELECT STREAM "Name", "ROWTIME", SUM("Distance"), MIN("MagicPoints"),
                      MAX("MagicPoints"), MIN("HealthPoints"), MAX("HealthPoints")
        FROM "SOURCE_SQL_STREAM_001"
        GROUP BY FLOOR("SOURCE_SQL_STREAM_001"."ROWTIME" TO MINUTE), "Name";

    (확대하려면 클릭)

    m. [저장 및 SQL 실행]을 선택합니다. 1분마다 집계된 데이터가 포함된 행이 도착할 것입니다. 행이 도착하기를 기다립니다.

    n. 대상 링크를 클릭합니다.

    o. [대상에 연결]을 클릭합니다.

    p. Kinesis 스트림에서 wildrydes-summary를 클릭합니다.

    q. 애플리케이션 내 스트림 이름에서 DESTINATION_SQL_STREAM을 선택합니다.

    r. [저장 및 계속]을 선택합니다.

    (확대하려면 클릭)

  • 3단계. 스트림에서 메시지 읽기

    명령줄 소비자를 사용하여 Kinesis 스트림의 메시지를 조회하고 집계된 데이터가 1분마다 전송되고 있는지 확인합니다.


    a. Cloud9 환경을 연 탭으로 전환합니다.

    b. 소비자를 실행하여 스트림의 센서 데이터 판독을 시작합니다.

    ./consumer -stream wildrydes-summary

    소비자가 Kinesis Data Analytics 애플리케이션이 1분마다 전송하는 메시지를 출력할 것입니다.

    {
      "Name": "Shadowfax",
      "StatusTime": "2018-03-18 03:20:00.000",
      "Distance": 362,
      "MinMagicPoints": 170,
      "MaxMagicPoints": 172,
      "MinHealthPoints": 146,
      "MaxHealthPoints": 149
    }
  • 4단계. 생산자로 실험

    생산자를 중지 및 시작하면서 대시보드 및 소비자를 관찰합니다. 유니콘 이름이 다른 다수의 생산자를 시작합니다.


    a. Cloud9 환경을 연 탭으로 전환합니다.

    b. Control+C를 눌러서 생산자를 중지한 후에 유니콘이 사라지는지 확인합니다.

    c. 생산자를 다시 시작하면 메시지가 재개됩니다.

    d. (+) 버튼을 누르고 [새 터미널]을 클릭하여 새로운 터미널 탭을 엽니다.

    e. 새 탭에서 생산자의 다른 인스턴스를 시작합니다. 특정 유니콘 이름을 입력하고 소비자의 출력에서 유니콘의 데이터 포인트를 확인합니다.

    ./producer -name Bucephalus

    f. 출력에서 여러 유니콘이 보이는지 확인합니다.

    {
        "Name": "Shadowfax",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 362,
        "MinMagicPoints": 170,
        "MaxMagicPoints": 172,
        "MinHealthPoints": 146,
        "MaxHealthPoints": 149
    }
    {
        "Name": "Bucephalus",
        "StatusTime": "2018-03-18 03:20:00.000",
        "Distance": 1773,
        "MinMagicPoints": 140,
        "MaxMagicPoints": 148,
        "MinHealthPoints": 132,
        "MaxHealthPoints": 138
    }
  • 요약 및 팁


    🔑 Amazon Kinesis Data Analytics를 사용하면 SQL을 사용하여 스트리밍 데이터를 쿼리하거나 전체 스트리밍 애플리케이션을 구축할 수 있으므로 실행 가능한 통찰력을 확보하고 비즈니스 및 고객 요구 사항에 기민하게 대응할 수 있습니다.

    🔧 이 모듈에서는 Kinesis 스트림에서 유니콘 데이터를 읽고 1분마다 요약 행을 내보내는 Kinesis Data Analytics 애플리케이션을 생성했습니다.

다음 모듈에서는 AWS Lambda를 사용하여 앞서 Amazon Kinesis 스트림이 생성한 wildrydes 에서 데이터를 처리할 것입니다. 스트림에서 레코드를 읽고 레코드가 도착하면 Amazon DynamoDB 테이블에 기록하는 Lambda 함수를 생성 및 구성할 것입니다.