世界に1億人超のユーザーを抱える、ネット動画配信大手の米Netflix。同社はAWSを2009年に大規模導入した先進ユーザーとしても知られる。2017年末時点で、利用する仮想マシンは15万台超という(図1)。

図1 15万台超の仮想マシンで数千のマイクロサービスを動作させる
[画像のクリックで拡大表示]

 AWSを大規模に利用しているだけではない。システム開発・運用で、最先端の取り組みを続けている。

 システム開発での取り組みの一つは、APIを備えた独立性の高いソフトウエアコンポーネントの組み合わせでアプリケーションを構成する設計方法「マイクロサービスアーキテクチャー」だ。Netflixはこれを全面採用し、数千のマイクロサービスから成るシステムを開発し運用している。

 マイクロサービスアーキテクチャーを導入した狙いは、ソフトウエアコンポーネントの独立性を高めて機能変更の影響範囲を限定することで、影響調査やコード作成などの開発工数を減らし、機能変更の頻度を高めることにある。

 Netflixは、以前は2週間掛かっていた機能変更の期間を短縮。マイクロサービスごとに適したタイミングでの機能変更を実現しているという。

 システム運用の取り組みでは、自動復旧の仕組みを整えたうえで、常態的にわざと本番環境に障害を起こして耐障害性を向上させる「カオスエンジニアリング」が象徴的だ。クラウドは障害が起きるものという考えに立ち、耐障害性を高めるためNetflixが独自に進化させた運用方法である。

 マイクロサービスアーキテクチャーやカオスエンジニアリングは先進的であるがゆえに、実践するのは容易ではない。どのような課題が生じて、Netflixがそれをどう乗り越えたのかを時間軸に沿って見ていこう(図2)。

図2 AWS活用の主な経緯
[画像のクリックで拡大表示]

マイクロサービスで機能変更加速

 マイクロサービスアーキテクチャーを導入する契機となったのは、AWSへの移行前の2008年に、オンプレミス(自社所有)環境でリレーショナルデータベースの設置に伴い、重大なシステム障害が発生したことだ。DVDレンタルサービスで3日間にわたりDVDの発送が停止するなど、ビジネスに大きな悪影響が出た。

 当時はソフトウエアコンポーネント同士が密に結びついた「モノリシック(一枚岩)」なアーキテクチャーだった。そのため1カ所の障害にもかかわらずシステム全体に影響が出た。モノリシックなアーキテクチャーでは耐障害性を高められないことを痛感したという。

 モノリシックなアーキテクチャーの弊害はそれだけではなかった。新しいプログラミング言語やフレームワークが登場しても、すぐには取り入れられないことも問題視していた。モノリシックなアーキテクチャーでは、ソフトウエアコンポーネント同士が密に結びついているので、プログラミング言語やフレームワークは基本的に統一する必要があった。

 Netflixは2008年8月の障害を機に、AWSへの移行とマイクロサービスアーキテクチャーの導入に踏み切った。それから1年半を掛けて、モノリシックなアプリケーションをマイクロサービスアーキテクチャーに作り替えていく。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら