大規模、複雑、分散システムに必要な新たなパラダイムと考え方 – Netflixの場合
NoSQL Now 2013 での2つ目の基調講演はNetflix社の Adrian Cockcroft氏で、講演のタイトルは「Netflixでどの様に、スケールラビリティと複雑さに対応しているか」であった。最初に書いたブログで Nathan Marz氏による講演について解説したが、Cockcroft氏の講演もテーマとしては、大規模、複雑、分散システムにいかに取り組むかを実例で示してい る。しかし、Marz氏とは異なった視点から述べているので面白い。この2つがすべてではないが、大規模、複雑、分散システムは我々が今までに知っていた システムの設計や運用とはかなり異なっているので、実際に設計・構築・運用しなければ分からないが、この2つの講演でその輪郭が見えてきた。
大 規模、複雑、分散システムに関しては想定外の故障はつきものだが、この講演ではそれにも関わらず、いかにしてスケーラビリティを維持しながら信頼性も維持 するかについてだった。想定外の故障・不都合を回避するためには、システムを冗長性とフォールトトレランスを加味して、設計・構築・運用されなければなら ない。では、どうすれば良いのか。それは、しばしばシステムの運用を意図的に妨げ、システムがそれに耐え得るように変更を加えることだ。つまり、こういっ た種類のシステムは故障や不都合が起こるのは当たりまえでそれに備えるべきだということだ。この講演そのものはオンラインでは見ることができないが、同様 のプリゼンは ここでみることができる。
Adrian Cockcroft氏
OODA loop
Adrian は現在、競争に勝つためには、新たな商品やサービスを素早く市場に出すことが肝要だと述べた。 今までの組織構造では「即市場へ」戦術を実行するには、問 題が多い。戦闘機の空中戦で使われるOODA Loopを例に引いて、新たな組織の構造について述べた。上の図のループは「objective (目的)」、「orient(方向づけ)」、「decide(決定)」、と「act(実行)」から成り立っている。それぞれには、企業関係に適用するため に、関連するキーワードが対応している。順番に「innovation(革新)」、「Big Data」、「culture(文化)」、そして「cloud」だ。
OODA loopを企業に応用
それぞれの項目に付けられている長方形のコメントは:
- Objective: 顧客をモニター、チャンスを掴む、競争できる素早い動きと顧客のニーズの把握
- Orient: リサーチと解析
- Decide: 反応を計画、社内の同意取り付けと必要なリソースを割り当て
- Act: 顧客を巻き込む、提供し実装
それぞれのポイントは説明を要しないだろう。
新しい市場に対応するために企業が必要なこと
企業は素早い市場の動きに対応してそれに見合った製品やサービスを迅速に提供しなければならない。
それに対して、4つのポイントが上げられた。 presentation):
1. ビジネス、開発とオペレーションを1つの組織に。BusDevOpsと言う名前。彼のプリゼンのページ14にNetflixに示されている。
2. NoSQLを使いデータをDenormalize (データーをまとめずに、データの全ての版を保存)
3. 素早い展開のためOps(運用)からDev(開発)に責任を移動
4. クラウドを利用して、素早い展開のためOps(運用)からDev(開発)に責任を移動
どのように、大規模、分散、複雑なシステムを設計し運用するのか
ど のように分散・複雑なシステムを設計・運用しても、故障・不都合は避けられない。これを克服するには、時々運用を意図的に妨げて、それから学び、学んだこ とをシステムに反映させることだ。Netflixの ストリーミング・サービスはAmazonクラウドの上で実行される。Amazonクラウドは地理的に分散された複数の地域から成り立っている。自前のシス テム問題満載の上に、クラウドも時々故障・不都合が起こる。そのために、NetflixはChaos Monkeyと Chaos Gorillaを開発した。
簡単に言えば
- Chaos Monkey,はランダムに実際に実行中のインスタンスを停止して、それでもビジネスに影響しないようにするためのツール。
- Chaos Gorilla はChaos Monkeyと似ているが、 Amazon のある地域全体の動作不能状態を作りだせる。
これらは、Simian Armyというツール群の1部だが、オープンソース化されている。
Netflix オープンソース・システム(OSS)
Netflix は多くのこういったシステムをオープンソース化した。Netflix Open Source System (OSS)はクラウド用に設計・構築されている。 ここから入手できる。なぜ、Netflixはオープンソース化に踏みきったのだろか。
それは、
- 自前の技術をベスト・プラクティスまたは標準とするため
- 最高のエンジニアを雇用、辞職を防ぎ、やる気を起こさせるため
- Netflix の技術ブランドを世に知らしめす
- エコシステムから恩恵受ける
ということだ。
この後、実際にどのようにシステムを意図的に実行不能にするのかについて述べた。しかし、ここでは、長くなるので述べない。興味のある人はこの プリゼンのページ23からto 27を参照のこと。
全インタネット・トラフィックに於けるNetflixのストリーミングの位置
インターネットのトラフィックは年々増加しているが、そのうち何が大きなウエイトを占めるのだろう。Adrian はSandvine 社によるトラフィックの情報を提供した。 (2012年11月時点と2013年3月時点) トラフィックの増加はこの間に39%増加した。 Netflixのトラフィックはどちらの時点でも全体のトラフィックの約33%を占める。2013年3月にはNetflixとYuTube のトラフィックを合わせると50%を超える。ヴィデオのストリーミングが大きなパーセントを占めることは知っていたが、この規模だとは思わなかった。明ら かにNetflixはインタネットのトラフィックに影響があることが分かる。
Netflixの参考情報
インラインのスライドでは、見つらいので、以下にまとめた。.
・ コード
・ 技術ブログ
・ スライド
コメント
電力系統は大規模、分散、複雑システムだ。それを保守するシステムはNetflix のようなシステムが必要だ。どのように、それを適用するかは今後のチャレンジだ。