見出し画像

AWS:Amazon MSKについて

みなさん、こんにちは。ちゃみみです。

今日は、Kafkaについてブラックベルト記事をサマッてみました。試験対策の備忘録として。

MSKって何の略やねん!ってとこなんですが、Amazon Managed Streaming for Apache Kafka
と呼ぶらしいです。
そして何者?って話なんですが、分散データストリーミング・プラットフォームでありスケーラビリティに優れた、パブリッシュ・サブスクライブ・モデルの分散メッセージング基盤とのこと。

Kafkaの構成として、クライアントと呼ばれるプロデューサーとコンシューマーが存在し、
プロデューサーは、メッセージの発行(パブリッシュ)を行う
コンシューマーは、メッセージの購読(サブスクライブ)を行う

このクラスターって複数のブローカーで構成され、トピック内のパーティションを分散キューとしてブローカーに配置してメッセージを管理する感じでこのクラスターを経由してプロデューサーは、クラスターにメッセージを送信、コンシューマーはクラスターからメッセージを取り出して利用する仕組み。

ちょいちょい聞きなれない用語が出ていますが、Kafkaのクラスター構成↓
ブローカー:クラスターとして動作して、データの受配信を担当する。
トピック:メッセージを種別で管理する。
パーティション:ブローカー上に分散配置され、トピックのメッセージが格納される。


トピックとパーティションの関係について、メッセージを冗長化を確保するために複数のレプリカを構成している。

↑でリーダーとフォロワーレプリカがあるが、これらの間でレプリカの状態が定義されていてリーダーとフォロワーが同じ状態のレプリカを「InSyncReplica」と呼んでいて、一定時間同期できない場合は、「OutSyncReplica」と呼ぶ。
InSyncReplicaの設定は、min.insync.replicasパラメータで設定をする。

プロデューサーは、トピックと値を指定することで書き込みを行い、各パーティションへのメッセージの書き込みはリーダーレプリカでのみ実施される。

コンシューマーのメッセージの読み込みについてもプロデューサーと同じく、リーダーレプリカでのみから行われる。

オフセットという登場サービスについて
これって、メッセージがパーティションに入れられた際に付与されるシーケンス番号でZookeeper、Kafka自体が保存していて、コンシューマーが追跡しているとのこと。
で、このオフセットによってコンシューマーが継続的にKafkaに保存されるメッセージの読み出し履歴を管理することが可能である。


AmazonMSKの監視についてのまとめ~
・CloudWatchでメトリクス監視が前提。
・クラスターのモニタリングレベルが選択可能で以下より選択。
→基本モニタリング:無料
→拡張ブローカーレベルモニタリング:有料
→拡張トピックレベルモニタリング:有料

セキュリティのまとめ~
・データの保護
→保存データの暗号化:基本KMSで暗号化、ManagedCMKかカスタマーCMK
→データ通信の暗号化:TLS暗号化※通信の暗号化をするとパフォーマンスは約30%低下

・IAMによる権限管理
→IAMポリシー、ロール制御
→タグ付けとタグベースのIAM設定

・クライアントの認証
→TLSクライアント認証:クライアントとブローカー間の通信のTLS暗号化を有効化する

・コンプライアンス
→PCI、HIPAA BAAの認証


構成管理にあたって、クラスターを更新するとブローカーとの順次の接続断が発生するので注意する。
具体的にクラスターのステータスは更新中となり、ブローカーはローリングアップグレードされて順次接続断が発生する。

クラスターのスケーリングについては、大きく3つカテゴライズされており
・ストレージの拡張:増やせても減らすことは今のところできない
・ブローカー数の拡張:ストレージ同様増やせても減らせない
・ブローカーサイズの拡張:BlackBelt発行時点で未サポート状態
そのため、拡張検討は慎重に行う必要があることに注意。


以上がざっくりMSKのまとめになります。

2021年11月01日

以下、宣伝です。
仲間も募集中なので、気になる方は↓の記事を覗いてみてくださいませ。
いい会社だと思いますよ。


いいなと思ったら応援しよう!