본문 바로가기
[AWS]/AWS 기타

[AWS] Kinesis란 무엇인가?

by METAVERSE STORY 2022. 9. 15.
반응형
728x170

 

 

AWS Kinesis란 무엇인가?

 

Amazon Kinesis를 사용하면 실시간 스트리밍 데이터를 손쉽게 수집, 처리 및 분석할 수 있으므로 적시에 통찰력을 확보하고 새로운 정보에 신속하게 대응할 수 있습니다. Amazon Kinesis는 모든 규모의 스트리밍 데이터를 비용 효율적으로 처리할 수 있는 핵심 기능과 더불어 애플리케이션 요구 사항에 가장 적합한 도구를 선택할 수 있는 유연성을 제공합니다. Amazon Kinesis에서는 기계 학습, 분석 및 기타 애플리케이션을 위해 비디오, 오디오, 애플리케이션 로그, 웹 사이트 클릭스트림 및 IoT 텔레메트리 데이터와 같은 실시간 데이터를 수집할 수 있습니다. Amazon Kinesis를 사용하면 모든 데이터가 수집된 후에야 처리를 시작할 수 있는 것이 아니라 데이터가 수신되는 대로 처리 및 분석하여 즉시 대응할 수 있습니다.

 

Kinesis 특징

비디오와 데이터 스트림을 실시간으로 손 쉽게 처리 및 분석하는 서비스로 총 4가지로 나눌 수 있다.

  • Kinesis Data Streams: 데이터 스트림을 분석하는 사용자 정의 애플리케이션 개발에 사용된다.
    • 데이터를 받으면 일정 기간 동안 내구성 있게 데이터를 저장하기 위한 서비스
  • kinesis Data Firehose: 데이터 스트림을 AWS 데이터 저장소에 적재한다.
    • 데이터를 입력 받고 S3나 redshift, elasticsearch로 전송
    • 뒷 산의 목적지로 데이터를 전송하기 위한 목적을 가진다.
  • Kinesis Data Analytics: SQL을 사용해 데이터 스트림 분석
    • Kinesis Data Stream 또는 Firehose에 쉽게 연결하고 SQL 검색을 할 수 있다.
    • 수행 결과를 다시 Data Stream 또는 Firehose로 보냄
    • 스트리밍 소스에 연결 -> SQL 코드를 쉽게 작성 -> 지속적으로 SQL 결과를 전달한다.
    • 데이터를 처리하기 위한 2가지 컨셉을 사용하고 있다.
      • 스트림(인-메모리 테이블) -> 가상의 테이블 or view라고 봐야 한다.
      • 펌프(연속 쿼리)-> 실제 데이터를 앞서 만든 view에 넣어주는 역할
  • Kinesis Video Streams: 분석을 위한 스트림 캡쳐 및 처리 저장

 

 

실습

 

이번 예제는 Kinesis 서비스 중 Data Stream에 초점을 맞춘 실습으로 이러한 구성으로 진행 될 것이다. 

  

 

1. 역할 생성

먼저 ec2에 역할을 생성 해야 한다.

 

역할 생성을 클릭 후 사용 사례를 EC2로 지정한 후 다음을 누른다.

 

 

그 이후 S3 Full 권한과 kinesis Full 권한을 부여 해 준다.

 

 

그 다음 이름을 작성한 뒤 역할을 생성해 준다. 

 

 

 

2. 사용자 추가

사용자 이름을 추가해 준 후 액세스 유형을 프로그래밍 방식 액세스로 지정 해 준다. 

 

 

그 후 Kinesis Full 권한을 준 후 사용자를 생성한다.

 

 

 

3. EC2 생성

 

 

그 후 아마존 리눅스 ec2 하나를 띄워준다. IAM 인스턴스 프로파일에 아까 생성했던 역할을 넣어준다. 

원래는 우분투로 생성하려고 했지만 우분투의 경우 aws-kinesis-agent를 설치하는 방법이 상당히 불편하다. 그러므로 간단한 실습을 위해서 아마존 리눅스로 진행했다. 

 

 

 

3. Kinesis Data Streams 생성

 

kinesis로 들어온 후 kinesis data streams를 생성 했다.

 

 

 

먼저 데이터 스트림의 이름을 정해준 후 모드는 온디맨드 모드로 지정했다.

밑에 있는 데이터 스트림 설정은 기본으로 생긴 값이다.

그 후 생성을 완료해 주었다.

 

 

 

 

4.  Kinesis Data Firehose 생성

그 다음은 스트림 서비스가 로그에서 데이터를 가져오면 데이터를 푸시해야 하므로 그 때 사용할 Firehose를 생성해 준다. 

 

생성을 눌러주면 먼저 Source와 Destination을 선택해야 한다. 우리는 Kinesis Data Streams에서 받아와서 목적지는 S3이기 때문에 각각 선택해 준다.

 

그 후 data stream을 우리가 만든 data stream을 선택해 준 후 Delivery stream name 또한 수정해 주었다.

 

 

그 후 Transform and covert records는 둘 다 기본 값인 Disabled로 설정했다.

 

그리고 목적지에 관한 설정을 진행했다. s3 버킷을 선택했고 나머지는 기본값으로 유지한 후 생성을 클릭했다.

 

 

생성이 완료 된 모습을 확인할 수 있다. 

(firehose 를 Delivery streams이라고 지칭함)

 

 

 

 

4. Kinesis agent 인스톨

 

 

그 후 EC2에 Kinesis agent를 설치하기 위해 구글에 검색한 후 google docs에 들어가 준다. 

 

 

그 후 이 명령어에 맞게 다운로드 해 준다. 

 

나는 EC2 접속을 Putty를 통해서 접속했다.

그 후 위 명령어를 입력해서 agent를 설치했다. 

 

 

 

 

5. 로그폴더 접근 후 폴더 생성 및 파일 수정

 

 

먼저 로그 폴더로 접근 해 준다. 

 

 

 

그 다음 weather 라는 폴더를 생성해주고 그 폴더 안으로 접근한다. 

 

 

 

그 후 Github에 들어가서 이 파일들을 깃 클론을 해 준다. 

 

 

 

그 후 yum install git을 진행 해 준다. 

 

그 후 git clone을 통해서 실습 파일들을 다운로드 해 준다. 

 

 

그리고 git을 클론한 폴더로 들어간다.

 

 

그 다음 agent_template 파일을 들어가서 몇가지를 수정해 준다. 

 

txt 파일을 열면 일단 내 kinesis data streams와 firehose의 엔드포인트를 적어줘야 한다. 

그 이후 aws Access Key와 Secret Access Key를 입력하는 부분이 있다.

계정을 생성하면서 만든 Access Key와 Secret Key를 넣어주면 된다. 

그 후 kinesisStream에 자신이 생성한 kinesis data streams의 이름을 넣어주면 된다. 

 

 

 

6. 데이터 다운로드

 

그 후 wc -l 을 통해서 몇개의 도시가 count 되는지 확인할 수 있다. 

 

이제 추후 20개의 로그를 아까 생성했던 weather로 보내 줄 것이다. 

 

 

그 후 etc/aws-kinesis로 들어가서 agent.json 파일을 삭제 해 준다.

 

 

 

그 후 agent_template를 agent.json 형태로 이름을 변경한 후 붙여넣어준다.

그 후 ls를 통해서 이름이 잘 바뀐 채 들어가 있는 것을 확인할 수 있다. 

 

 

 

 

7. 서비스 시작

 

이제 aws kinesis agent 서비스를 실행한다.

 

 

그 후 아까 생성한 first.log를 weather로 보내주었다.

 

 

그 다음 다시 var/log/aws-kinesis-agent로 돌아온다.

그 후 ls를 진행하면 로그파일이 하나 생긴 것을 확인할 수 있다. 

 

그 이후 tail 명령어를 사용해서 20개의 로그를 확인한다.

tail 명령어란

tail 명령어는 파일의 마지막 행을 기준으로 지정한 행까지의 파일 내용 일부를 출력해주는 명령어입니다. 기본값으로는 마지막 10줄을 출력하며 주로 tail은 리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용됩니다.

 

이렇게 로그들이 찍히고 20개의 레코드가 성공적으로 목적지에 도착했다 라는 사실을 알 수 있다. 

 

 

그 후 kinesis data streams에 들어오면 이렇게 20개의 합계를 받아온 것을 알 수 있고 평균 대기시간을 확인할 수 있다.

 

그리고 kinesis data firehose 에서도 20개의 데이터 스트림을 옮겼다 라는 것을 확인할 수 있다.

 

 

그 후 s3를 확인해 보면 이런식으로 로그를 확인할 수 있다. 

 

그 중 하나를 열어서 확인해보니 총 5개의 json 형식의 로그를 확인할 수 있었다. 

나머지 5개를 모두 확인한 결과 총 20개의 json 형식의 로그들을 확인할 수 있었고 

이는 fist.log와 정확히 일치했다. 

 

 

 

 

출처

https://www.youtube.com/watch?v=ZErwfH-OLk4&ab_channel=ManishSingh 

 

반응형
그리드형

댓글