dbos-typescript について
DBOSの永続ワークフローで耐障害性の高いTypeScriptアプリを構築する開発者向けのベストプラクティス集です。設定、ワークフロー、キュー、通信、テスト、DBOS 4.xからの移行指針を扱います。
主な機能
- 01DBOS TypeScript 5.xの指針
- 02ワークフローとステップの設計
- 03キューと並行処理の実践
- 04ワークフロー通信パターン
- 05テストとアップグレードの指針
活用シーン
- 01TypeScriptアプリへのDBOS導入
- 02永続ワークフローとステップの設計
- 03キューによる並行処理の制御
- 04DBOS 4.xを使うプロジェクトのアップグレード
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dbos-inc/ agent-skills --skill dbos-typescriptインストール後、Claude Code で/dbos-typescriptを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdreferences/_sections.mdadvanced-patching.mdadvanced-serialization.mdadvanced-shared-database.mdadvanced-upgrading.mdadvanced-versioning.mdclient-enqueue.mdclient-setup.mdcomm-events.mdcomm-messages.mdcomm-streaming.mdlifecycle-config.mdlifecycle-express.mdpattern-classes.mdpattern-debouncing.mdpattern-idempotency.mdpattern-scheduled.mdpattern-sleep.mdqueue-basics.mdqueue-concurrency.mdqueue-deduplication.mdqueue-delay.mdqueue-listening.mdqueue-management.mdqueue-partitioning.mdqueue-rate-limiting.mdstep-basics.mdstep-retries.mdstep-timeouts.md詳細
DBOS TypeScript のベストプラクティス
DBOS の永続ワークフローを使用して、信頼性と耐障害性に優れた TypeScript アプリケーションを構築するためのガイドです。DBOS TypeScript 5.x(@dbos-inc/dbos-sdk)が対象です。プロジェクトが 4.x を使用している場合、または削除された API(new WorkflowQueue、@DBOS.scheduled/DBOS.registerScheduled、partitionQueue、priorityEnabled、@DBOS.requiredRole、dbos-config.yaml ベースの設定)を使用している場合は、references/advanced-upgrading.md を参照してください。
適用する場面
次のような場合に、これらのガイドラインを参照してください。
- 既存の TypeScript コードに DBOS を追加するとき
- ワークフローとステップを作成するとき
- 同時実行制御にキューを使用するとき
- ワークフロー間の通信(イベント、メッセージ、ストリーム)を実装するとき
- DBOS アプリケーションを設定して起動するとき
- 外部アプリケーションから DBOSClient を使用するとき
- DBOS アプリケーションをテストするとき
優先度別のルールカテゴリ
| 優先度 | カテゴリ | 影響度 | プレフィックス |
|---|---|---|---|
| 1 | ライフサイクル | CRITICAL | lifecycle- |
| 2 | ワークフロー | CRITICAL | workflow- |
| 3 | ステップ | HIGH | step- |
| 4 | キュー | HIGH | queue- |
| 5 | 通信 | MEDIUM | comm- |
| 6 | パターン | MEDIUM | pattern- |
| 7 | テスト | LOW-MEDIUM | test- |
| 8 | クライアント | MEDIUM | client- |
| 9 | 高度な機能 | LOW | advanced- |
重要なルール
インストール
常に DBOS の最新バージョンをインストールしてください。
npm install @dbos-inc/dbos-sdk@latest
DBOS の設定と起動
DBOS アプリケーションでは、ワークフローを実行する前に DBOS を設定して起動する必要があります。
import { DBOS } from "@dbos-inc/dbos-sdk";
async function main() {
DBOS.setConfig({
name: "my-app",
applicationVersion: "0.1.0",
systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
});
await DBOS.launch();
await myWorkflow();
}
main().catch(console.log);
新しいアプリケーションを作成するときは、applicationVersion を "0.1.0" に設定してください。省略すると、DBOS はワークフローのソースコードから不透明なハッシュを生成します。既存のアプリケーションを編集するときは、設定済みのバージョンを変更しないでください。変更はデプロイに関する判断となります(references/advanced-versioning.md を参照)。
ワークフローとステップの構成
ワークフローはステップで構成されます。複雑な処理を行う関数や外部サービスにアクセスする関数は、DBOS.runStep を使用してステップとして実行する必要があります。
import { DBOS } from "@dbos-inc/dbos-sdk";
async function fetchData() {
return await fetch("https://api.example.com").then(r => r.json());
}
async function myWorkflowFn() {
const result = await DBOS.runStep(fetchData, { name: "fetchData" });
return result;
}
const myWorkflow = DBOS.registerWorkflow(myWorkflowFn);
主な制約
- ステップ内からワークフローを呼び出したり、開始したり、キューに登録したりしないでください
- ワークフローの開始にスレッドや制御されていない並行処理を使用しないでください。
DBOS.startWorkflowまたはキューを使用してください - ワークフローは決定論的である必要があります。非決定論的な処理はステップ内で行ってください
- ワークフローやステップからグローバル変数を変更しないでください
- キュー(
DBOS.registerQueue)の登録とスケジュール(DBOS.applySchedules/DBOS.createSchedule)の作成は、DBOS.launch()の後に行ってください。これらはシステムデータベースに保存されます - ステップが永続化されるのは、ワークフローから呼び出された場合のみです。ワークフロー外では通常の関数呼び出しとして実行されます
- DBOS Conductor(
conductorKey、または DBOS Cloud へのデプロイ)に接続するには、@dbos-inc/dbos-enterpriseを@dbos-inc/dbos-sdkと同じマイナーバージョンでインストールする必要があります
使用方法
詳しい説明と例については、個別のルールファイルを参照してください。
references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md
references/advanced-upgrading.md
references/advanced-shared-database.md
複数のアプリケーションで 1 つのシステムデータベースを共有する場合は、必ず DBOSClient に applicationName を設定し、references/advanced-shared-database.md を参照してください。