AWS エバンジェリストシリーズ AWSの基礎を学ぼうAmazon Managed Streaming for Apache Kafka (MSK)Apache Kafkaクラウドにおけるキューの使い方HandsonProducerConsumerまとめ
AWS エバンジェリストシリーズ AWSの基礎を学ぼう
Amazon Managed Streaming for Apache Kafka (MSK)
Apache Kafka
クラウドにおけるキューの使い方
- AWSにおけるSQS/EventBridge/Kinesisなど
- 疎結合アーキテクチャを構成する上で、Web/APサーバの中に保存せずに処理を冗長性、可用性をもたせるうえで必要な機能
- Web/APサーバにデータを保存せずに、接続しているクライアントのセッション情報やステートレスな構成
- そこでキュー管理することで、誰が、どこまで、どういう処理を行っているのかを把握
- Web/APサーバにデータを保存せずに、接続しているクライアントのセッション情報やステートレスな構成
- 疎結合アーキテクチャを構成する上で、Web/APサーバの中に保存せずに処理を冗長性、可用性をもたせるうえで必要な機能
- Kinesis
- Producer/Consumer
- Pull型
- Producer/Consumer
- SNS/SQS
- Publisher/Subscriber
- Push型(fan out型)
- Publisher/Subscriber
Handson
- リポジトリ https://github.com/harunobukameda/Amazon-MSK
- カスタム作成
- ノードの分散など細かい制御可能
- ストレージ
- Kinesisは3AZごとに自動で分散配置してくれる
- Kafkaは自分でブローカーとなるインスタンスを定義する必要がある
Producer
$ bin/kafka-topics.sh --create --zookeeper z-3.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:2181,z-2.msktutorialcluster.jw517k.c1.kafka.us-we
st-2.amazonaws.com:2181,z-1.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:2181 --replication-factor 3 --partitions 1 --topic MSKTutorialTopic
Created topic MSKTutorialTopic.
$
$
$ ./kafka-console-producer.sh --broker-list b-3.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:9092,b-2.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws
.com:9092,b-1.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:9092 --producer.config client.properties --topic MSKTutorialTopic
>hello
>world
>test
>kafka
>
Consumer
$ ./kafka-console-consumer.sh --bootstrap-server b-3.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:9092,b-2.msktutorialcluster.jw517k.c1.kafka.us-west-2.amaz
onaws.com:9092,b-1.msktutorialcluster.jw517k.c1.kafka.us-west-2.amazonaws.com:9092 --consumer.config client.properties --topic MSKTutorialTopic --from-beginning
hello
world
test
kafka
<video width="6400" height="480" controls>
<source src="https://drive.google.com/file/d/1eJT5OgdYJPceC0hVxsht6pltxE8M9ZYk" type="video/mp4">
</video>
まとめ
今はクラウドが浸透してきたからこそ、当たり前になっている Pub/Subモデルですが、
そういえば以前、IBM MQを使っているシステムを横で見ていました。
当時はオンプレミスであり、MQってなんだろうとぼんやりとした疑問でしたが、
今となっては10年前にそこで分散メッセージング処理をしていたことを考えると、
当時としてはすごい構成だったんだと改めて感じました。
本日のハンズオン内容は、Apache Kafkaをつかうというより、
キューメッセージ管理とは?を改めて学ぶことを目的として置いていたので、
そのあたりはスッキリしてよかったです。