只今、クラウド基盤「Google App Engine(以下、GAE)」の連載しています。
今回はGAE界の最大の敵、スピンアップについてご説明します。
スピンアップとは
まずは過去の記事で掲載したインスタンスの起動についておさらいしましょう。GAEは、ユーザからのリクエストをトリガーにして「インスタンスの起動」という現象が発生します。
- ゼロインスタンスの状態から、初めてアクセスが来た時
- アクセス殺到により追加でインスタンスを立ち上げる時
このような時に発生する「インスタンスの起動処理」、これを『スピンアップ(spin up)』と言います。
激遅
さて、なぜこのスピンアップがGAE界最大の敵かと申しますと、それはもの凄く遅いからです。開発していて、すぐに気がつきました。
- 最初だけ妙に遅いな……。2回目からは速いんだけど……。
その時間、十秒近く。画面がホワイトアウトしているんですよ。
元からJavaのWebエンジニアである私には、心当たりがありました。
jspコンパイルです。
- jspを使ったWebシステムで、デプロイの際にプリコンパイルを行っていないと、初回アクセス時にコンパイルが走って初回だけ重い。
これと酷似している現象であると直感的に察しがつきました。
しかし、調べてみたらスピンアップ問題はこれ以上に厄介な問題です。
jspコンパイル問題は「初回アクセスのみ」発生しますが、スピンアップは「インスタンス起動」の度に発生します。
つまり、何度でも発生するわけですよ。
ある程度のアクセス頻度で安定しているサービスならば、いつもインスタンスが立ち上がっているので問題にはなりませんが、「利用者の少ないサービス」「多過ぎるサービス」だとインスタンスの停止/起動を繰り返しますので、
「このサイト、最初はいつも遅いね」
という印象なサービスになってしまいます。
ここで、Webサイトの表示速度と人間の体感について、データを見てみましょう。
サイトを表示する際、どれくらい待たされると人はイライラし始めるのか、というアンケートがあります。
待ち時間 | 比率 |
---|---|
4秒超 | 17% |
3秒 | 36% |
2秒 | 30% |
1秒 | 12% |
1秒以下 | 5% |
何と、3秒待っただけで過半数の人は「遅い!!」と感じるようです。
- 表示に3秒以上掛かるサイトは、閲覧される前にブラウザを閉じられる。
技術者にとっては厳しい世界ですね……。
ちなみに、上記3秒ルールは普通のサイトの話です。
アマゾンみたいな大規模通販サイトだと、0.1秒の違いでも如実に売上が変化するそうですよ。
システムの速度はスピードは売上に影響するんです!!
仕事しているとクソ遅いシステムの改修とかやらされてしまうことが多々ありますが、ああいうシステムは最低ですね。
真のWebエンジニアは、刹那の一瞬に命を賭けるオリンピック選手顔負けのスピード狂でなければならないのです。
終わりに
このように「スピンアップにより、最初の表示に10秒」とかでは話にならないわけです。このスピンアップ時間を如何に短縮するか、これがGAEを活用する上での最初の大問題となるわけです。
今回の「スピンアップ問題シリーズ」では、このスピンアップについて調査し、掘り下げていこうと思います。
次回は、まずは現状調査。
- なぜ、スピンアップはこんなに時間が掛かるのか。
- 具体的に何秒くらい要しているのか。
この辺りから調査を始めていきます。
0 件のコメント:
コメントを投稿