• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Googleクラウドサービスを利用したシステム構築
 

Googleクラウドサービスを利用したシステム構築

on

  • 3,117 views

 

Statistics

Views

Total Views
3,117
Views on SlideShare
3,116
Embed Views
1

Actions

Likes
1
Downloads
29
Comments
0

1 Embed 1

https://www.chatwork.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • ・今回主に調査したのはGoogle Apps\n\n
  • ・今回主に調査したのはGoogle Apps\n\n
  • ・EC2は従来のレンタルサーバ同様SSHでログイン可能。違いは時間単位で課金が発生する点。\n・今回主に調査したのはGoogle Apps\n\n\n
  • \n\n
  • \n
  • \n
  • ・SSHでのログインや、アプリケーションのインストールはできない。\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ・障害が起こるとこちらでは何もできない可能性も。\n
  • ・障害が起こるとこちらでは何もできない可能性も。\n
  • ・障害が起こるとこちらでは何もできない可能性も。\n
  • ・障害が起こるとこちらでは何もできない可能性も。\n
  • ・障害が起こるとこちらでは何もできない可能性も。\n
  • ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  • ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  • ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  • ・GFS(分散ファイルシステム)はファイルを複数のラックにコピーすることでサーバ障害による欠損を極限まで低下させている\n
  • \n
  • ・試しに申し込みしてみたが、インスタンスの動作が不安定なので今回は見送った。\n
  • ・PHPの動作は完全互換でない\n
  • \n
  • ・左ペインに「App Engine SDK」がある\n
  • ・アプリケーションに独自ドメインcloud.nekonyandayo.comを割り当てた\n・今回はゲストブックアプリケーションを作成したのでドメインはguestbook.cloud.nekonyandayo.comとした\n
  • \n
  • \n
  • ・自社メールサーバを独自ドメインを使用してGmailに置き換えることも可能。自社でメールサーバを運用する必要がなくなる。\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ・GUIビルダーでは生成できない機能もあるため、まだ開発途上といった感じ。\n実際にはエディタで開発する方が現実的\n
  • \n
  • ・Browsera API Alphaを使用。データはXMLで返されるが、GASのXML Serviceで解析可能\n http://www.browsera.com/api_help/test_runs\n
  • ・PHPを知らなくてもデータ集計機能が作れる\n
  • \n
  • \n
  • ・様々なAPIが用意されてるとは言え、JavaやPHPのような柔軟性はまだ無い。その点を補う上で外部APIは使える\n・まだまだ利用者が少ないため、公式ドキュメント以外で探したい機能の文書が見つからないことがある(iOS SDKが出始めた頃と同じ)\n・仕様変更が多いため、Webで文献を見つけてもその通り動かないことは多々ある\n
  • \n
  • \n

Googleクラウドサービスを利用したシステム構築 Googleクラウドサービスを利用したシステム構築 Presentation Transcript

  • Googleクラウドサービスを利用したシステム構築 2012/03/21, DT Corp Naomichi Yamakita
  • アジェンダ1. 調査の趣旨2. Google App Engine3. Google Apps & Google Apps Script4. 総括
  • 1.調査の趣旨
  • 調査目的- Webサービスを構築する上で開発効率を向上させる手法を検討する - 開発効率とコスト削減を検討する上で、調査対象として挙がった技術は クラウドコンピューティング - 今回はクラウドの中でも特にスケーラビリティの高いGoogle App Engine、Google Appsを調査した
  • クラウドの定義- インターネットをベースとしたWebサービスの総称- ユーザはデータやソフトウェアの場所を意識せず、必要に応じて(クライア ントの環境に依存せず)サービスを利用することができる- 無料、もしくは利用した分だけ支払う形態が多い
  • クラウドの種類。言葉自体は覚える必要なし- SaaS型(Software as a Service) - ソフトウェアをWebサービスとして提供 - Google Apps、Microsoft Online Services、Evernote等- PaaS型(Platform as a Service) - 仮想化されたサーバ環境を提供 - Google App Engine、Amazon S3等- HaaS型(Hardware as a Service) - インターネット経由のハードウェアやインフラを提供 - Amazon EC2等
  • Google App EngineとGoogle Appsの違い- Google App Engine - Webアプリケーションを公開可能なホスティングサービス- Google Apps - Gmail、カレンダー、ドキュメント等、Googleが提供するWebアプリ ケーションを独自ドメインで使える - 「Google Apps Script」を用いてアプリケーションの自動化や外部リ ソースとの連携が可能
  • 2.Google App Engine
  • Google App Engine(GAE)とは- Googleが提供するクラウド環境 - GAE上でWebサービスを構築することができる - 類似サービスにはAmazon S3、Microsoft Azure等がある- 対応言語はJava、Python、Go- 開発者はGAEが提供するSDKを利用してサービスを構築する - Eclipseを使うことで開発からテスト・デプロイまで一元して管理するこ とが可能- インスタンス時間ベースの課金 - リソース(CPUや転送量)を消費した分だけ課金
  • GAEを使うメリット- 自社データセンタの運用コスト削減 - 月間500万PV、500MBまでのストレージは無償で利用可能 - 仮想化されたインフラを使うため、サーバの構築や運用が不要となる - 管理コンソール(負荷状況、ログビューワ等)が提供されている- サービスはGoogleが提供するインフラ上で稼働する - Googleのインフラが持つパフォーマンスとスケーラビリティは世界最高 レベル - サービスに対するリクエストが増えると自動的にインスタンスを増や し、無制限にスケールアウトを行う
  • GAEの管理画面
  • GAEの管理画面インスタンスの管理 アプリケーションのバージョン管理 データの管理 稼働状況のサマリー
  • パフォーマンスとインスタンスの管理
  • パフォーマンスとインスタンスの管理 アプリケーションのパフォーマンスを制御 アイドルインスタンスの最大数を設定 新しいインスタンスを生成するまでの待機時間を設定
  • 今までのスケールアウト技法- Web・アプリケーションサーバの負荷分散 - 並列に台数を追加- DBサーバの負荷分散 - レプリケーション - 更新処理でマスタに負荷が集中する - クラスタリング - 台数が増えるほど同期の処理コストが高まる - パーティショニング - プログラムのロジックが複雑になる
  • Googleのスケールアウト技術
  • Googleのスケールアウト技術
  • Googleのスケールアウト技術 インスタンスは自動的に増える クライアントへの応答速度は変わらない
  • GAEが提供する機能- 独自ドメイン - 既定ドメインは {service_name}.appsot.com- Googleアカウントを用いたユーザ認証- 自動スケーリングと負荷分散- 永続ストレージ(後述) - ファイルシステムの概念がない- フル機能を兼ね備えた開発プラットフォーム- スケジューリングされたタスク
  • GAEのデメリット- 既存のアプリケーションコードはGAE上で動作しない - RDBMSが提供されていないため、データの管理はGoogleが提供する 「BigTable」を使う- ソケット通信やスレッドは利用できない- 懸念点 - 顧客情報はクラウド上に預ける必要がある - サービスが環境に依存する
  • クラウドサービス自体に障害が起こることも!
  • クラウドサービス自体に障害が起こることも!
  • クラウドサービス自体に障害が起こることも!
  • クラウドサービス自体に障害が起こることも!
  • クラウドサービス自体に障害が起こることも!
  • 事態は改善しつつある
  • 事態は改善しつつある
  • 事態は改善しつつある
  • 事態は改善しつつある
  • 永続ストレージ BigTable- BigTableはGoogleが開発したストレージサービス- 分散型KVS- 強力なクエリエンジンやトランザクション機能を持つ - クエリ操作はGQL(Google Query Language)を用いる - GQLはテーブル間の結合を敢えてサポートしていない- GAE上で稼働する全てのアプリは1つのBigTableで管理されている- GFS(Google File System)の恩恵によってファイル欠損の可能性は極め て低い
  • 2011年10月、Google Cloud SQLを発表
  • Google Cloud SQLの概要- MySQLとほぼ同等の機能を持つデータベースを提供- JDBCとDBアクセスAPIをサポート- 2012年3月現在はプレビューリリースの段階
  • サービスを公開するまでの手順1. 開発言語の選定 ‣ 今回はJava(JSP、Servlet)を使用 JVM上でPHPやRubyを実行することも可能2. 開発環境の構築 ‣ Eclipse + Google Plugin for Eclipse(GAE SDK)3. アプリケーションの開発4. ソースのコンパイルとデプロイ ‣ Eclipseで一元管理
  • GAE/Jの開発環境(Eclipse)
  • GAE/Jの開発環境(Eclipse) ソースコンパイル後にGAEにデプロイApp Engine SDK
  • GAE + HTML5でゲストブックアプリを構築してみた
  • GAE + HTML5でゲストブックアプリを構築してみた with Fbootstrap!
  • デモンストレーション1. アプリケーションの作成 ‣ https://appengine.google.com/2. 開発環境の紹介 ‣ サンプル: HelloWorld ‣ コンパイルとデプロイ、動作確認 ‣ サンプル: コメント投稿3. 管理画面の紹介
  • クラウドサービスの比較サービス メリット デメリット •無償利用可能 •対応言語が少ない •開発環境が整備されている •言語の機能制限がある •Google Data APIが利用可能 •他のサービスへの移植が困難 •対応言語が多い •HA、監視機能が不足 •RDBMSが使える •サービスが統合されていない •開発環境は任意 •対応言語が多い •利用できるまでに時間がかかる •RDBMSが使える •開発環境が限定されている •VisualStudioや.netを使用可能
  • 3.Google Apps & Google Apps Script
  • Google Appsとは- Googleが提供するWebサービスを独自ドメインで使える- 基本無償で利用可能(機能制限あり)- スマートフォンや携帯にも対応- 提供されるサービスの一例 - Gmail - Googleカレンダー - Googleドキュメント - Googleサイト
  • Google Appsの管理画面独自ドメインを設定(DNSにCNAMEを追加)
  • Google Apps Script(GAS)とは- Googleのサービスを自動化するサーバサイドJavaScript - Excelのマクロに似ている- GASを利用してGoogle Appsを自動化できる - Google Appsを使用していなくても利用可能- 開発環境はWebブラウザ - デバッガやロガーのほか、簡単なバージョン管理機能を持つ
  • GASでできること- 業務の自動化- Googleサービスとサードパーティ製品の連動- スプレッドシートにおけるカスタム関数の作成- UIの作成
  • GASの言語仕様- 言語はJavaScript。ただしブラウザオブジェクトは使えない - Window、Event、Document等- サーバサイドJavaScriptのため、クロスドメイン制約がない- 外部のWeb APIが使用可能 - XML、JSON、SOAP、OAuth等に対応- スプレッドシートの操作はVBAに似ている- イベントドリブンやcronのような定期実行が可能- JDBC API経由で外部RDBMSに接続可能
  • Hello World!
  • Hello World!alert()関数は使えないため、GAS APIが 提供するメッセージ表示関数を使う
  • Googleアカウントがあればすぐ利用可能
  • Googleアカウントがあればすぐ利用可能 スプレッドシートの「ツール」から起動
  • GASの開発環境(エディタ)
  • JDBCライクにSQLを発行可能 GASの開発環境(エディタ) 自動補完にも対応
  • GASの開発環境(GUIビルダー)
  • GASの開発環境(GUIビルダー) IDEのようにGUIを設計できる
  • GASが提供するAPI Base Cache Calendar Charts Contacts DocsList Document Domain Finance Gmail Groups Jdbc Default API Language Lock Mail Maps Properties Sites Sorp Spreadsheet UI UriFetch Utilities Xml UrlShortener Prediction TasksAPIs Services AdSense
  • GASが提供するAPI Base Cache Calendar グラフを描画 Charts Contacts DocsList RDBMSに接続 Document Domain Finance Gmail Groups Jdbc Default API データの永続化 Language Lock Mail スプレッドシートの操作 Maps Properties Sites Sorp Spreadsheet UI UriFetch Utilities Xml 独自UIの設計 HTTP通信を行う UrlShortener Prediction TasksAPIs Services AdSense 短縮URLの生成
  • デモンストレーション- GUIの設計と外部Web APIの呼び出し- アンケートフォーム機能- JDBCを利用したデータ集計- Browsera APIを利用したキャプチャ管理アプリケーション
  • GASを利用したデータ集計- スプレッドシートが利用できるため、Webアプリケーションにおける売上管 理や登録・利用状況といったデータ集計機能と非常に相性が良い - データの表示とグラフ化 - 並び替え、フィルタリング - データのCSVダウンロードやExcel形式への変換- 異なるアプリケーションのデータ集計機能を一元管理することができる - 開発にかかるコストが削減可能- Google Appsを使ったデータ集計は今後の開発で導入したい
  • 外部連携でできること- TwitterやfacebookをはじめとしたWeb APIと連携可能- 外部から取得したデータをGoogle Appsと連携させた様々なサービスが考 えられる- 例えば… - Twitterのタイムラインから任意ユーザのアクティビティを取得 - スプレッドシートで集計 - 自動更新されるBOTサイトを構築(Googleサイト) - facebookのイベントをGoogleカレンダーに自動同期させる - 「いいね!」「Twitter」等のボタンのカウントを集計
  • 4.総括
  • サービスを構築する上で苦労した点- Googleのサービスは常に進化している - 機能やドキュメントが不足気味 - Web APIの特質上、仕様変更が多い- GASに関しては開発環境が発展途上 - GUIビルダーは機能が中途半端 - ソースコードの自動補完が一部効かない - リファクタリングしにくい - モジュールの管理が面倒
  • Googleクラウドの良い点- 導入が比較的容易- 世界最高レベルのインフラを利用できる - 今後サーバエンジニアの役割は変わっていく(であろう)- GASは開発環境を問わない- Googleのサービスは常に進化している - 常に時代に適応した技術がすぐに使える - 機能が日々改善している - 単純に面白い
  • これからやってみたいこと- Google Data APIの活用- GASを利用したWebアプリケーションのデータマイニング- クラウド環境におけるWebアプリケーションの構築と運営