17
写真共有アプリの バックエンドサーバー appengine ja night #21 BeerTalk

写真共有アプリのバックエンドサーバー

Embed Size (px)

DESCRIPTION

apppengine ja night #21 の資料です。

Citation preview

Page 1: 写真共有アプリのバックエンドサーバー

写真共有アプリの

バックエンドサーバー

appengine ja night #21BeerTalk

Page 2: 写真共有アプリのバックエンドサーバー

お前、誰よ?

● 岡野真也(twitter: @tokibito)○ 株式会社ビープラウド

■ 受託開発■ Python■ Django■ GoogleAppEngine

Page 3: 写真共有アプリのバックエンドサーバー

事例紹介: 写真共有アプリ Cotto

● http://cotto.jp● 株式会社バスキュール号● サーバー側の開発をビープラウドがお手伝いし

ました

Page 4: 写真共有アプリのバックエンドサーバー

http://cotto.jp/

Page 5: 写真共有アプリのバックエンドサーバー

アプリの概要

● Android用アプリケーション● mixi/Twitter/facebookアカウントでログイン● 写真をデコってタイムラインに投稿● フォローしたユーザーの写真をタイムラインで見

れる● チェック、コメント● テーマごとに投稿された画像を見れる

Page 6: 写真共有アプリのバックエンドサーバー

システム構成

● Android 2.3以上● GoogleAppEngine/Python 2.7● EC2(静的コンテンツの配信)

Page 7: 写真共有アプリのバックエンドサーバー

システムのイメージ

Page 8: 写真共有アプリのバックエンドサーバー

開発で気を使った所

● twitter/mixi/facebook認証● 画像データの保存と配信● タイムライン処理● 管理画面

Page 9: 写真共有アプリのバックエンドサーバー

twitter/mixi/facebook認証

● サーバー側からSNSへ投稿する必要がある● サーバー側でソーシャルグラフを取得する必要

がある● クライアント-サーバー間の認証も必要

→WebViewでごにょごにょしてます

Page 10: 写真共有アプリのバックエンドサーバー

認証フロー

Page 11: 写真共有アプリのバックエンドサーバー

画像の保存と配信

● 相互フォローの相手にしか見せない画像がある○ →画像の取得には認証が必要

● 論理削除がある● 画像主体のため、画像データへのアクセスが多

→Frontendによるキャッシュ→memcacheの活用

Page 12: 写真共有アプリのバックエンドサーバー

Frontendキャッシュ有り(全体に公開する画像)

Frontendキャッシュ無し(友達のみに公開する画像)

Page 13: 写真共有アプリのバックエンドサーバー

タイムライン処理

● いわゆるTwitterみたいなタイムライン+α○ facebookに近い

● フォローしている人の投稿が見れる○ 友達のみなら相互フォローの判定あり○ 例えばフォロワーが1000人いたら、1000人のタイムライン

に投稿画像が流れる■ DatastoreはJOIN不可なのでクエリで取得は無理

● フォローしている人がチェックしたものが見れる

→taskqueue利用→backends利用

Page 14: 写真共有アプリのバックエンドサーバー

管理画面

● GAEの管理コンソールではデータの追加削除が難しい○ 変更時にフックして処理を行なうこともできない

■ キャッシュ削除や配信処理など

● 運用のためのツールが必要○ 各種データ投入や設定など

→djangoformsを使って管理画面を作った

Page 15: 写真共有アプリのバックエンドサーバー

その他

● unittest書いてます● チューニング

○ 一括取得/一括更新■ db.get/db.put

○ 可能な限りmemcacheを使ってます■ get_multi/set_multi

● 時間のかかる処理は継続タスクで処理○ バッチ処理でも通常は1リクエストあたりで10秒以内にレ

スポンスを返すようにしている■ 続きの処理は別のタスクにする■ エラー/中断時の最実行の単位を小さくするため

Page 16: 写真共有アプリのバックエンドサーバー

宣伝

Pythonプロフェッショナルプログラミング

秀和システム464ページ

2,940円

買ってね!

Page 17: 写真共有アプリのバックエンドサーバー

おしまい