0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

12/21)Kafka ビギナー — 高速・大容量データ連携の基礎と仕組み

Last updated at Posted at 2025-12-20

Kafka とは何か

はじめに

アドベントカレンダー12/21 = 21記事目

多くの Web サービスやバックエンドシステムでは、「あるシステムが生成したデータを別のシステムで処理する」という流れがあります。

特に、ログ収集や注文データ、センサーデータなど「大量データを高速かつリアルタイムでやり取りしたい」場合に便利なのが、メッセージキュー/ストリーミング基盤です。

Apache Kafka(以下 “Kafka”)は、この中でも「高スループット」「耐障害性」「スケーラビリティ」に優れており、多くのサービスで採用されています。

この記事では、Kafka について調べた事をアウトプットしたいと思います。


Kafka を一言でいうと

「データ(メッセージ)をシステム間でやりとりするための、高速でスケーラブルな中継役」 です。

  • 「あるシステム(Producer)がデータを投げる」
  • 「Kafka(Broker)がそのデータを受け取り、蓄えておく」
  • 「別のシステム(Consumer)が後でそのデータを受け取る」
    という流れで、システム同士のつなぎ役/バッファの役割を果たします。 (Apache Kafka)

Kafka の構成要素 — 用語の意味

用語 説明
Producer(プロデューサー) データを生成し、Kafka に送る側のシステム/処理。メッセージを「送信」する役割。 (Apache Kafka)
Broker(ブローカー) Kafka のサーバー。受け取ったメッセージを受け取り、保存・管理する。Kafka クラスターは複数の Broker からなる。 (Apache Kafka)
Topic(トピック) メッセージのカテゴリや “箱”。Producer は Topic を指定してメッセージを送る。Consumer はその Topic を購読。 (Apache Kafka)
Partition(パーティション) Topic を分割した単位。データを複数の Partition に分けて保存することで、並列処理やスケーラビリティを実現。 (upsolver.com)
Consumer(コンシューマー) Kafka に送られたメッセージを受け取って処理する側のシステム。Consumer は Topic を購読する。 (Apache Kafka)
Consumer Group(コンシューマーグループ) 複数の Consumer をまとめた “グループ”。同じグループの Consumer で Partition を分担することで、並列処理・負荷分散が可能。 (Apache Kafka)

Kafka の特徴・強み

Kafka が他のメッセージキューや単なるキューイングシステムと比べて選ばれる理由は次の通りです。

  • 高速 & 大量データ対応 — Partition やクラスタ構成により、非常に高スループットで大量のメッセージを処理可能。 (Amazon Web Services, Inc.)
  • 💾 データの永続性・保持 — メッセージは一度送られて終わりではなく、一定期間ディスクに保存されるため、後から読み直したり複数回消費したりできる。 (GeeksforGeeks)
  • 🔁 複数の Consumer に同じデータを配信可能 — Publisher/Subscriber 型の処理も、キュー型の分散処理もどちらも実現可能。 (Cedalo)
  • ⚙️ スケーラビリティ & 冗長性 — Broker を複数立て、Partition を分散・レプリケーションすることで、負荷分散・フェールオーバーに強い。 (upsolver.com)
  • 🔄 柔軟な再処理 — Consumer は「どこまで読んだか(offset)」を管理できるため、必要に応じて過去メッセージを再取得・再処理できる。 (Apache Kafka)

どんなとき使う? Kafka の利用シーン

  • EC サイトで「注文発生 → 注文処理システム・在庫システム・通知システム」など複数システムに同じイベントを通知
  • Web アプリ/スマホアプリでのアクセスログや操作ログを集約 → リアルタイムでの分析やバッチ処理
  • IoT デバイスからの大量センサーデータやイベントデータを高速で受け取り、別システムで処理
  • リアルタイム分析+後からの集計やバッチ処理を組み合わせたい場合 など
    「メッセージキュー」「イベント駆動」「ストリーム処理」が必要な場面にマッチします。

キュー(Queue)との違い・注意点

Kafka は「ただのキュー」ではなく、“ログベースのストリーム処理基盤” という性質があります。従来のキューメッセージシステム(たとえば一度取られたメッセージは消えるもの)とは異なります。 (Amazon Web Services, Inc.)
たとえば:

  • メッセージは消えずに保存され、何度でも読み直せる
  • 複数の Consumer グループが同じ Topic を異なる目的で購読できる
  • Partition 単位で並列/分散処理ができる → 高スループット
  • ただし「順序保証」は Partition 内でのみ。複数 Partition にまたがると順序保証は弱いので注意。 (Apache Kafka)
    つまり、RabbitMQ や SQS など典型的なキューと同じ「使い所」ではあるものの、Kafka を使う/設計するならその特性(ログベース・Partition・Consumer‑group など)を理解することが大事
    ここら辺は今後じっくり学んでいきたい内容…。

さいごに

Kafka は「大量データ」「リアルタイム性」「複数システム間のメッセージング」「スケール・耐障害性」が求められるシステムで非常に強力なツールです
一方で、「キュー型」と「ストリーム/ログ型」の概念を混同せずに、「何のデータを・誰が・どう使うか」を意識して設計することが大切だと感じています
あるプロジェクトで「たくさんログを集めたい」「イベントを多数のシステムに配りたい」「リアルタイム処理したい」といった要件があるなら、Kafka を使う/設計を検討する価値は高いということがわかりました。
この記事が、Kafka をこれから学ぼうとする人の参考になれば幸いです


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?