分散・耐障害性タスクキュー
- Hatchet は、管理が難しい既存のキューや pub/sub システムの代わりに、障害から回復し、並行性、公平性、レート制限といった問題を解決できる、耐久性のあるワークロードを設計できる。
- 独自のタスクキューや pub/sub システムを管理する代わりに、Hatchet を使うことで、最小限の設定やインフラで関数を一連のワーカー間に分散できる。
Hatchet の利点
- 超低レイテンシかつ高スループットのスケジューリング
- Hatchet は平均開始時間
25ms の低レイテンシキューを基盤として構築されており、リアルタイムな対話性とミッションクリティカルな処理に必要な信頼性を高い水準で両立する。
- 並行性、公平性、レート制限
- FIFO、LIFO、Round Robin、Priority Queues のような戦略を Hatchet の組み込み機能として実装し、最小限の設定で一般的なスケーリング上の問題を回避する。
- 設計上の復元力
- カスタム再試行ポリシーと統合されたエラー処理により、Hatchet は一時的な障害からタスクを迅速に回復できることを保証する。
強化された可視性と制御
- 可観測性
- すべての実行は完全に検索可能で、問題を迅速に特定できる。
- (実用的な)耐久性のある実行
- イベントをリプレイし、ワークフローの特定の段階から手動で実行を再開できる。
- Cron
- 単発スケジューリング
- 特定の時刻と日付に関数実行をスケジューリングできる。
- スパイク保護
- トラフィックの急増を緩和し、システムが処理できる分だけを実行する。
- 段階的ストリーミング
- バックグラウンドワーカーの進行状況に応じて更新を購読できる。
使用例
- Generative AI のための公平性
- 一部の多忙なユーザーがシステムを圧迫しないよう、Hatchet を使ってワーカーへリクエストを公平に分配できる。
- ドキュメント索引作成のためのバッチ処理
- Hatchet はドキュメント、画像、その他のデータの大規模なバッチ処理に対応し、失敗時には途中から再開できる。
- マルチモーダルシステムのためのワークフローオーケストレーション
- Hatchet はマルチモーダルな入力と出力を調整でき、DAG スタイルの実行全体を処理できる。
- イベント駆動処理のための正確性
- 外部イベントやシステム内部イベントに反応し、自動的にイベントをリプレイできる。
クイックスタート
- Hatchet は Python、Typescript、Go 向けのオープンソース SDK をサポートしている。
- 始めるには Hatchet のドキュメントを参照するか、クイックスタート用リポジトリを確認できる。
SDK リポジトリ
- Hatchet は標準で Go SDK を提供している。
- Typescript SDK も利用できる。
- SDK に関する問題が発生した場合は、該当リポジトリで issue を提出できる。
Hatchet にマネージドクラウド版はあるか?
- はい。ベータ期間中は、製品の構築と改善に協力してくれる一部の企業にクラウド版を提供している。
Hatchet にセルフホスティング版はあるか?
- はい。セルフホスティング向けのオープンソース Docker コンテナの手順はドキュメントで確認できる。
代替手段と比べてどうか?(Celery、BullMQ)
- なぜまた別の管理キューを作ったのか?
- 特に DAG スタイルの実行に依存する、トランザクション全体のキューイングの利点を備えたものを目指しており、Postgres がほとんどのキューイング用途を置き換えられると強く考えている。
- 多くのキューは Redis ベースで、注意しないと OOM によるデータ損失が起こり得るが、PG を使えばこうした問題を避けられる。
問題点
- 発見したバグは Github issue を通じて報告できる。
- プロジェクトは初期段階のため、複雑な機能要望の前に、まず Discord で連絡を取るのが望ましい。
貢献したいなら
- 貢献ドキュメントを参照し、Discord の #contributing チャンネルで取り組みたい内容を知らせれば、プロジェクトの方向性づくりやコラボレーションがしやすくなる。
GN⁺ の意見
- Hatchet は分散システムにおけるタスクキュー管理の複雑さを減らし、高可用性と耐障害性を提供するソリューションであり、特に大規模データ処理やリアルタイムサービスで有用と思われる。
- 現在市場で使われている他のキューシステムと比べ、Postgres を使うことで得られる安定性と拡張性は注目すべき利点である。
- Hatchet 導入時の検討事項としては、既存インフラとの互換性、データ移行、そしてチームの技術力がある。
- Hatchet が提供する高度な可視性と制御機能は、システム性能の監視や問題解決を容易にし、開発者や運用チームの負担を減らせる。
- Hatchet はまだベータ段階のため、安定性と機能性の面で十分な検証が必要であり、大規模システムへ適用する前に十分なテストが必要である.
1件のコメント
Hacker Newsのコメント
SKIP LOCKEDなどを使う方法も検討したが、その前に転職したという。Hatchetがこのようなユースケースに適しているのか気にしている。