Uber、ワークフロープラットフォームCadence v1.0.0を発表 その機能は?スケールと信頼性を追求し構築

Uberは、オープンソースのコード駆動型ワークフローオーケストレーションプラットフォーム「Cadence」の新バージョン「Cadence v1.0.0」のリリースを発表した。

» 2023年08月23日 08時00分 公開
[@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

 Uberは2023年6月22日(米国時間)、「Cadence」の新バージョン「Cadence v1.0.0」のリリースを発表した。Cadenceはエンジニアがワークフローを大規模に簡単に構築および管理できるオープンソースのプラットフォームだ。同社が6年前から開発し、Uberを始めDoorDash、HashiCorp、Coinbaseなどの企業で1000を超えるサービスに利用されている。複雑なシナリオを処理するためにシームレスに拡張でき、開発者が選択したネイティブプログラミング言語を使ったワークフローの構築も可能だ。

Cadenceとは?

 Cadenceはオープンソースのコード駆動型ワークフローオーケストレーションプラットフォームだ。

 従来、ワークフローはタスクの順序と依存関係を定義するためにDSL(ドメイン固有言語)や設定ファイル(configs)で記述されてきた。この方法はワークフローオーケストレーションを簡素化する一方で、ユーザーがワークフローで行えることを制限し、DSLや設定が複雑化して実用的でなくなることがあった。ユースケースや複雑性の増大により、ワークフローにネイティブなプログラミング言語を使用してプログラムとして自由に記述する必要が生じ、Cadenceワークフローが登場した。

 Cadenceワークフローは、ネイティブのプログラミング言語を使用して構築されるプログラム。Cadence APIにより、純粋なソフトウェアを書く場合のような制約や変更なしに記述できる。Cadenceワークフローは、ワークフローとプログラムの間をつなぎ、プログラムを簡単にスケーリングできる。また、ダウンタイムを最小限に抑え、信頼性のあるスケーラブルなトランザクショナルな処理が可能で、耐障害性を持つこともできる。また、外部との相互作用のためのAPI、監視可能性のためのメトリクス、検査のためのユーザーインタフェースを提供する。

 開発者はCadenceを使うことで次の2つのことが可能になる。

  • あらゆる規模で機能するサービスを作成する
  • デフォルトでサポートすることで一般的なオーバーヘッドを除去する
現代の分散サービスの非機能要件(提供:Uber)

 このサービスではコーディングとテスト以外のプロセスは共通である。Cadenceは共通部分の自動化を達成した。

Cadenceを使用して構築されるステートフルサービスに必要な要件(提供:Uber)

Cadenceの機能向上

  • 生産性向上:2021年の社内調査では、同じ機能を実装するためのコードが40%少なくなった
  • 信頼性の向上:トランザクションの保証、大規模な高可用性
  • コストと複雑性の削減:ドメイン内のリソースの共有
  • ワークフローの簡素化:ビルトインUI、メトリクス、ログなど
  • 人的エラーから保護:バージョン管理、リプレイ、シャドーイング

V1リリース

 Cadenceはリリースから6年を超えている。これまでのリリース形式は「v0.x.x」だったが、機能セット、規模、堅牢(けんろう)性で設定したマイルストーンに到達したためv1としてリリースした。

機能セット

 Cadenceが提供する機能の一部を紹介する。

  • デフォルトAPI:ワークフローへのAPIとしてstart,、signal、schedule(distributed cron)、terminate、cancelなど
  • メトリクス:主なメトリクスとしてhealth、volume、latency、error、heartbeat、shadowなど
  • デバッグ性:ワークフローやアクティビティーへの入出力、APIコール、実行タイムライン
  • カスタム可視性:ワークフローの検索可能な属性により、何十億ものインスタンスの中からフィルタリングや特定のワークフローの追跡が可能
  • ユーザーオペレーションエンドポイント:ユーザーは、必要に応じてCLI、クライアントAPI、またはWebエンドポイントを使用して、ドメインとワークフローを操作できる

規模

 Cadenceは多くの企業で使用されており、Uberだけでも月間120億回以上、2700億アクションを実行している。

 Uberでは、T0(最も重要度の高いサービス)からT5サービスまで、1000以上のサービスを動かしている。長時間のワークフロー、同期インタラクション、マイクロサービスオーケストレーション、バッチ処理、分散クーロン、分散シングルトン、データパイプライン、モデルトレーニング、その他多くのアプリケーションに使用されており、数年にわたって前年比100%の成長を維持している。

Uberにおけるケイデンスの規模(提供:Uber)

堅牢性

 Cadenceは規模の拡大とともに、動作面でも99.9%の可用性の保証に加えて運用コストの削減という目標を掲げ、2022年を信頼性の年としてUberは投資を行った。「その結果、運用負荷が軽減されるとともに、全ての面での改善がなされ、Cadenceはv1リリースに十分な成熟を遂げることができた」(Uber)

V2ブランチ

 今後Uberはv2ブランチでより現代的なエクスペリエンスを提供する意向を示している。これまでCadenceリリースでの変更は全て下位互換性があり、今後のv1.xxリリースでもこれを維持する予定だ。しかし、下位互換できない基本的な変更とAPIの変更に関して、v1からアップグレードする方法を提供するとしている。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。