AWS Kinesisとは何ですか? デザインパターン、ユースケース、比較
公開: 2022-07-01私たちは、クロスアプリケーション統合、即時通知、および即時データ更新の時代に生きています。 このようなシナリオでは、リアルタイムシステムを作成、保守、および変更することがより重要になります。
何年にもわたって、このようなクロスプラットフォームシステムの構築と保守を支援するために開発されたさまざまな便利なツールがあります。 RabbitMQ、Kafka、AWS Kinesisは、開発者とエンジニアがリアルタイムデータをシームレスに操作するのに役立つ3つのツールです。 これらのシステムはすべて、さまざまな目的を念頭に置いて作成および保守されています。 したがって、目前の仕事に基づいて、明確な利点と制限があります。
この記事では、AWSKinesisとその仕組みについて詳しく説明します。
Kinesisは、AWS上に構築されたストリーミングサービスです。 ログ、IoTデータ、ビデオデータ、基本的にはあらゆるデータ形式など、あらゆる種類のデータを処理するために使用できます。 これにより、データがシステムを流れるときに、データに対してさまざまな機械学習モデルとプロセスをリアルタイムで実行できます。 したがって、全体的な効率を高めながら、従来のデータベースを経由する煩わしさを軽減します。
人気のMBAコースをご覧ください
ゴールデンゲート大学経営学修士 | 経営学修士(MBA)リバプールビジネススクール | ディーキンビジネススクールのMBA |
デキン大学でデジタルマーケティングのMBAを取得 | SSBMのエグゼクティブMBA | すべてのMBAコースを見る |
Pub/Subデザインパターン
Kinesisの使用方法を詳しく説明する前に、Kinesisが使用する設計モデルについてもう少し理解することが重要です。 この場合、パブリッシャーとサブスクライバーのデザインについて話します。これは、パブ/サブデザインパターンと呼ばれることがよくあります。 このデザインパターンは、メッセージの送信者であるパブリッシャーがイベントバスであるKinesisにイベントをプッシュするように開発されました。 次に、このイベントバスは、入力データをすべてのサブスクライバーに正常に配布します。
ここで覚えておくべき重要な要素の1つは、パブリッシャーは基本的にサブスクライバーが存在することを知らないということです。 すべてのメッセージングとメッセージングの転送は、AWSKinesisによって完全に管理されます。
言い換えると、pub / subデザインパターンは、多くの結合されたデザインを作成することなく、メッセージの効率的な通信に使用されます。 代わりに、Kinesisは、独立したコンポーネントを利用し、そこから全体的な分散ワークフローを構築することに重点を置いています。
本質的に、AWS Kinesisは、特に他のリアルタイムストリーミングツールと比較して、明確な利点を提供する強力なストリーミングツールです。 そのような利点の1つは、マネージドサービスであるため、開発者がシステム管理を処理する必要がないことです。 これにより、開発者は管理業務に集中するのではなく、コードとシステムに集中することができます。
それでは、Kinesisのいくつかのユースケースを見てみましょう。
AWS Kinesisのユースケース–ストリーミングデータ
AWS Kinesisは、さまざまなプラットフォームでデータを管理および統合しようとしている大小の企業に役立ちます。 Kinesisは、プラットフォーム間でデータを管理および統合しようとしている組織にとって、大規模および小規模のシナリオで役立ちます。
企業が大量のリアルタイムデータをシームレスに管理するためにAWSKinesisを使用した2つの大きなユースケースを見てみましょう。
Netflix
NetflixはAWSKinesisを使用して、毎日複数TBのログデータを処理します。 Netflixには、データをすべてリアルタイムで記録する一元化されたアプリケーションが必要です。 Netflixは、Kinesisを使用して、コンテンツをメタデータでリアルタイムに強化するDredgeを開発しました。 そうすれば、データはKinesisを通過するときに即座に処理されます。 これにより、将来の処理のためにデータベースにデータをロードするという面倒な手順が1つ不要になります。
ベリトン
VeritonはAIと機械学習サービスを提供しています。 AWSKinesisビデオストリームを使用して顧客データを処理します。 Veritonはまた、MLモデルとAIをリアルタイムでコンテンツに適用し、メトリックとメタデータでコンテンツを改善します。 Veritoneは、この追加情報を使用して、オーディオ、顔認識、タグ付きデータなどを確認することで、Kinesisビデオストリームを簡単に検索できるようにします。
これらは、今日の企業がAWSKinesisを活用してリアルタイムストリーミングデータをより効率的に処理する方法の数多くの例のうちの2つにすぎません。
AWSKinesisストリームの技術と重要なコンポーネントに移りましょう。
世界のトップ大学からAIとMLのコースを学びましょう。 マスター、エグゼクティブPGP、または高度な証明書プログラムを取得して、キャリアを迅速に追跡します。
ストリームvs消防ホース
AWS Kinesisは、KineticStreamsとKinesisFirehoseという2つの主要な製品を開発者に提供します。
Kinesis Streamを使用するには、Kinesisプロデューサーライブラリを使用する必要があります。 これにより、すべてのリアルタイムデータをストリームに入れることができます。 さらに、このライブラリをほぼすべてのアプリケーションまたはプロセスに接続できます。 ただし、Kinesis Streamsは100%マネージドサービスではありません。 そのため、開発者チームは必要に応じて手動でスケーリングする必要があります。 さらに、ストリームに入力されたデータは7日間そこにとどまります。
KinesisFirehoseは実装が少し簡単です。 Kinesis Firehoseに供給されたデータは、Amazon Redshift、Amazon S3、さらにはElasticsearchに送信されます。これらはすべてAWSKinesisエンジンを使用しています。 この後、要件に従って処理できます。 データがAmazonS3またはその他のAWSストレージシステムに保存されている場合は、好きなだけそこに置いておくことができます。
Kinesisでストリームを設定する
Kinesisへのアクセスを開始する前に、AWSCLIにアクセスしてストリームを設定する必要があります。 コマンドシェルで、次のコマンドを入力して、DataProcessingStreamというストリームを作成します。
–stream-name DataProcessingStream \
–シャードカウント1 \
–region eu-west-1
Pythonでストリーミングパイプラインを作成する
Kinesisでストリームを設定したら、プロデューサーとコンシューマーの構築を開始する必要があります。 Kinesisのコアコンポーネントは、他のシステム、ソフトウェア、およびアプリケーションを統合するためのアクセスレイヤーの作成に役立ちます。
このチュートリアルでは、boto3Pythonライブラリを使用してKinesisに接続します。
プロデューサーの作成
以下に説明するコードを使用して、Pythonプログラミング言語を使用してプロデューサーを作成します。
boto3をインポートする
jsonをインポートする
インポートログ
logging.basicConfig(level = logging.INFO)
セッション=boto3.Session(region_name ='eu-west-1')
client = session.client('kinesis')
test_data = {'data_tag':'DataOne'、'score': '10'、'char':'データベースウォリアー'}
response = client.put_record(
StreamName ='DataProcessingStream'、
Data = json.dumps({
「data_tag」:test_data ['data_tag']、
「スコア」:test_data ['score']、
「char」:test_data ['char']
})、
PartitionKey ='a01'
)。
logging.info( "新しいデータスコアの入力:%s"、test_data)
データをプルするには、プロデューサーに送られるデータをリッスンするための別のスクリプトが必要です。 そのために、ShardIteratorを使用して、Kinesisに入力されているすべてのデータにアクセスできます。 このようにして、Kinesisのリアルタイムおよび将来のレコードにアクセスできます。
消費者の作成
以下のコードを使用して、Pythonコンシューマーを作成します。
boto3をインポートする
jsonをインポートする
インポートシステム
インポートログ
logging.basicConfig(level = logging.INFO)
セッション=boto3.Session(region_name ='eu-west-1')
client = session.client('kinesis')
aws_kinesis_stream = client.describe_stream(StreamName ='DataProcessingStream)
shard_id = aws_kinesis_stream ['StreamDescription'] ['Shards'] [0] ['ShardId']
stream_response = client.get_shard_iterator(
StreamName ='DataProcessingStream'、
ShardId = shard_id、
ShardIteratorType ='TRIM_HORIZON'
)。
iterator = stream_response ['ShardIterator']
Trueの場合:
試す:
aws_kinesis_response = client.get_records(ShardIterator = iterator、Limit = 5)
iterator = aws_kinesis_response ['NextShardIterator']
aws_kinesis_response ['Records']のレコードの場合:
レコード内の「データ」およびlen(record ['Data'])> 0の場合:
logging.info( "受信した新しいデータスコア:%s"、json.loads(record ['Data']))
KeyboardInterruptを除く:
sys.exit()
上記の例では、データのみを印刷しています。
キネシスパイプラインの問題
キネシスは本当に有益ですが、課題と欠点がないわけではありません。 Kinesisの使用中に直面する重要な課題の1つは、「可観測性」と呼ばれます。
複数のAWSコンポーネントを使用すると、作成するシステムはますます複雑になります。 たとえば、Lambda関数をプロデューサーとコンシューマーとして使用し、それを異なるAWSストレージシステムに接続すると、依存関係とエラーの管理と追跡が非常に困難になります。
MBAに関連する人気の記事を読む
金融アナリストの給与–新入生と経験者 | HRの面接の質問と回答 | 米国でのMBAマーケティングのキャリアオプション |
人的資源のMBA後の米国での最高のキャリアオプション | セールスのトップ7のキャリアオプション | 米国で最も高額の金融業務:平均から最高 |
米国の金融におけるトップ7のキャリアオプション:必読 | 2022年のトップ5のマーケティングトレンド | 2022年の米国でのMBA給与[すべての専門分野] |
結論は
データのストリーミングとリアルタイムデータの操作が時間の必要性であり、私たちの世界がますます多くのデータを生成するにつれて増加することは間違いありません。 したがって、Kinesisのトリックを習得することに興味がある場合は、専門コースが役立ちます。
IIIT-BとLJMUのコラボレーションで提供されるupGradの機械学習とAIの科学のマスターは、データ探索の非常に基本的なことから始めて、NLP、ディープのすべての重要な概念に到達するのに役立つように設計された18か月の包括的なコースです。学習、強化学習など。 さらに、業界プロジェクト、360度のキャリアサポート、パーソナライズされたメンターシップ、ピアネットワーキングの機会など、機械学習とAIの習得に役立つさまざまな作業を行うことができます。
1. AWS Kinesisはデータをプルできますか?
Amazon Kinesisは、スケーラブルで耐久性のあるリアルタイムデータストリーミングソリューションであり、数千のソースからリアルタイムでGBのデータを継続的にキャプチャすることで機能します。
2. 1つのKinesisストリームに複数のコンシューマーを含めることはできますか?
はい、シャードイテレーターを使用すると、1つのKinesisストリームで複数のコンシューマーを提供できます。
3. AWS Kinesisはどの種類のキューで機能しますか?
AWS Kinesisは、運用とデータプロセスにおいてFIFO(先入れ先出し)です。