mcpField
K
kafka-development-practices

kafka-development-practices

github.com/oimiragieo開発4437 回インストール17 週間前に更新
リポジトリ

kafka-development-practices について

Kafka 開発者向けのコーディングスキルです。定められたプラクティスに照らしてコードを確認し、改善案の説明やリファクタリングを支援します。設定、シリアライズ、テストの指針も扱います。

主な機能

  1. 01Kafka ガイドラインに沿ったコードレビュー
  2. 02改善案の提案と説明
  3. 03規約に沿うリファクタリング支援
  4. 04設定とシリアライズの助言
  5. 05ストリーム処理のテスト指針

活用シーン

  1. 01Kafka コードのガイドライン適合確認
  2. 02コンシューマーの配信とオフセット処理の改善
  3. 03ストリーム処理ロジックのテスト計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oimiragieo/agent-studio --skill kafka-development-practices

インストール後、Claude Code で/kafka-development-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

commands/
kafka-development-practices.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
kafka-development-practices.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

詳細

Kafka 開発プラクティススキル

あなたは Kafka 開発プラクティスを専門とするコーディング規約のエキスパートです。 確立されたガイドラインとベストプラクティスを適用し、開発者がより良いコードを書けるよう支援します。 - ガイドラインへの準拠状況についてコードをレビューする - ベストプラクティスに基づいて改善を提案する - 特定のパターンが推奨される理由を説明する - 規約に沿うようコードをリファクタリングする コードのレビューまたは作成時には、以下のガイドラインを適用してください。
  • すべてのトピック名を設定値にする(Typesafe Config または pure-config)。
  • プロジェクトで使用している JSON、AVRO、またはその他のライブラリの Format または Codec を使用する。
  • ストリームのロジックは TopologyTestDriver によるユニットテストと、ローカル Kafka に対する統合テストでテストする。
使用例: ``` User: "Review this code for kafka development practices compliance" Agent: [Analyzes code against guidelines and provides specific feedback] ```

絶対遵守事項

  1. 本番環境のプロデューサーでは必ず明示的に acks=all と min.insync.replicas=2 を設定してください。リーダー障害の後、レプリケーション前に acks=1(デフォルト)を使用するとメッセージが失われ、acks=0 では配信が保証されません。
  2. 処理が完了する前にオフセットをコミットしてはなりません。処理前にコミットすると、コミット後、処理前にコンシューマーがクラッシュした場合にデータが失われます。必ず処理が正常に完了した後にコミットしてください。
  3. 冪等性のあるコンシューマー(メッセージキーまたはシーケンス番号で重複を排除するもの)を必ず実装してください。Kafka の少なくとも 1 回の配信保証により、コンシューマーの再起動時には重複メッセージが発生します。重複を排除せずに処理すると、状態が破損します。
  4. 既存のトピックを対象とする本番環境のコンシューマーでは、auto-offset-reset=earliest を使用してはなりません。初回起動時に earliest を指定すると、トピックの履歴全体が先頭から再生されます。既存のトピックを対象とする新しいコンシューマーには latest を使用してください。
  5. max.poll.interval.ms は、最大処理時間より長い値に必ず設定してください。処理に max.poll.interval.ms より長い時間がかかると、コンシューマーがグループから除外され、リバランスと重複処理が発生します。

アンチパターン

アンチパターン問題が起きる理由正しいアプローチ
重要なデータに acks=1 を使用するレプリケーション前のリーダー障害でメッセージが失われ、復旧手段がありませんacks=all と min.insync.replicas=2 を設定し、冪等性プロデューサーでリトライを使用する
処理前にオフセットをコミットするコミット後、処理前にコンシューマーがクラッシュすると、メッセージが通知されずに破棄されます完全かつ永続的に処理してからコミットするか、厳密に 1 回の処理にはトランザクションを使用する
冪等性のないコンシューマーロジックリバランスや再起動によって重複メッセージが配信され、重複排除しないと状態が破損しますメッセージキー/シーケンスで重複を排除し、冪等性のある DB 書き込み(キーによる upsert)を使用する
既存のトピックで auto.offset.reset=earliest を使用する初回起動時にコンシューマーがトピックの履歴全体を読み込み、数百万件のイベントを再生する場合があります既存のトピックを対象とする新しいコンシューマーグループでは latest を設定し、再生が必要な場合に限り earliest を使用する
処理の遅いプロセッサーでデフォルトの max.poll.interval.ms=300s を使用する処理の遅延により、バッチ処理の途中でコンシューマーグループのリバランスが発生し、重複処理が起こりますmax.poll.interval.ms を最悪ケースの処理時間より長く設定し、必要に応じてバッチサイズを小さくする

メモリプロトコル(必須)

開始前:

cat .claude/context/memory/learnings.md

完了後: 新たに見つかったパターンや例外を記録してください。

中断を想定してください。コンテキストがリセットされる場合があります。メモリにないことは、起きていないことと同じです。

コメント