views4GCPのストレージサービスについてまとめてみた。toよりWhyが気になるエンジニアTweetShareHatena注意この記事は2015年1月16日に更新されたもので、内容が古い可能性がありますのでご注意ください。今回は、こちらの公式ドキュメントをもとに、GAEのスケーリングの仕組みと最適化のやり方について紹介します。記事は前後編の2段構成でお送りします。Engineのスケーリングの仕組みユーザからのリクエストを受けて辿る処理フローコンテナ技術を使ったインスタンスのスケーリング前編をまとめてみてはじめにまずは皆様に、今回参考にしたこちらのドキュメントの主旨とGAEのスケーリング技術の何がすごいのかを知ってもらうため、ドキュメントの序文を抜粋してみました。数百万人から同時にアクセスされても耐えられるサイトを作れと言われたら、あなたはどうしますか?果敢にも高速で信頼性の高いサービスを作ろうとするかもしれませんが、そのようなサイトを作る時に最も重要となるのは、リクエスト数に応じて適切にスケールすることでしょう。あなたのチームには、スケーラブルで信頼できるWEBサーバを構築した実績がありますか?そのようなサーバを開発・運用・保守するために掛かるコストを、正しく見積もることができますか?そのような仕事ができる優秀な人材を雇うノウハウはありますか?GAEを使えば、このような難題を簡単に解決できます。このドキュメントでは、GAEが、どのようにユーザリクエストを処理し、アクセス数の変動に応じたスケーリングを実現しているのかについて記載しています。対費用効果を最適にするために開発者がどのような設定をすればよいかについても説明しているため、この記事を読めば、あなたはGAEの効力と柔軟性を十分に引き出すことができるようになるでしょう。扇動的な文章ですが、実際にGAEを使っている立場としても確かに素晴らしい技術だと思っています。Engineの素晴らしいスケーリングの仕組みについて説明していきたいと思います。Engineでは、どのようにスケーリングを実現しているのでしょうか?その仕組みを、以下2つの特徴をもって説明したいと思います。図1にユーザのリクエストがアプリケーションへ到達するまでのフローを示します。ユーザのリクエストは、まず、地理的に最も近いGoogleのデータセンターへ送られます。Engineデータセンターへリクエストを送ります。Cacheについては、この記事では触れませんが、ご了承下さい。Engineデータセンターは、以下の構成によって成り立っています。Engineアプリケーションのロードバランシングとフェイルオーバーの役割を担います。serverかStaticServerへディスパッチします。server実際のアプリケーションが動作する部分です。Engineアプリケーションのインスタンス(以下、インスタンス)が作成・削除されることにより、スケーリングを実現しています。Engineが提供するサービスのAPIやライブラリがあり、開発者は簡単に優れたアプリケーションを作ることができます。Engineアプリケーション内の静的ファイルを提供することに専念するサーバです。master全体の指揮者として働きます。serverには静的ファイルをアップロードしています。serverが稼働中のインスタンスをトラッキングしており、ユーザリクエスト数の変動に応じてインスタンス数が変動します。Engineでは、コンテナベースのPaaSを採用しており、ひとつのインスタンスをひとつのコンテナとして扱っています。Engineの比較この仕組みのメリットを理解していただくために、図2を参照下さい。Engineを比較したものです。両者の最も大きな違いは、OSにかかるオーバーヘッドです。Engineには、このオーバーヘッドが無いことため、以下の恩恵を得ることができます。Engineは最先端のスケーリング技術を使った、可能性を秘めたサービスなのではと思います。Engineの高い性能というのは、スケーリングさせるリソースを極力減らすことで実現しているように思いました。静的ファイルはインスタンス間で共有する、コンテナ技術を使うことでVMのようなOS部分のオーバヘッドを減らす、といった点です。次回は、GAEの効力と柔軟性を引き出すための、スケーリングの最適化の方法について説明します。