検索
特集/連載

Netflixも採用しているアプリケーション状態管理プラットフォーム複雑性のキーは「状態管理」

状態管理はアプリケーション開発において重要かつ面倒な機能だ。バグやセキュリティホールの温床であり、トラックは難しい。この部分が簡便化される意義は極めて大きい。

Share
Tweet
LINE
Hatena

 Temporal社は、ワークフローサービス「Amazon Simple Workflow」(Amazon SWF、文末参照)の設計と開発を主導していた2人のアプリケーション状態管理専門家が設立した企業だ。

 アプリケーション状態管理とは、任意の時点におけるアプリケーションの状態を把握するために、ビジネストランザクション(あるいはセッション)を構成する複数のデータフローでアプリケーションへの入力に関する情報を維持するプロセスを指す。

 「コンピュータサイエンスでは、ユーザーがプログラムに投入する情報を『入力』と呼び、変数または定数として保存された入力に応じたアプリケーションの様相を『状態』という。状態は、セッション全体を形成する情報の集合体とも表現できる」とTechTargetのトム・ノール氏は説明する。

 話をTemporal社に戻そう。同社の「Temporal」はアプリケーションの状態を管理するためのプラットフォームだ。


iStock.com/metamorworks

 Temporal社のマキシム・ファテエフ氏(共同設立者兼CEO)は言う。「平均的なビジネスアプリケーションは、数十のステートフルなサーバやサービスにまたがる形で稼働している。これは柔軟性やスケーラビリティの点では優れているが、アプリケーションの不安定さが増し、トラブルシューティングや機能強化を難しくしている」

 このコメントは、クラウドデプロイのメリットは非常に大きいが、クラウドアプリケーションが複雑になるという代償は耐え難いという感情を表している。

 コンテナ化とサービスベースのアーキテクチャでは、時間がかかり、エラーが生じやすいプロセスである状態管理にエンジニアが関わる必要があるとも言える。このプロセスでは、ソフトウェア開発の焦点はビジネスロジックから不安定な内部の仕組みに移る。

 「アプリケーションの一貫性を確保するため、開発者はデータベーストランザクションを利用してきた。これはスケーラブルなクラウドアプリケーションでは選択肢になり得ない。まとまりのあるアプリケーションエクスペリエンスに見せかけるために、キュー、データベース、cronジョブなどのインフラを大まかに組み立てることを余儀なくされている」(ファテエフ氏)

 Temporalはステートフルなアプリケーションに一貫性のあるバックエンドを提供し、言語、ツールスタック、デプロイ環境を選んで使えるようにする。

Netflixの選択

 Netflixは次世代CI/CDプラットフォームの基盤にTemporalを選択した。Temporalが開発ワークフロー内部でロジックを作成するため、アプリケーションの一貫性確保や障害からの保護を目的とするロジックの作成時間が短縮されている。

 Netflixのロブ・ツィエナート氏(シニアソフトウェアエンジニア)は言う。「Netflixは次世代CI/CDプラットフォームの開発に際し、不可欠なコアコンポーネントとしてTemporalを使っている。当社はこのプラットフォームを世界中のクラウドプロバイダーへの高速かつ安全で信頼性の高いソフトウェアデリバリーに活用している」

Temporalの存在意義

 クラウドアプリケーション構築の複雑さにより、状態管理機能は管理以前の様相を呈していることは驚くに当たらない。複数のデータフローが関連するアプリケーションの入力に存在するタスク間の依存関係の管理、スケジューリング、同時実行ロジックの役割と要件は、ポイント・アンド・クリックで解決できる問題でないことは分かっている。そこに、Temporalの存在意義がある。

Amazon SWFとは

 AWSは、Amazon SWFによって分散コンポーネント間でタスクを調整するアプリケーションの構築が容易になるとしている。「Amazon SWFでは、アプリケーションのコンポーネントが実行する作業の論理的な単位をタスクと呼ぶ。アプリケーション全体のタスクを調整するには、アプリケーションの論理的な流れに従ってタスク間の依存関係、スケジューリング、同時実行性を管理する必要がある」

 Amazon SWFを利用すれば、タスクの進行状況の追跡やタスクの状態管理といった複雑さについて懸念することなく、タスクの実装と調整を制御できる。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る