Google App Engine

Google App Engine
開発元 Google
初版 2008年4月7日 (16年前) (2008-04-07)
最新版
1.9.27 / 2015年9月30日 (8年前) (2015-09-30)
プログラミング
言語
PHP, Python, Java, Go
サポート状況 開発中
種別 ウェブ開発
公式サイト cloud.google.com/appengine/
テンプレートを表示

Google App Engine (GAE) は、Googleの提供するサービスの1つであり、ウェブアプリケーションをPHP・PythonJava・Goを使用して開発し、Googleのインフラストラクチャー上で実行し、バージョン管理することができる。Google Cloud Platformの一部。

概要

PHP用、Python用、Java用、Go用にそれぞれソフトウェア開発キット (SDK) が用意されている。Java用のSDKはSDK単体のものと、Eclipseのプラグインが同社より提供されており、Google Web Toolkitの開発と統合されている。このほか、Java用には有志によりNetBeans用とIntelliJ用のプラグインがそれぞれ作成されていて、そちらでも開発は可能である。またJavaに対応していることから、Java仮想マシン上で稼働するJythonJRubyScalaなども(自ら導入作業等を経れば)開発することができる。

GAE上で動くウェブアプリケーションはデータベースとして同社のBigTableAPIを通じてデータを格納するもので、同社のインフラのスケーラビリティを利用することができる。

他のアプリケーションホスティングとの相違

Google Compute EngineやAmazon EC2などのスケーラブルホスティングサービスと比較すると、GAEのインフラの方がよりアプリケーションを作成しやすいが、実行できるアプリケーションの種類は限定される。

GAEのインフラにより、数百万ヒットまでスケールするアプリケーションを作成するための開発・運用の問題をかなり軽減できる。Google側にてクラスタへのデプロイ、モニタリング、フェイルオーバー、そして新インスタンスの実行を必要に応じて行う。

他のサービスにおいては、ユーザーがUnix系ソフトウェアはほぼ全てインストール、設定が可能であるのに対し、GAEのデベロッパーは言語として、PythonあるいはJavaを使用し、限られたAPIを使用することを要求される。現在のAPIにより次の機能が実現できる。

  • BigTableという非リレーショナルなデータベースへのデータの格納および抽出
  • HTTPリクエストの送信
  • 電子メールの送信
  • 画像処理
  • キャッシング
  • cron
  • XMPP通信

既存のウェブアプリケーションはほとんどリレーショナルデータベースが必要なので、修正なしではGAEで実行することはできない。

日ごと、および一分ごとのクォータにより以下のリソースが制限される。

  • 帯域
  • CPU使用量
  • リクエスト数
  • 並列リクエスト数
  • APIを呼び出す回数

また、個々のリクエストは実行に30秒以上かかったり、10MB以上のデータを返す際には終了させられる。

ただし、SDKのver.1.4.0以降は、バックグラウンドのリクエストにおける 30秒制限の撤廃(10分まで中断されずに実行し続ける)、 API 呼び出しのサイズを1MBから32MB増加(URLFetchレスポンスサイズ制限、Memcacheのバッチget/put呼び出し、Image APIのrequest/response、Mail API の送信添付ファイルのサイズ制限)が行われた。

SQLとGQLの違い

GAEのデータストアはSQLのようなシンタックスを持ち、GQLと呼ばれる。GQLにおけるSelect句は単一のテーブルにのみ実行可能である。GQLは敢えてJoin句をサポートしていない。これはクエリが複数のマシンに及ぶ時に非効率であることが知られているからである[1]。その代わりにReferenceProperty()を使用することにより、1-NおよびN-Nのリレーションが作成可能である[2]。このshared-nothingのアプローチにより、ディスク障害時もシステムへの障害を防ぐことが可能である。

select句のwhere節は単一のカラムのみに対し、>, <=, <, <=操作を実行することが可能である。したがって、単純なwhere節のみが構築可能である。リレーショナルデータベースからデータストアへ移行する際に、開発者はデータ操作のパラダイムシフトを要求される。

GAEは各データストアセルから返される最大の行数を1000に制限している。結果のソーティング順序があるプロパティにより表せる場合において、この制約は人が読むために作成されたウェブアプリケーションには影響しない(単一ページに1000レコード表示することはまずないからである。なお、ページングや、キャッシングなどの機構は組み込み可能である)。アプリケーションが各オペレーションにおいて1000レコード以上必要な場合、独自のクライアントサイドソフトウェアを使用するか、Ajaxページを使用することにより無制限の行に対し操作が可能となる。この場合クエリの結果セットに対しオフセットを行うため、時間がかかるという制約を受けることになり、長い結果セットではリクエストタイムアウトが発生することがある。

DB2Microsoft SQL ServerMySQLOraclePostgreSQLとは違い、データストアAPIはリレーショナルなSQLではない。

しかしながら、従来のリレーショナルデータベースに慣れたものからすれば対極に位置するBigTableは扱いに苦労するものであり、SQLライクに扱えるようにするフレームワークが幾つか作られている。Googleもこの点については問題点として認識しており、2011年秋にMySQL互換データストアであるGoogle Cloud SQLを発表し[3]、GAEの内部データベースとして取り扱えるようにした。

競合サービス

当サービスはAmazon Web Servicesと競合する。これはアマゾンのサーバにおいてファイルホスティングや、コード実行を可能とするアプリケーションサービスの集合である。 他の競合としてはマイクロソフトAzure Services Platform、セールスフォースのForce.comが挙げられる。 また、Google App Engine用に開発されたアプリケーションを実行するためのオープンソースのフレームワークとしてはAppScaleがある。

歴史

  • 2008年4月:プレビューリリース版を公開
  • 2009年2月:有料版のサービスを開始
  • 2009年4月:Javaアプリケーションに対応
  • 2011年5月:Go言語に対応

関連項目

参照

  1. ^ Campfire One: Introducing Google App Engine (pt. 3) - YouTube
  2. ^ Modeling Entity Relationships - App Engine — Google Cloud Platform
  3. ^ Google App Engine Blog: Google Cloud SQL: Your database in the cloud

外部リンク

  • 公式ウェブサイト
Alphabet歴史サービス
企業
イベント・取り組み
人物
役員
創業者
部門
不動産
  • 111 Eighth Avenue(英語版)
  • チェルシーマーケット(英語版)
  • Googleplex
  • Data Centers(英語版)
開発
オペレーティングシステム
ライブラリ・
フレームワーク
ツール
探索アルゴリズム
ファイルフォーマット
その他
サービス
娯楽
伝達・交流
検索
組織・管理
ビジネス・金融
その他
ハードウェア
Nexus
スマートフォン
タブレット
その他
Google Pixel
Google Play Edition
Android One
その他
X
  • *: 開発・サポートを終了した製品およびサービス
  • カテゴリ カテゴリ
  • コモンズ コモンズ
SaaS
  • ContactOffice(英語版)
  • Google Workspace
  • HP Cloud(英語版)
  • Microsoft Online
  • ownCloud
  • セールスフォース
PaaS
  • AppScale
  • Cloud Foundry
  • Engine Yard
  • Force.com
  • GreenQ(英語版)
  • Google App Engine
  • Heroku
  • Inktank(英語版)
  • Jelastic(英語版)
  • Mendix(英語版)
  • openQRN(英語版)
  • OpenShift
  • OrangeScape(英語版)
  • RightScle(英語版)
  • Tsuru(英語版)
  • Unubo
  • Vercel(英語版)
IaaS
  • Abiquo Enterprise Edition(英語版)
  • CloudStack(英語版)
  • EMC Atmos(英語版)
  • Eucalyptus(英語版)
  • GoGrid(英語版)
  • Google Strage(英語版)
  • GreenButton(英語版)
  • GreenQloud(英語版)
  • IBM cloud computing(英語版)
  • Iland(英語版)
  • Joyent
  • libguestfs(英語版)
  • libvirt
  • Lunacloud(英語版)
  • Nimbula(英語版)
  • Nimbus(英語版)
  • OpenNebula(英語版)
  • OpenStack
  • oVirt(英語版)
  • Rackspace Cloud(英語版)
  • virt-manager
  • Wakame-vdc(英語版)
  • Zadara Strage(英語版)
複数対応
技術
  • カテゴリ カテゴリ
  • コモンズ コモンズ
典拠管理データベース: 国立図書館 ウィキデータを編集
  • ドイツ