Google App Engine 入門 -2009年のGoogle App Engine Javaをふりかえる- tantack@名古屋Scala勉強会
Dec 18, 2014
Google App Engine 入門-2009年のGoogle App Engine Javaをふりかえる-
tantack@名古屋Scala勉強会
自己紹介
id: tantack(hatena,twitter,etc…)
お仕事はJavaPG兼SEもどきの2年生
こんなワードに喰いつきます
– Java
– Scala
– Google App Engine Java
– Android
– 集合知
– 日本酒
勉強会のご紹介
名古屋Scala勉強会– 毎月第3金曜日あたりに
『Scalaスケーラブル
プログラミング』の
読書会をやっています。
通称コップ本→
名古屋アジャイル勉強会– 毎月月末の金曜日に、アジャイルをテーマとしたワークショップ形式の勉強会をやっています。
今年、2009年も色々ありましたが・・・
1年間お疲れ様でした!!
だが、休暇モードに入るのはまだ早い!
・・・ということで、2009年の締めくくりとして
本日はGAE/Jについて
一緒に勉強していきましょう
今日のお話
ざっくりクラウドサービス
Google App Engine Java?
2009年のGoogle App EngineJavaをふりかえる
ざっくりクラウドサービス
ざっくりクラウドサービス
明確な定義はない!
・・・けれども、
『パソコン中心だったデータの保存や
処理を、インターネット上のサーバ群へと移行する流れ』のことを、今回の発表ではクラウドと呼ぶ。
クラウドって?
WEBアプリ+データPC・モバイル端末
利用者は場所・アクセスする端末を選ばず、インターネット上に浮かぶ雲のような『どこか』にあるサーバ群を利用する。
ざっくりクラウドサービス
SaaS
PaaS
IaaS
開発者側の視点からク
ラウドサービスを見た場
合、3種類のサービスに分類される
ざっくりクラウドサービス
SaaS
PaaS
IaaS
Software as a Service(ソフトウェア提供サービス)
提供されるソフトウェアのみを利用できる。
GmailtwitterSalesforce.comEvernote
ざっくりクラウドサービス
SaaS
PaaS
IaaS
Infrastructure as a Service
(インフラ提供サービス)
仮想マシンやストレージの提供。開発者側でOSからミドルウェアまで選択できる。
Amazon EC2/S3
ざっくりクラウドサービス
SaaS
PaaS
IaaS
Platform as a Service(プラットフォーム提供サービス)
ミドルウェア(実行環境、DB等)含む提供。開発言語は限定される。
Google App EngineWindows AzureForce.com
Google App Engine Java?
Google App Engine Java?
GAE/Jを使うメリット無料で試せる
サーバの維持コストはゼロ
アプリケーション開発に専念できる
Google App Engine Java?
無料で試せる一定のリソース使用量(Quota)までなら無料
リソース使用の少ないアプリケーションなら、完全に無料での運用も可能
利用者が増え、Quota制限を超えた(*1)ときだけ、お金を払えばよい(*2)
*1 Quota制限を超えたら、無料利用の場合、アプリケーションは停止する。
*2 自動で課金されるわけではない。
予めいくらまでなら払うか、明示的に指定しておく。
Google App Engine Java?
サーバの維持コストはゼロサーバはどうしよう?OSはどうする?DBは?・・・といった検討が不要
利用者の増加等によって負荷が増えた場合にも、自動的にスケールするため、サーバ増設の心配をする必要がない
サーバの保守はGoogleが行っているため、故障の心配する必要もない(*1)
*1 最近は少なくなったと思うが、GAE自体止まることがある。
Google App Engine Java?
アプリケーション開発に専念できる必要なものは携帯電話(*1)、EclipseとGoogle Plugin for Eclipseのみ
開発者はアプリケーションを書くだけで、すぐにサービスが公開できる
*1 アカウント登録に携帯電話会社のメールアドレスが必要。
(iPhoneやAndroidだと死亡?)
Google App Engine Java?
実行環境の特徴自動スケーリング
Java APIの制限
データストア
各種サービス
Google App Engine Java?
自動スケーリングアプリケーションに負荷が掛かると、負荷に応じて自動的にスケーリングし、負荷分散が行われる
アプリケーション側で意識して負荷対策をとる必要はないが、リソース使用=利用料金に直結する
リソースの使用をいかに抑えるかが、運用上は重要になってくる
Google App Engine Java?
データストア Datastore APIはGoogleのBigtableを利用したKey-Valueストア
JDO, JPA, Low-Level APIによりCRUD操作を行う
JDOはLow-Level APIに比べると、データ量が増えるほどパフォーマンスが落ちていく
Datastoreに近いLow-Level API、もしくはそれをラップしたslim3 Datastoreがオススメ
Google App Engine Java?
Java APIの制限複数のスレッドを作成することができない
ソケット通信は行えない
ファイルへの書き込み禁止
1回のリクエストは30秒以内で完了しないと例外を投げられる
Google App Engine Java?
各種サービス Cron…指定した時間・間隔で定時処理を行うことが
できる
Memchache API…メモリ上にデータをキャッシュしておく
Task Queue API…タスクをキューに登録し、同時にいくつもの処理を走らせることができる
URLフェッチ API…HTTP,HTTPS通信
Mail API…メールの送受信
Quota API…Quotaの状況を取得する
Blobstore API…50MBまでのデータを扱う
2009年のGoogle App Engine Javaをふりかえる
Google App Engine Java SDK 1.2.0
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年04月07日 SDK 1.2.0リリース
Google App Engineに待望のJava版登場!
4日後の4月11日、ひがやすを氏が開発を続けていた
フレームワークslim3がGAE/Jに対応。このバージョンからCronサポートも始まったため、Bot等に必要な定時処理が可能に。
Google App Engine Java SDK 1.2.1
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年05月13日 SDK 1.2.1リリース
主にバグ修正のアップデート
この修正で、JSPの日本語が文字化けしていた問題は解決!
Google App Engine Java SDK 1.2.2
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年07月13日 SDK 1.2.2リリース
主にバグ修正のアップデート
あんまり印象に残ってない・・・。
Google App Engine Java SDK 1.2.5
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年09月03日 SDK 1.2.5リリース
Task Queue API for Javaの追加!
XMPPのサポート開始
複数のタスクをキューに登録し、バックグラウンドで並行処理ができるように。
Google App Engine Java SDK 1.2.6
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年10月13日 SDK 1.2.6リリース
GAEドメインでのメール受信サポート開始アプリケーションの削除サポート開始
GAE/J単体でメールの送受信が可能に。あと間違えてデプロイしてしまった、アプリケーションの削除がようやくできるようになった。
Google App Engine Java SDK 1.2.8
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年12月03日 SDK 1.2.8リリース
JAXBのサポート開始Quota APIのサポート開始
一定量までQuotaを使用したら、アプリケーションを止める等の制御ができるように。
Google App Engine Java SDK 1.3.0
1.2.0 1.2.1 1.2.2 1.2.5 1.2.6 1.2.8 1.3.0
2009年12月14日 SDK 1.3.0リリース
Blobstore APIの追加リフレクションの動作最適化
50MBまでの大きなデータを扱えるように。またGroovyやJRubyといった、リフレクションを多用する言語は、実行速度が最大10倍になるらしい。
参考資料
参考資料
クラウド大全<サービス詳細から基盤技術まで>
– 日経BP社出版局編
クラウドコンピューティング登場の
背景から、Amazon EC2,GAEといった
各クラウドサービスの技術入門、
分散処理技術の紹介・検証まで
手広くカバーされています。
技術者がクラウドコンピューティング全体を俯瞰・把握するのに良い書籍です。
ただ既に情報の古くなっている部分も多いです。
参考資料
Google App Engine for Java [実践]クラウドシステム構築
– (株)グルージェント
GAE/Jにできないこと、『制約』に
焦点を当て、『制約』のなかで
GAE/Jを最大限活用するための
技術入門書。
ただ既に情報の古k(略
最新情報はtwitterが最速、次いで個人のブログに詳細がアップされる、といった感じです。twitterでGAEについてつぶやいている方をフォローするのがオススメです。
まとめ
まとめ
サーバの維持コストはゼロ
開発者はアプリケーション開発に専念できる
GAE/Jの登場から、まだ9ケ月弱
アレコレ模索する、夜明け前の段階
つまり・・・
GAE/Jを始めるなら今!
ご静聴ありがとうございました!