Google App Engineで開発するスケールするアプリケーション(前編)
Google App EngineとTwitterの連携アプリケーション構築
データセンターを用いた一般的なシステム構築手順
ここで、今まで考えてきたスケールアウトの手法を考慮に入れて、現在最も一般的であると思われるデータセンターでのハウジングサービスを利用し、会員制のWebサイトを構築することを考えてみます。このサイトは、ある程度の会員数の増大による負荷増大が予想されており、会員が増えた場合はシステムを増強・拡張することが当初から想定されています。
図7に、想定されるサイトのインフラ構成図を示しました。
ここでは、以下のハードウェアを用意することを想定しています。
- ファイアウォール2台(1台はバックアップ用)
- ロードバランサ2台(1台はバックアップ用)
- Webサーバ2台
- アプリケーションサーバ3台
- データベースサーバ4台(会員DB+取引DBでプライマリ・セカンダリを用意)
- memcacheサーバ1台
- メールサーバ(2台)
- DNSサーバ(プライマリ・セカンダリ)
上記のシステム構成が構成されるまでには、以下の作業が想定されます。
- データセンター検討、プラン検討、見積もり、契約
- サーバ・機器購入(選定、見積、注文、納品)
- ネットワーク設計
- セキュリティ設計
- 障害時のハードウェア切替え方針検討
- バックアップ方式検討
上記の作業をするには、当初のキャパシティプランニングも必要です。キャパシティプランニングは、「どの程度のアクセスが当初想定され、サービス開始後、どのように伸びていくのか」「当初の適切なマシン数は何台か」「どれ程度のスペックのマシンが必要なのか」を検討する作業です。ビジネス環境が、短いスパンで激しく変わっていく時代において、未来を見越してシステム全体のスペックを適切に見積もり、決定していくのは、一筋縄では行かない作業であり、高いスキルと経験が必要です。
また、システム構築の実作業として、ネットワーク構築、サーバ設置、OSインストール、ミドルウェアのインストールなどの作業が必要となります。
無事にサービスを開始した後も、ハード故障への対応(に備えた保守費の負担)、データバックアップ管理、キャパシティプランニング(実際の会員数、取引数に応じたマシン増強計画)などが必要となります。
またキャンペーンなどで、一時的なアクセス数の増加が予想される場合にも対処する必要が出てきます。これらのことを考えても、自前でスケールするシステムを構築するのはとても手間とコストがかかり、ビジネスが成功するかどうか分からない段階での投資はリスクが高いことが分かるでしょう。
Google App Engineによって何が変わるのか
Google App Engineでは自前でシステムを構築する場合に比べて、以下の作業が不要となります。
- 障害時のデータバックアップ対策
- キャパシティプランニング
- データ増加時のデータベース分割対策
- マシン購入費用
――データは、Google File System(以降GFS)の機能によって物理的に分離された3か所のノードに保存されますので、損失の心配はほとんどありません。
――アクセス負荷増加に従い、Front End、App Serverの割り当てが自動的に増えます(自動スケーリング)。
――Bigtableでは、データを自動的に分割して保存しますので、データ保存場所の分割やディスクフルに備えた対策について考慮する必要はありません。
――Googleのマシンを使用できるので、購入する必要はありません。
これらの必要と考えられていた作業が不要となり、アプリケーションをプログラミングするだけで、スケールするアプリケーションを開発しリリースできることが、Google App Engineの大きなメリットであると言えます。
ビジネス環境が変わりやすい今だからこそ、初期の開発投資を抑え、スモールスタートを切る必要があります。そのためのインフラ環境として、Google App Engineは適性が高いと言えるのではないでしょうか。
- 修正履歴
-
- 2009/12/27 14:06 後編を中編・後編に変更した。
- 2009/12/04 19:24 Google Earthのスペルミスを修正。
この記事は参考になりましたか?
- Google App Engineで開発するスケールするアプリケーション連載記事一覧
-
- Google App Engineで開発するスケールするアプリケーション(後編)
- Google App Engineで開発するスケールするアプリケーション(中編)
- Google App Engineで開発するスケールするアプリケーション(前編)
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド)(サトウ ハルオ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

