Kafka は『データプラットフォーム』の中核
Apache Kafka は大規模ストリーミング基盤の事実上の標準です。本記事では編集部の視点で、本番運用の要点を公開情報をもとに整理します。キューシステム設計 もご参考に。
Kafka の特徴
(1) 分散ストリーミングプラットフォーム。(2) 順序保証 (partition 内)。(3) 永続性 (Log + Replicate)。(4) 高スループット:秒間100万メッセージ級も。(5) Exactly-once セマンティクス(公開情報をもとに)。
Topic 設計
(1) パーティション数:並列消費の単位。(2) レプリケーション factor:3が推奨。(3) 保持期間:時間/サイズ。(4) 命名規約:service.domain.event 等。(5) スキーマレジストリ:Avro/Protobuf。
Producer の設計
(1) acks=all:耐障害性。(2) retries/idempotence。(3) batching:スループット改善。(4) compression:snappy/zstd。(5) partition strategy:key で振り分け。
Consumer Group
(1) 並列消費:partition 単位で分配。(2) auto commit vs manual。(3) offset 管理:再起動時の続き。(4) Rebalance:member 変化時。(5) Consumer 障害対応:自動的に再分配。冪等性設計 も合わせて。
Kafka Streams / Connect
(1) Kafka Streams:JVM ストリーム処理。(2) Kafka Connect:外部システム接続。(3) ksqlDB:SQL風のストリーム処理。(4) Schema Registry:型管理。(5) Flink との組合せ:高度な処理。
本番運用のポイント
(1) レプリカ間レイテンシ監視。(2) Consumer lag監視。(3) パーティション偏り。(4) ディスク使用率。(5) ZooKeeper or KRaft:管理サービス。Prometheus+Grafana 実践 もご参考に。
マネージドサービス
(1) Confluent Cloud:公式マネージド。(2) AWS MSK:AWS 内一体運用。(3) Aiven for Kafka。(4) Upstash Kafka:サーバーレス。(5) Redpanda:互換代替。セルフホスト運用は熟練度高め。
失敗しがちなパターン
(1) パーティション過少:並列性不足。(2) auto commit でデータロス。(3) Consumer lag 放置。(4) 大きすぎるメッセージ:1MB 超で性能低下。(5) 監視不在:気付かず障害。対策は、(1)スケール見越し、(2)manual commit、(3)アラート設定、(4)サイズ制限+S3 経由、(5)Datadog 等で監視、です。