散らばったcronジョブに別れを告げる:Heartbeatの中央集権型タスクスケジューラ

2025-08-01
散らばったcronジョブに別れを告げる:Heartbeatの中央集権型タスクスケジューラ

Heartbeatは以前、スケジュールされたタスクを管理するために複数のcronジョブを使用していましたが、これによりメンテナンスコストが高くなり、頻繁なエラーが発生していました。この記事では、単一のデータベーステーブル`ScheduledTasks`と単一のcronジョブを使用して、すべてのスケジュールされたタスクを管理する、中央集権化されたデータベース駆動型のタスクスケジューラをどのように構築したかを説明しています。非同期処理のためにAWS SQSを活用することで、システムはタスクの信頼性の高い実行、再試行メカニズム、堅牢なモニタリングを保証します。このアプローチは、タスク管理の混乱、エラー処理の困難などの問題に対処し、新しいスケジュールされたタスクの追加を簡素化します。

続きを読む

型駆動開発:型システムが複雑なプログラミング問題を簡素化する

2024-12-19
型駆動開発:型システムが複雑なプログラミング問題を簡素化する

この記事では、「型駆動開発」の概念を探求しています。著者は、大規模なHeartbeat Typescriptプロジェクト(30万行以上)での経験に基づき、Typescriptの型システムが複雑なプログラミング問題をどのように簡素化するのかを示しています。中心となる考え方は、型システムを効果的に活用し、型をアプリケーションのあらゆるレイヤーで自由に流動させることで、型定義から新しい機能の設計を始め、不正な状態を表せないようにし、データの検証ではなく解析を行い、コードの正直さと特異性を維持することで、バグを大幅に削減し、開発効率を向上させることができるというものです。また、純粋関数を型ブリッジとして使用する方法、型システムをコードのイントロスペクションツールとして使用する方法なども共有しており、必要に応じて型システムの制約を回避する方法についても触れています。

続きを読む