AWS Kinesis란 무엇입니까? 디자인 패턴, 사용 사례 및 비교

게시 됨: 2022-07-01

우리는 애플리케이션 간 통합, 즉각적인 알림, 즉각적인 데이터 업데이트의 시대에 살고 있습니다. 이러한 시나리오에서는 실시간 시스템을 생성, 유지 및 수정하는 것이 더욱 중요해집니다.

수년 동안 이러한 크로스 플랫폼 시스템을 구축하고 유지 관리하는 데 도움이 되는 다양한 유용한 도구가 개발되었습니다. RabbitMQ, Kafka 및 AWS Kinesis는 개발자와 엔지니어가 실시간 데이터로 원활하게 작업하는 데 도움이 된 세 가지 도구입니다. 이러한 시스템은 모두 다른 목표를 염두에 두고 만들어지고 유지 관리되었습니다. 따라서 그들은 당면한 직업에 따라 뚜렷한 이점과 한계가 있습니다.

이 기사에서는 AWS Kinesis와 작동 방식에 대해 자세히 설명합니다.

Kinesis는 AWS를 기반으로 구축된 스트리밍 서비스입니다. 로그, IoT 데이터, 비디오 데이터, 기본적으로 모든 데이터 형식에서 모든 종류의 데이터를 처리하는 데 사용할 수 있습니다. 이를 통해 시스템을 통해 흐르는 데이터에 대해 다양한 기계 학습 모델 및 프로세스를 실시간으로 실행할 수 있습니다. 따라서 전반적인 효율성을 높이는 동시에 기존 데이터베이스를 거치는 번거로움을 줄입니다.

목차

인기 있는 MBA 과정 살펴보기

골든게이트대학교 경영학 석사 경영학 석사(MBA) 리버풀 경영대학원 디킨 경영대학원 MBA
Dekin University 디지털 마케팅 MBA SSBM의 이그 제 큐 티브 MBA 모든 MBA 과정 보기

Pub/Sub 디자인 패턴

Kinesis를 정확히 어떻게 사용할 수 있는지 자세히 알아보기 전에 Kinesis가 사용하는 디자인 모델에 대해 조금 더 알고 있어야 합니다. 이 경우 흔히 pub/sub 디자인 패턴이라고 하는 게시자 및 구독자 디자인에 대해 이야기하고 있습니다. 이 디자인 패턴은 메시지의 발신자인 게시자가 이벤트 버스인 Kinesis로 이벤트를 푸시하도록 개발되었습니다. 그러면 이 이벤트 버스는 입력 데이터를 모든 가입자에게 성공적으로 배포합니다.

여기서 명심해야 할 한 가지 핵심 요소는 게시자가 본질적으로 구독자가 있다는 사실을 전혀 모른다는 것입니다. 모든 메시징 및 메시징 전송은 전적으로 AWS Kinesis에서 관리합니다.

달리 말하면, pub/sub 디자인 패턴은 많이 결합된 디자인을 만들지 않고 메시지의 효율적인 커뮤니케이션을 위해 사용됩니다. 대신 Kinesis는 독립적인 구성 요소를 활용하고 이를 기반으로 전체 분산 워크플로를 구축하는 데 중점을 둡니다.

본질적으로 AWS Kinesis는 특히 다른 실시간 스트리밍 도구와 비교할 때 뚜렷한 이점을 제공하는 강력한 스트리밍 도구입니다. 이러한 이점 중 하나는 관리 서비스이므로 개발자가 시스템 관리를 처리할 필요가 없다는 것입니다. 이를 통해 개발자는 관리 업무는 덜하고 코드와 시스템에 더 집중할 수 있습니다.

이제 Kinesis의 몇 가지 사용 사례를 살펴보겠습니다.

AWS Kinesis 사용 사례 – 데이터 스트리밍

AWS Kinesis는 다양한 플랫폼에서 데이터를 관리하고 통합하려는 대기업과 중소기업에 유용합니다. Kinesis는 여러 플랫폼에서 데이터를 관리하고 통합하려는 조직의 대규모 및 소규모 시나리오에서 유용합니다.

기업에서 대량의 실시간 데이터를 원활하게 관리하기 위해 AWS Kinesis를 사용한 두 가지 큰 사용 사례를 살펴보겠습니다.

넷플릭스

Netflix는 AWS Kinesis를 사용하여 매일 여러 TB의 로그 데이터를 처리합니다. Netflix에는 모든 데이터를 실시간으로 기록하는 중앙 집중식 애플리케이션이 필요합니다. Netflix는 Kinesis를 사용하여 실시간으로 메타데이터로 콘텐츠를 강화하는 Dredge를 개발했습니다. 이렇게 하면 데이터가 Kinesis를 통과하는 즉시 처리됩니다. 이는 향후 처리를 위해 데이터베이스에 데이터를 로드하는 지루한 단계를 제거합니다.

베리톤

Veriton은 AI 및 기계 학습 서비스를 제공합니다. 고객 데이터를 처리하기 위해 AWS Kinesis 비디오 스트림을 사용합니다. Veriton은 또한 ML 모델과 AI를 실시간으로 콘텐츠에 적용하여 메트릭과 메타데이터로 콘텐츠를 개선합니다. Veriteone은 이 추가 정보를 사용하여 오디오, 얼굴 인식, 태그가 지정된 데이터 등을 보고 Kinesis 비디오 스트림을 더 쉽게 검색할 수 있습니다.

이는 오늘날 기업에서 AWS Kinesis를 활용하여 실시간 스트리밍 데이터를 보다 효율적으로 사용하는 방법에 대한 수많은 예 중 두 가지에 불과합니다.

AWS Kinesis 스트림의 기술 및 필수 구성 요소로 넘어가 보겠습니다.

세계 최고의 대학에서 AI 및 ML 과정을 배우십시오. 석사, 이그 제 큐 티브 PGP 또는 고급 인증 프로그램을 획득하여 경력을 빠르게 추적하십시오.

스트림 대 Firehose

AWS Kinesis는 개발자에게 Kinetic Streams와 Kinesis Firehose라는 두 가지 기본 제품을 제공합니다.

Kinesis Stream으로 작업하려면 Kinesis Producer Library를 사용해야 합니다. 모든 실시간 데이터를 스트림에 넣을 수 있습니다. 또한 이 라이브러리를 거의 모든 응용 프로그램이나 프로세스에 연결할 수 있습니다. 그러나 Kinesis Streams는 100% 관리형 서비스가 아닙니다. 따라서 개발자 팀은 필요할 때 수동으로 확장해야 합니다. 또한 스트림에 제공된 데이터는 7일 동안 그대로 유지됩니다.

Kinesis Firehose는 구현하기가 약간 더 간단합니다. Kinesis Firehose에 제공된 데이터는 모두 AWS Kinesis 엔진을 사용하여 Amazon Redshift, Amazon S3, 심지어 Elasticsearch로 전송됩니다. 그런 다음 요구 사항에 따라 처리할 수 있습니다. 데이터가 Amazon S3 또는 다른 AWS 스토리지 시스템에 저장된 경우 원하는 기간 동안 그대로 둘 수 있습니다.

Kinesis에서 스트림 설정

Kinesis 액세스를 시작하기 전에 AWS CLI에 액세스하여 스트림을 설정해야 합니다. 명령 셸에서 다음 명령을 입력하여 DataProcessingStream이라는 스트림을 만듭니다.

–스트림 이름 DataProcessingStream \

–샤드 수 1 \

– 지역 eu-west-1

Python으로 스트리밍 파이프라인 만들기

Kinesis에서 스트림을 설정했으면 생산자 및 소비자 구축을 시작해야 합니다. Kinesis의 핵심 구성 요소는 액세스 계층을 생성하여 다른 시스템, 소프트웨어 및 애플리케이션을 통합하는 데 도움이 됩니다.

이 자습서에서는 boto3 Python 라이브러리를 사용하여 Kinesis에 연결합니다.

생산자 만들기

아래에 언급된 코드를 사용하여 Python 프로그래밍 언어를 사용하여 생산자를 생성합니다.

가져오기 boto3

json 가져오기

가져오기 로깅

logging.basicConfig(레벨 = logging.INFO)

세션 = boto3.Session(region_name='eu-west-1')

클라이언트 = session.client('kinesis')

test_data = {'data_tag': 'DataOne', '점수': '10', 'char': '데이터베이스 전사'}

응답 = client.put_record(

스트림 이름 = '데이터 처리 스트림',

Data=json.dumps({

"data_tag": test_data['data_tag'],

"점수": test_data['점수'],

"char": test_data['char']

}),

파티션 키='a01'

)

logging.info("새 데이터 점수 입력: %s", test_data)

데이터를 가져오려면 생산자에게 제공되는 데이터를 수신하기 위한 다른 스크립트가 필요합니다. 이를 위해 ShardIterator를 사용하여 Kinesis에 공급되는 모든 데이터에 액세스할 수 있습니다. 이렇게 하면 Kinesis의 실시간 및 향후 레코드에 액세스할 수 있습니다.

소비자 만들기

아래 언급된 코드를 사용하여 Python 소비자를 만듭니다.

가져오기 boto3

json 가져오기

수입 시스템

가져오기 로깅

logging.basicConfig(레벨 = logging.INFO)

세션 = boto3.Session(region_name='eu-west-1')

클라이언트 = session.client('kinesis')

aws_kinesis_stream = client.describe_stream(StreamName='DataProcessingStream)

shard_id = aws_kinesis_stream['StreamDescription']['샤드'][0]['ShardId']

stream_response = client.get_shard_iterator(

스트림 이름 = '데이터 처리 스트림',

ShardId=shard_id,

ShardIteratorType='TRIM_HORIZON'

)

반복자 = stream_response['ShardIterator']

참인 동안:

노력하다:

aws_kinesis_response = client.get_records(ShardIterator=반복자, 제한=5)

반복자 = aws_kinesis_response['NextShardIterator']

aws_kinesis_response['Records']의 기록:

레코드의 '데이터'이고 len(record['Data']) > 0인 경우:

logging.info("새 데이터 점수 수신: %s", json.loads(record['Data']))

KeyboardInterrupt 제외:

sys.exit()

위의 예에서는 데이터만 인쇄합니다.

Kinesis 파이프라인의 문제

Kinesis는 진정으로 유익하지만 도전과 단점이 없는 것은 아닙니다. Kinesis로 작업하는 동안 직면하게 될 중요한 문제 중 하나는 '관측 가능성'이라고 할 수 있습니다.

여러 AWS 구성 요소로 작업하면 생성하는 시스템이 점점 더 복잡해집니다. 예를 들어 Lambda 함수를 생산자와 소비자로 사용하고 이를 다른 AWS 스토리지 시스템에 연결하면 종속성과 오류를 관리하고 추적하기가 매우 어려워집니다.

MBA와 관련된 인기 기사 읽기

재무 분석가 급여 – 신입 및 경력 HR을 위한 주요 면접 질문 및 답변 미국 MBA 마케팅 경력 옵션
인적 자원 MBA 후 미국 최고의 직업 옵션 영업 분야의 상위 7개 직업 옵션 미국에서 가장 높은 급여를 받는 금융 직업: 평균에서 최고
미국 금융 분야의 상위 7가지 직업 옵션: 반드시 읽어야 할 사항 2022년 5대 마케팅 트렌드 2022년 미국 MBA 급여 [모든 전문화]

결론적으로

스트리밍 데이터와 실시간 데이터 작업이 시급한 과제라는 점은 의심의 여지가 없으며, 세상이 점점 더 많은 데이터를 생산함에 따라 더욱 늘어날 것입니다. 따라서 Kinesis 트릭을 마스터하는 데 관심이 있다면 전문 과정이 도움이 될 수 있습니다.

IIIT-B와 LJMU의 협력으로 제공되는 upGrad의 기계 학습 및 AI 과학 석사는 데이터 탐색의 기본부터 시작하여 NLP, Deep의 모든 중요한 개념에 도달하는 데 도움이 되도록 설계된 18개월 종합 과정입니다. 학습, 강화 학습 등. 또한, 산업 프로젝트, 360도 경력 지원, 개인화된 멘토링, 동료 네트워킹 기회 및 기계 학습 및 AI를 마스터하는 데 도움이 되는 훨씬 더 많은 작업을 수행할 수 있습니다.

1. AWS Kinesis가 데이터를 가져올 수 있습니까?

Amazon Kinesis는 수천 개의 소스에서 실시간으로 GB의 데이터를 지속적으로 캡처하여 작동하는 확장 가능하고 내구성이 뛰어난 실시간 데이터 스트리밍 솔루션입니다.

2. 하나의 Kinesis 스트림에 여러 소비자가 있을 수 있습니까?

예, 샤드 반복자를 사용하여 하나의 Kinesis 스트림에 여러 소비자를 제공할 수 있습니다.

3. AWS Kinesis는 어떤 종류의 대기열과 함께 작동합니까?

AWS Kinesis는 운영 및 데이터 프로세스에서 FIFO(선입 선출)입니다.