• 検索結果がありません。

勉強会 資料 Google Developer Group 京都 07 17

N/A
N/A
Protected

Academic year: 2018

シェア "勉強会 資料 Google Developer Group 京都 07 17"

Copied!
81
0
0

読み込み中.... (全文を見る)

全文

(1)

各種情報

無線LANアクセスポイント

– AP0007406A1B99

– Jumpstart-P1-4b363d

ニコニコ生放送(18:30-

– http://live.nicovideo.jp/watch/lv2129384

映ると問題のある方はカメラの位置にご注意下さい。

(2)

Google App Engine Hackathon in Kyoto

第一回 事前勉強会

京都GTUG

マネージャー 山下大介

(3)

はじめに

• 本日は、みなさまお越し下さいまして、ありが とうございます。

(4)

注意点

• ネットでライブ中継されています。

映ると問題のある方はご注意下さい。

(5)

注意点

• 写真撮影はご自由にどうぞ。

フラッシュは控えて頂けると助かります。 ブログへの掲載も問題ありません。

スタッフ以外の顔が入っているものは、加工していた だくか個別に許可を取って下さい。

(6)

注意点

スタッフもイベントの様子を撮影します。

8月8日のHackathon終了後に京都GTUGおよ び京都GTUGが許諾したメディアなどで公開され ます。

参加者には事前に写真データが共有され、公開 されると問題のある写真はご連絡頂ければ、削 除・加工の措置を取ります。

(7)

自己紹介

山下 大介

メール:[email protected]

ブログ:http://blog.daisukeyamashita.com/ – twitterhttp://twitter.com/dddaisuke

京都GTUG マネージャー

株式会社SOBAプロジェクト 取締役

– KRP2号館2階

会社では自社開発のP2P通信方式による、VoIP技術の普及に努めており、ここ 数年は主にサーバサイド周りの技術検証/実装をしています 。(主に、ウェブ会 議システムのSOBA CITYSOBA mierukaの開発)

(8)

京都 GTUG とは?

正式名称

Kyoto Google Technology User Group

Kyoto GTUG Kyoto GTUGKyoto GTUGKyoto GTUG

目的

純粋・シンプルにGoogleのテクノロジーを 理解・習得するための活動をする。

(これは、世界中のGTUG共通の目的)

*漢字表記の「京都GTUG」は国内のみの利用でお願いします。

(9)

Google Technology User Groupとは?

現在、全世界で27ヶ国60を超える地域でローカルなGTUG が設立されています。

http://www.gtugs.org/directory

各地域で、Googleのテクノロジーに興味のある方々が組織 を立ち上げています。

将来的には、地域を越えたイベントもやりたいよね!という 話が、マネージャのMLでやりとりされています。

(10)

京都 GTUG へ!

まだ、参加してない方はぜひ参加して下さいね!

http://kyoto-gtug.org/

http://kyoto-gtug.org/ http://kyoto-gtug.org/ http://kyoto-gtug.org/

(11)

勉強会に入る前に・・・

• Hackathonで利用しようと思っている言語を 教えてください。

– Python – Java

その他(PHP, Ruby, Scala・・・)

(12)

• Google App Engineとは?

• Google App Engine コンソールの解説

データストア(BigTableAPIの使い方

(13)

Google App Engine とは?

• 200848 Google Campfire Oneでローンチさ れたGoogleが提供するクラウドサービスです。

(14)

Google のインフラ上で

Web アプリを走らせられる!

ハードウェア

ネットワーク

• OS

アプリケーションサーバ

データベース(BigTable

ストレージサービス

いくつかのサービス(API

(15)

メンテナンスは Google 任せ!

サーバのセットアップ・メンテナンス一切不要

だけど、コンソールはたまにアクセス不能になっている

(笑)

• APIを通じてGoogleのサービスにアクセスできる

バックエンドはGoogleが普段利用しているシステムその もの

(16)

主な特徴

サーバをインストール、メンテナンスする必要がありません

• Googleがサーバをスケールアウトしてくれます

標準的なAPIを経由して、Googleのスケーラブルな各種サービスにアク セスできます

利用した分だけ料金を払えばいい

ほとんどの場合は無料。(月間500万アクセス相当分は無料)

専用の管理コンソール

(17)

料金

項目名 購入単位 1日あたりの無料範囲

送信 $0.12/GByte 1.00 GBytes

受信 $0.10/GByte 1.00 GBytes

データ保存 $0.005/GByte-day 1.00 GBytes

メール送信 $0.0001/Email 2,000.00 Emails CPU Time

CPU Time

CPU TimeCPU Time $0.10/CPU hour$0.10/CPU hour$0.10/CPU hour$0.10/CPU hour 6.50 CPU hours6.50 CPU hours6.50 CPU hours6.50 CPU hours

(18)

アーキテクチャ

リクエスト App Engine

Front End App EngineFront End App EngineFront End

App Server App Server App Server

Other Google Infrastructure Other Google Infrastructure Other Google Infrastructure Other Google Infrastructure

•BigtableBigtableBigtableBigtable

•Google AccountsGoogle AccountsGoogle AccountsGoogle Accounts

•MemcacheMemcacheMemcacheMemcache

•Image manipulationImage manipulationImage manipulationImage manipulation APIAPI API API経由 ロードバランサ

(19)

Google App Engine の注意点

対象のウェブアプリケーション

– HTTPリクエストが30秒に制限されている 長いバックエンド処理ができません

サーバプッシュ通信ができません

サンドボックス環境

– SecurityManagerが利用されています スレッドが利用できません

リードオンリーのファイルシステムです

(20)

ソフトウェアサービス

Javaの例

サービス名 Java Java Java Java 標準 Google InfrastructureGoogle InfrastructureGoogle InfrastructureGoogle Infrastructure

認証 Servlet API Google Accounts

データストア JPA, JDO Bigtable

URLフェッチ URLConnection Caching HTTP proxy E-mail javax.mail Gmail gateway

キャッシュ javax.cache memcacheg

(21)

ウェブサービスの成長について考える

(22)

アメリカの最大手ブログサイトのひとつ

「LiveJournal.com

(23)

アメリカの最大手ブログサイトのひとつ

「LiveJournal.com

Static File Servers Static File Servers Static File ServersStatic File Servers

Frontends Frontends

FrontendsFrontends Application ServersApplication ServersApplication ServersApplication Servers

Memcache Memcache Memcache Memcache

Storage StorageStorageStorage

(24)

シンプルな LAMP

• Linux, Apache, MySQL, プログラミング言語

スケーラビリティは?

データベースとウェブサーバ共有

信頼性は?

Single point of failure (SPOF)

(25)

データベースの分離

データ容量が増えてきたので、メインの サーバからデータベースを分離します。

要求

他のマシンを追加で管理しなければなら ない。

スケーラビリティは? 1台よりはマシ

信頼性は?

SPOFが2ヶ所に!

(26)

ウェブサーバを増やす

より多くのリクエストを処理するために、ウェブサーバを追加し ます。

要求

もっと多くのサーバを管理しなければなりません。 ロードバランサも必要になってきます。

(27)

ロードバランサの追加

DNSラウントロビン

ロードバランシングの一番簡単な方法は、DNSラウンドロビン

– IPのリストをDNSに登録します

静的なロードバランシング

• DNSのレコードはTTL(Time To Live)時間キャッシュされます。

このTTLは無視されることもある  

(28)

ロードバランサの追加

ロードバランシングの一番簡単な方法は、DNSラウンドロビン

– IPのリストをDNSに登録します

静的なロードバランシング

• DNSのレコードはTTL(Time To Live)時間キャッシュされます。

このTTLは無視されることもある

DNSの変化が伝播されるの待つ必要が出てくる!

(29)

ロードバランサの追加

スケーラブルか?

もっと多くのウェブサーバを追加する必要があったら?

データベースに対するI/Oの制限は?

信頼性は?

トラフィックをすばやくリダイレクトすることができません いまだ、データベースはSPOFになっている

(30)

リバースプロキシ

ルーティングをカスタム設定できる

専用化された仕組み

アプリケーションレベルのロードバランシング

要求

より多くのマシンの管理

リバースプロキシのためのプログラムと設定

(31)

リバースプロキシ

スケーラブル?

もっと多くのウェブサーバを追加したら? 専用の仕組みを持っている

制限

リバースプロキシのルーティング容量

1つのデータベースサーバ

信頼性は?

そこそこ速いアプリケーションレベルのルーティング 専用の装置だとより強固で速いです

複数のリバースプロキシを設置すると、ネットワークレベルのルーティ ングが必要となります

• DNSラウンドロビン(再び)

高級ネットワークルーティングハードウェア

いまだ、データベースはSPOFです。

(32)

Master-Slave データベース

読み込みスループットが良くなります

要求

さらに多くのマシンの管理

– MySQLやアプリケーションの設定変更

(33)

Master-Slave データベース

スケーラブル?

台数に応じて、Readはスケールします

けど、Writeはスケールしません

結局何がおこるのか?

(34)

Master-Slave データベース

信頼性は?

書き込みに使用するマスターはSPOF

レプリケーション処理の前にマスターが死んだら?

(35)

仕切られたデータベース

Partitioned Database

• Read/Writeスループットが共に増加する

要求

もっと多くのマシンを管理しなければならない

マシン以外にもIPや権限設定など管理することが沢山! データモデルも変更しなければならない

– SQL クエリーも書き換えだ・・・

(36)

俺たちは、そんなにヒマじゃない!

(37)

誰か助けて!

(38)

App Engine スタック

(39)

全部 Google におまかせ!

めんどうなサーバの管理

電源管理 空調管理 アクセス制限

ディスク残量の監視

ネットワーク帯域・到達性の監視 各種デーモン・サービスの停止監視       :

      :

さらには、スケールアウトまで

ハードウェアの調達 最初の設定

アプリケーションプログラムのデプロイ – IP・ロードバランサの設定

      :       :

(40)

Google App Engine さまざまな数字

(41)

Google App Engine

• 8万を超えるアプリケーション

• 1.4億ページビュー/dayを超えるアクセス

• 20万を超える開発者に使われている

(42)

Open For Questions

アメリカ、ホワイトハウスの「Open For Questions」アプリケーショ ンは、48時間で、10万件の質問と360万件の投票を処理した

(43)

Google App Engine データの処理について

(44)

静的コンテンツの取り扱い

(45)

Googleネットワークにおける 静的ファイルへのリクエスト

最も近いGoogleのデータセンターに接続します

• Googleのネットワークを探します

他のGoogle製品が使用するのと同じインフラ&仕組み 多くの利点があります

(46)

静的ファイルへのリクエスト Front Endへのルーティング

• Google App Engine Front End

ロードバランシング ルーティング

• Front Endは静的コンテンツ専用のサーバに静的ファイルの リクエストを送ります

(47)

静的ファイルへのリクエスト 静的コンテンツの配信

• Google Static Content配信

共有のGoogleインフラ上に構築

静的ファイルはコードファイルから物理的に分離されています

どのように静的ファイルを定義するのか?

(48)

静的ファイルへのリクエスト

何が静的コンテンツとして扱われるのか?

...<static>

<include path="/**.png" />

<exclude path="/data/**.png" />

</static> ...

...- url: /images

static_dir: static/images OR- url: /images/(.*)

static_files: static/images/\1 upload: static/images/(.*) ...

Java Runtime: appengine-web.xml

Python Runtime: app.yaml

(49)

静的ファイルへのリクエスト ユーザへのレスポンス

• Front Endに戻り、ユーザにレスポンスします

専用インフラ

アプリケーション・ランタイムは静的コンテンツを配信しません

(50)

Google App EngineAPI

(51)

API リクエスト

(52)

Memcacheg

より多くの永続データを インメモリーキャッシュする

メモリーキャッシュ

• memcacheg

Brad Fitzpatrickによって書かれた 追加:set_multi, get_multi, add_multi

最適化のために楽観的にキャッシュしてください

非常に安定していて、強く専門化しています

(53)

App Engine Datastore 永続ストレージ

(54)

App Engine Datastore 永続ストレージ

あなたのデータは既に仕切られています

エンティティグループを使用してください

速い読み込みのために、明示的なインデックスを作成します

だけど、書き込みは遅い

レプリケートされており、フォールト・トレラントです

– 3台以上のマシンにコミットされます 物理的に分配されています

ボーナス:グローバルにユニークIDを保ちます

(55)

他の API

•GMail

•Google Accounts

•Picasaweb

•Gadget API

ロードマップ

•Pythonには実装済み

•Google Talk

(56)

• Google App Engineとは?

• Google App Engine コンソールの解説

データストア(BigTableAPIの使い方

(57)

Dashboard

(58)

Quota Details

(59)

Logs

(60)

Cron Jobs

(61)

Task Queues

(62)

Indexes

(63)

Data ViewerKind

(64)

Data ViewerGQL

(65)

Application Settings

(66)

Application Settings

(67)

Developers

(68)

Versions

(69)

Admin Logs

(70)

Billing Settings

(71)

Billing Settings

(72)

Billing History

(73)

System Status

(74)

• Google App Engineとは?

• Google App Engine コンソールの解説

データストア(BigTableAPIの使い方

(75)

Google Plugin for Eclipse

(76)

Google Plugin for Eclipse

Eclipse 3.3 (Europa)」をお使いの方

http://dl.google.com/eclipse/plugin/3.3

Eclipse 3.4 (Ganymede)」をお使いの方 http://dl.google.com/eclipse/plugin/3.4

Eclipse 3.5 (Galileo)」はまだ未対応です

詳細は、私が書いたこちらの記事をご参照下さい。 http://codezine.jp/article/detail/3835

(77)

プログラムのデプロイ

(78)

デモ

(79)

データストアの解説

(80)

デモ

ソースコードはHackathon用のリポジトリに入っています

http://code.google.com/p/kyoto-google-technology-user-group/

(81)

以上です。

質問をどうぞ!

参照

関連したドキュメント

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東京電力パワーグリッド株式会社 東京都千代田区 東電タウンプランニング株式会社 東京都港区 東京電設サービス株式会社

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東電不動産株式会社 東京都台東区 東京発電株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区

ローリング 1年目 : ①、⑤、⑨、⑬、⑰ 同 2年目 : ②、⑥、⑩、⑭、⑱ 同 3年目 : ③、⑦、⑪、⑮、⑲ 同 4年目

こども City ミニ京都@らくさいは 2011 年に実施した「こども City ミニ京都

ローリング 1年目 : ①、⑤、⑨、⑬、⑰ 同 2年目 : ②、⑥、⑩、⑭、⑱ 同 3年目 : ③、⑦、⑪、⑮、⑲ 同 4年目

処理処分の流れ図(図 1-1 及び図 1-2)の各項目の処理量は、産業廃棄物・特別管理産業廃 棄物処理計画実施状況報告書(平成