写真共有アプリのバックエンドサーバー
-
Upload
shinya-okano -
Category
Technology
-
view
4.607 -
download
1
description
Transcript of 写真共有アプリのバックエンドサーバー
写真共有アプリの
バックエンドサーバー
appengine ja night #21BeerTalk
お前、誰よ?
● 岡野真也(twitter: @tokibito)○ 株式会社ビープラウド
■ 受託開発■ Python■ Django■ GoogleAppEngine
事例紹介: 写真共有アプリ Cotto
● http://cotto.jp● 株式会社バスキュール号● サーバー側の開発をビープラウドがお手伝いし
ました
アプリの概要
● Android用アプリケーション● mixi/Twitter/facebookアカウントでログイン● 写真をデコってタイムラインに投稿● フォローしたユーザーの写真をタイムラインで見
れる● チェック、コメント● テーマごとに投稿された画像を見れる
システム構成
● Android 2.3以上● GoogleAppEngine/Python 2.7● EC2(静的コンテンツの配信)
システムのイメージ
開発で気を使った所
● twitter/mixi/facebook認証● 画像データの保存と配信● タイムライン処理● 管理画面
twitter/mixi/facebook認証
● サーバー側からSNSへ投稿する必要がある● サーバー側でソーシャルグラフを取得する必要
がある● クライアント-サーバー間の認証も必要
→WebViewでごにょごにょしてます
認証フロー
画像の保存と配信
● 相互フォローの相手にしか見せない画像がある○ →画像の取得には認証が必要
● 論理削除がある● 画像主体のため、画像データへのアクセスが多
い
→Frontendによるキャッシュ→memcacheの活用
Frontendキャッシュ有り(全体に公開する画像)
Frontendキャッシュ無し(友達のみに公開する画像)
タイムライン処理
● いわゆるTwitterみたいなタイムライン+α○ facebookに近い
● フォローしている人の投稿が見れる○ 友達のみなら相互フォローの判定あり○ 例えばフォロワーが1000人いたら、1000人のタイムライン
に投稿画像が流れる■ DatastoreはJOIN不可なのでクエリで取得は無理
● フォローしている人がチェックしたものが見れる
→taskqueue利用→backends利用
管理画面
● GAEの管理コンソールではデータの追加削除が難しい○ 変更時にフックして処理を行なうこともできない
■ キャッシュ削除や配信処理など
● 運用のためのツールが必要○ 各種データ投入や設定など
→djangoformsを使って管理画面を作った
その他
● unittest書いてます● チューニング
○ 一括取得/一括更新■ db.get/db.put
○ 可能な限りmemcacheを使ってます■ get_multi/set_multi
● 時間のかかる処理は継続タスクで処理○ バッチ処理でも通常は1リクエストあたりで10秒以内にレ
スポンスを返すようにしている■ 続きの処理は別のタスクにする■ エラー/中断時の最実行の単位を小さくするため
宣伝
Pythonプロフェッショナルプログラミング
秀和システム464ページ
2,940円
買ってね!
おしまい