MEGAZONEブログ
Iterating faster on stateful services in the cloud
クラウド上のステートフルなサービスをより高速に処理する
Pulisher : Managed & Support Center キム・ソンド
Description : Netflixのお客様事例紹介セッション:ステートストレージコンピューティングプラットフォームを構築した事例紹介セッション
はじめに
Netflixのサービスがどのように迅速かつ安全に構築されているかを確認するためにセッションを申し込みました。
NetflixのSoftware Engineerのお二人が来ていただき、講演を行いました。
セッションの概要紹介
Netflixは2008年にクラウド移行を開始しました。
深刻なデータベースの破損で問題を経験した後、垂直拡張の失敗から脱却し、信頼性が高く水平拡張が可能なクラウド内の分散システムに移転する必要性を実感しました。
7年間の地道な努力の結果、2016年1月初旬についにクラウド移行が最終完了し、ストリーミングサービスで使用していた最後のデータセンターも運営を終了することになりました。
Netflix は Apache Kafka, Cassandra, CockroachDB, EVCache, ETCD, Apache Druid, Elasticsearch, Apache Zookeeper など多くのサービスを利用しています。
この表のように多くのサービスを多くのタイプで使用し、分散サービスとして運営しています。
分散サービスとして使うことで、コストも削減することができます。
オプション0 (Amazon管理サービス利用)
1.メリット
a .Amazonが管理するサービスを使用してシステムを運営
b .サービスが管理する部分では高い信頼性と効率を提供される。
c.Amazon RDSのようにデータベースクラスターを迅速に作成することができる。
2.デメリット
a.外部サービスに依存するため、外部サービスの障害が発生した場合、影響を受ける可能性がある。
オプション1 (独立したコンテナを使用)
1.メリット
a.速い速度のために独立したコンテナを使用
2.デメリット
a.多数のサービスを使用して複雑性が高くなる可能性がある。
オプション2 (AWS AMI使用)
1.メリット
a.Root Volumeの変更を通じて素早くシステムアップデートができる。
b.複雑な部分が少なくリスクが低い
2.デメリット
a.Root Volumeを変更して再起動する必要があるため、比較的速度が遅い場合がある。
オプション3 (Kubernetes)
1.メリット
a.Stateful Applicationを使用して管理することができます。
2.デメリット
a.Stateの複製中にエラーが発生する可能性があり、障害が発生する可能性が高い。
オプション4 (Amazon EKS)
1.メリット
a.Kubernetesを使用してコンテナベースのワークロードを管理する。
b.速いイテレーション速度と高い柔軟性を提供する。
2.デメリット
a.Kubernetesの設定と運営に関する専門知識が必要で、複雑性がある可能性がある。
このようなオプションを一つ一つ確認しながらNetflixのアーキテクチャモデル化を進めてきました。
左はリスク、下はイテレーション速度です。
Sysadminを持つEC2で運営するアプリケーションが一番リスクが高く、Amazon Managedサービスを利用するのが一番リスクが低いことがわかります。
セッションを終えて
2008年からクラウドに移行して得た多くのノウハウを知ることができる場であり、コストのメリットとManaged Serviceの安定性の間で多くのことを考慮しなければならないと思いました。
オンプレミスからクラウドにマイグレーションしたばかりのお客様や、マイグレーション予定のお客様にも多くの参考になると思われるセッションでした。