• Like
写真共有アプリのバックエンドサーバー
Upcoming SlideShare
Loading in...5
×

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

  • 4,507 views
Uploaded on

apppengine ja night #21 の資料です。

apppengine ja night #21 の資料です。

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • こちら写真のアップロードをGAEにしたのは何か意味がありますでしょうか?
    EC2内にEBSをマウントしそこにアップロードするより、パフォーマンス面等でメリットがありますでしょうか?
    よろしくお願いします。
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
4,507
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
21
Comments
1
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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