BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース マイクロサービスのためのオーケストレーションエンジンであるNetflix Conductor

マイクロサービスのためのオーケストレーションエンジンであるNetflix Conductor

原文(投稿日:2016/12/20)へのリンク

Netflixは、昨年 “Conductor” と呼ばれるオーケストレーションエンジンを開発しプロダクションで運用してきた。この間、彼らは線形のワークフローから、複数の日にまたがって実行される動的なワークフローまで約260万のプロセスワークフローを実行した。現在 Conductor はオープンソースで公開されており、ワークフローオーケストレーションに関心のあるすべての人が利用できる。

NetflixのConductor開発者ドキュメントによれば、このエンジンの主な特徴は次のとおりだ。

  • 複雑なワークフローを作成することができる
  • タスクはマイクロサービスによって実行される
  • ワークフローのブループリントはJSON DSLで記述される
  • エンジンはプロセスの実行に関する可視性とトレーサビリティを提供する
  • タスクの一時停止、再開、再起動、停止を行うことができる
  • タスクの実行は通常は非同期だが、同期して実行するように強制できる
  • 数百万のプロセスフローにスケールすることができる

Conductorのアーキテクチャ図は次のとおりだ。

conductor-architecture

APIとストレージ層の両方がプラガブルであるため、異なるキューとストレージエンジンを使用することができる。NetflixはDynomiteをストレージに使用するが、インタフェースを実装さえすれば、異なるソリューションに切り替えることができる。

ワークフロータスクには、リモートマシン上で実行されるユーザータスクであるWorkerと、エンジンのJVM上で実行されるSystemの2種類がある。後者は、Workerタスクの実行においてブランチ、フォーク、ジョインすることを計画する。Workerタスクは、HTTPまたはHTTP/2上のgRPC経由でConductorと通信する。

Netflixは、彼らの試験において十分にスケールしないことを理由に、コレオグラフィエンジンではなくオーケストレーションエンジンを開発することにした。言及された問題は次のとおりだ。

  • プロセスフローは、複数のアプリケーションのコード内に「埋め込まれて」います。
  • 多くの場合、入出力、SLAなどあちこちで密接な結合と仮定があり、変化するニーズに適応することを難しくしています。
  • 「プロセスXでどれくらいのことを達成したのか?」に体系的に答える方法はほとんどありません。

ConductorはGitHub上でApache License 2.0のもと公開されている。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT