Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Developer Day
モバイルアプリ向け
AWSネイティブアーキテクチャ
1
D-1
クラスメソッド株式会社
大橋 力丈
Ⓒ Classmethod, Inc.
2015年03月29日
本日のハッシュタグ
#cmdevio2015D
自己紹介
大橋 力丈 (おおはし りきたけ)
✦所属
• クラスメソッド株式会社
• iPhoneアプリサービス事業部 部長
✦仕事
✦iOSとAWSを組み合わせたアプリの開発
http://dev.classmethod.jp/author/oohas...
iPhoneアプリサービス事業部
• iOS/Androidのアプリ開発を行っています
• アプリからインフラまでワンストップ
• 秋葉原 / 札幌
• 約25名のスマホアプリ特化エンジニア集団
私のモットー
最強のチームで
最高の価値を提供
Agenda
• AWS利用で重要なこと
• モバイルアプリ開発時の注意点
• AWS Mobile SDK
• おさらい
Agenda
• AWS利用で重要なこと
• モバイルアプリ開発時の注意点
• AWS Mobile SDK
• おさらい
AWS利用で重要なこと
AWSを利用する上で
一番重要なことは?
可用性?
性能?
拡張性?
保守性?
コスト?
AWSを利用しサービス全体を考える
•可用性
• サーバーはダウンするという前提で設計する
•性能・拡張性
• 急なリクエストが発生するという前提で設計する
•保守性
•定期的なシステムメンテナンスが発生するという前提で設計する
•コスト
•ユ...
よくあるAWSの構成
AWSのサービス
AWSのサービス
使ってるのこれだけ
AWSのすべての機能や
ツールには、存在している
理由がある
米アマゾンCTOのヴァーナー・ヴォーゲルズ(Werner Vogels)氏
21世紀的なアプリケーション開発のあり方
•Controllable
• コンポーネント化とステートレス化
• デプロイメントおよび運用のプロセスの自動化
• アプリケーション設計の最初に考えるべきはコスト
•Resilient
• 顧客の保護...
AWSのサービス
AWSのサービス
豊富なタレントが
っている
AWSを知り、サービスを
知らなければ勝利はない
チームで全体を考える!
疎結合なチーム
AWSエンジニア
プロダクトオーナー
Serverエンジニアスマホエンジニア
密結合なチーム
AWSエンジニア
プロダクトオーナー
Serverエンジニア
スマホエンジニア
それぞれが補完し合える
関係が大切!!
サービスは疎結合
チームは密結合
サービス生存期間を考える
•開発時は運用の部分まで考慮していないことが多い
•運用は誰がやるのか?をしっかり考える
•最新ではなく、最適な機能を提供する
運用を制するものが
サービスを制する
Agenda
• AWS利用で重要なこと
• モバイルアプリ開発時の注意点
• AWS Mobile SDK
• おさらい
モバイルアプリ
開発時の注意点
各ストアのアプリ登録数
•AppStore
•1,230,000本

•GooglePlay
•1,430,000本

•Amazon AppStore
•293,000本
Sorece:appFigures
各ストアの登録数
とにかく早く!
•アイデアが決まったらすぐリリース
•モバイルアプリの開発期間は短い 平均3ヶ月※1
•iOSは毎年9月頃にOSのバージョンアップ
※1:当社平均です
スピード重要!
最小構成!最短リリース!
•モバイルアプリはリリースしてからがスタート
•後々必要になる足回りは後回しになりがち
•拡張性
•ログ
•アクセス解析
•アップデート対応
•全体設計の考慮漏れ
サービスは常に変化する
そのための設計を疎かにしない
Pushの流れ
端末が増えてくると…
配信遅延が起きてくる
•SNSのTopic使う
•1リクエストで複数の送信先へ一括送信
•1トピックで1000万サブスクリプション
•3000トピックまで作成可能
配信を早くする
配信が早く終わると
瞬間的なリクエストが増える
一斉アクセス
 ・APIに負荷が一気にかかる
 ・AutoScalingでも対応できない
 ・I/Oが追いつかない
 ・スケールアップでも対応できない
•配信量をコントロールする
•各サービスの対策
•EC2:ピーク時の計画的スケールアウト
•RDS:読み取り専用インスタンス
•そもそもEC2にアクセスが本当に必要か?
•静的コンテンツを利用
一斉アクセス対策
全体を意識したアーキテクチャ
1Screen, 1API call
ホーム画面の呼び出しまで
カテゴリー一覧取得API
おすすめ商品一覧API
ユーザー情報取得API
トピック一覧取得API
APIの呼び出しが多すぎる!
複数のAPI
取得方法が異なる
エラーコードの判定等
バラバラ
アプリ側の責務が多すぎる
APIをまとめる
APIをとりまとめする
モバイルアプリ用のAPIを作るべき
•何度も異なるAPIを呼ぶのは非効率
•画面表示までに時間がかかる
•ユーザー体験が悪い
•API毎にエラーハンドリングなど考えなきゃダメ
詳しくは
”Web API The Good Parts”
Agenda
• AWS利用で重要なこと
• モバイルアプリ開発時の注意点
• AWS Mobile SDK
• おさらい
AWS Mobile SDK
モバイルから直接使える AWS サービス
認証 : Cognito
データストア : DynamoDB
ストレージ : S3
プッシュ通知 : SNS
行動分析 : Mobile Analytics
データストリーミング : Kinesis
分...
2Tire Archtecture
2Tier Archtecture
•クライアントとバックエンド
•クライアントに処理を持つ(ファットクライアント)
•クライアントからAWSのサービスを利用する
2Tierの門番
Cognito
AmazonCognito
•アイデンティティの管理
• 複数のIDプロバイダや独自認証基盤の連携
• ユニークIDの作成、識別
•複数デバイスをまたいだデータ同期
• ローカルに保存したデータの同期
• オフラインでも使える
Cognitoを使ったログインの流れ
モバイルアプリへの
活用例
2Tier のイメージ
EC2とRDSは裏側にいる
• フルマネージドのサービスに直接アクセス
• サーバーレス
• EC2,RDSへの一極集中の負荷を減らせる
• 何かカッコイイ
2Tierの良いところ
本当に
サーバーレスで
いけるのか?
• AWS Mobile SDKをラップする必要がある
• iOSとAndroidで実装が必要
• 各サービス同士のつなぎ込みがしにくい
• ロールバックある場合は大変
2Tierの課題
2Tierの救世主!?
Lambda
• イベントをトリガーに処理を実行
• 実行環境はAWSが管理
• オートスケール
• EC2インスタンス費用が不要
• AWS Mobile SDKからは呼べない
AWS Lambda
課題は色々あるけれど…
モバイルアプリは
2Tierも増える!
Agenda
• AWS利用で重要なこと
• モバイルアプリ開発時の注意点
• AWS Mobile SDK
• おさらい
•AWSの機能すべてを最適に利用する
•サービス全体を考えてAWSの構築を行う
•最新ではなく、最適なサービスを適応する
•チーム全員で考える
•運用を念頭に置いて考える
AWS利用で重要なこと
•変化に適応するための設計を疎かにしない
•突発的なアクセスに対応できる仕組みが必要
•アプリ側に責務を多く持たせない
•2Tier、3Tier適したアーキテクチャを選定する
モバイルアプリ開発時の注意点
Developer Day
スライドは後日ブログで公開します。
69
A-1
Ⓒ Classmethod, Inc.
#cmdevio2015
「スマホアプリあるあるとその対策」
は隣のNorikuraになります。
この部屋は
「DevOps時代の開発環境と現場体験」
になります
モバイルアプリ向けAWSネイティブアーキテクチャ
Upcoming SlideShare
Loading in …5
×

モバイルアプリ向けAWSネイティブアーキテクチャ

Developers.IO 2015

  • Login to see the comments

モバイルアプリ向けAWSネイティブアーキテクチャ

  1. 1. Developer Day モバイルアプリ向け AWSネイティブアーキテクチャ 1 D-1 クラスメソッド株式会社 大橋 力丈 Ⓒ Classmethod, Inc. 2015年03月29日
  2. 2. 本日のハッシュタグ #cmdevio2015D
  3. 3. 自己紹介
  4. 4. 大橋 力丈 (おおはし りきたけ) ✦所属 • クラスメソッド株式会社 • iPhoneアプリサービス事業部 部長 ✦仕事 ✦iOSとAWSを組み合わせたアプリの開発 http://dev.classmethod.jp/author/oohashi-rikitake/ ブログ http://underscore-app.tumblr.com/ アプリ
  5. 5. iPhoneアプリサービス事業部 • iOS/Androidのアプリ開発を行っています • アプリからインフラまでワンストップ • 秋葉原 / 札幌 • 約25名のスマホアプリ特化エンジニア集団
  6. 6. 私のモットー
  7. 7. 最強のチームで 最高の価値を提供
  8. 8. Agenda • AWS利用で重要なこと • モバイルアプリ開発時の注意点 • AWS Mobile SDK • おさらい
  9. 9. Agenda • AWS利用で重要なこと • モバイルアプリ開発時の注意点 • AWS Mobile SDK • おさらい
  10. 10. AWS利用で重要なこと
  11. 11. AWSを利用する上で 一番重要なことは?
  12. 12. 可用性? 性能? 拡張性? 保守性? コスト?
  13. 13. AWSを利用しサービス全体を考える •可用性 • サーバーはダウンするという前提で設計する •性能・拡張性 • 急なリクエストが発生するという前提で設計する •保守性 •定期的なシステムメンテナンスが発生するという前提で設計する •コスト •ユーザー数が増えてもコストが激増しないような設計する
  14. 14. よくあるAWSの構成
  15. 15. AWSのサービス
  16. 16. AWSのサービス 使ってるのこれだけ
  17. 17. AWSのすべての機能や ツールには、存在している 理由がある 米アマゾンCTOのヴァーナー・ヴォーゲルズ(Werner Vogels)氏
  18. 18. 21世紀的なアプリケーション開発のあり方 •Controllable • コンポーネント化とステートレス化 • デプロイメントおよび運用のプロセスの自動化 • アプリケーション設計の最初に考えるべきはコスト •Resilient • 顧客の保護は何よりも優先されるべき • コンティニュアスなデプロイメントやインテグレーションは日常だ • 障害は例外的なものではないと考えること •Adaptive • 自分で制約することをやめよ •Data Driven • データを最大限に活用せよ 参考:@IT アマゾンCTOが語った、「クラウドネイティブ」なアプリのつくりかた
  19. 19. AWSのサービス
  20. 20. AWSのサービス 豊富なタレントが っている
  21. 21. AWSを知り、サービスを 知らなければ勝利はない
  22. 22. チームで全体を考える!
  23. 23. 疎結合なチーム AWSエンジニア プロダクトオーナー Serverエンジニアスマホエンジニア
  24. 24. 密結合なチーム AWSエンジニア プロダクトオーナー Serverエンジニア スマホエンジニア それぞれが補完し合える 関係が大切!!
  25. 25. サービスは疎結合 チームは密結合
  26. 26. サービス生存期間を考える •開発時は運用の部分まで考慮していないことが多い •運用は誰がやるのか?をしっかり考える •最新ではなく、最適な機能を提供する
  27. 27. 運用を制するものが サービスを制する
  28. 28. Agenda • AWS利用で重要なこと • モバイルアプリ開発時の注意点 • AWS Mobile SDK • おさらい
  29. 29. モバイルアプリ 開発時の注意点
  30. 30. 各ストアのアプリ登録数 •AppStore •1,230,000本
 •GooglePlay •1,430,000本
 •Amazon AppStore •293,000本 Sorece:appFigures
  31. 31. 各ストアの登録数
  32. 32. とにかく早く! •アイデアが決まったらすぐリリース •モバイルアプリの開発期間は短い 平均3ヶ月※1 •iOSは毎年9月頃にOSのバージョンアップ ※1:当社平均です スピード重要!
  33. 33. 最小構成!最短リリース! •モバイルアプリはリリースしてからがスタート •後々必要になる足回りは後回しになりがち •拡張性 •ログ •アクセス解析 •アップデート対応 •全体設計の考慮漏れ
  34. 34. サービスは常に変化する そのための設計を疎かにしない
  35. 35. Pushの流れ
  36. 36. 端末が増えてくると… 配信遅延が起きてくる
  37. 37. •SNSのTopic使う •1リクエストで複数の送信先へ一括送信 •1トピックで1000万サブスクリプション •3000トピックまで作成可能 配信を早くする
  38. 38. 配信が早く終わると 瞬間的なリクエストが増える
  39. 39. 一斉アクセス  ・APIに負荷が一気にかかる  ・AutoScalingでも対応できない  ・I/Oが追いつかない  ・スケールアップでも対応できない
  40. 40. •配信量をコントロールする •各サービスの対策 •EC2:ピーク時の計画的スケールアウト •RDS:読み取り専用インスタンス •そもそもEC2にアクセスが本当に必要か? •静的コンテンツを利用 一斉アクセス対策 全体を意識したアーキテクチャ
  41. 41. 1Screen, 1API call
  42. 42. ホーム画面の呼び出しまで カテゴリー一覧取得API おすすめ商品一覧API ユーザー情報取得API トピック一覧取得API APIの呼び出しが多すぎる!
  43. 43. 複数のAPI 取得方法が異なる エラーコードの判定等 バラバラ アプリ側の責務が多すぎる
  44. 44. APIをまとめる APIをとりまとめする
  45. 45. モバイルアプリ用のAPIを作るべき •何度も異なるAPIを呼ぶのは非効率 •画面表示までに時間がかかる •ユーザー体験が悪い •API毎にエラーハンドリングなど考えなきゃダメ 詳しくは ”Web API The Good Parts”
  46. 46. Agenda • AWS利用で重要なこと • モバイルアプリ開発時の注意点 • AWS Mobile SDK • おさらい
  47. 47. AWS Mobile SDK
  48. 48. モバイルから直接使える AWS サービス 認証 : Cognito データストア : DynamoDB ストレージ : S3 プッシュ通知 : SNS 行動分析 : Mobile Analytics データストリーミング : Kinesis 分散キュー : SQS
  49. 49. 2Tire Archtecture
  50. 50. 2Tier Archtecture •クライアントとバックエンド •クライアントに処理を持つ(ファットクライアント) •クライアントからAWSのサービスを利用する
  51. 51. 2Tierの門番
  52. 52. Cognito
  53. 53. AmazonCognito •アイデンティティの管理 • 複数のIDプロバイダや独自認証基盤の連携 • ユニークIDの作成、識別 •複数デバイスをまたいだデータ同期 • ローカルに保存したデータの同期 • オフラインでも使える
  54. 54. Cognitoを使ったログインの流れ
  55. 55. モバイルアプリへの 活用例
  56. 56. 2Tier のイメージ EC2とRDSは裏側にいる
  57. 57. • フルマネージドのサービスに直接アクセス • サーバーレス • EC2,RDSへの一極集中の負荷を減らせる • 何かカッコイイ 2Tierの良いところ
  58. 58. 本当に サーバーレスで いけるのか?
  59. 59. • AWS Mobile SDKをラップする必要がある • iOSとAndroidで実装が必要 • 各サービス同士のつなぎ込みがしにくい • ロールバックある場合は大変 2Tierの課題
  60. 60. 2Tierの救世主!?
  61. 61. Lambda
  62. 62. • イベントをトリガーに処理を実行 • 実行環境はAWSが管理 • オートスケール • EC2インスタンス費用が不要 • AWS Mobile SDKからは呼べない AWS Lambda
  63. 63. 課題は色々あるけれど…
  64. 64. モバイルアプリは 2Tierも増える!
  65. 65. Agenda • AWS利用で重要なこと • モバイルアプリ開発時の注意点 • AWS Mobile SDK • おさらい
  66. 66. •AWSの機能すべてを最適に利用する •サービス全体を考えてAWSの構築を行う •最新ではなく、最適なサービスを適応する •チーム全員で考える •運用を念頭に置いて考える AWS利用で重要なこと
  67. 67. •変化に適応するための設計を疎かにしない •突発的なアクセスに対応できる仕組みが必要 •アプリ側に責務を多く持たせない •2Tier、3Tier適したアーキテクチャを選定する モバイルアプリ開発時の注意点
  68. 68. Developer Day スライドは後日ブログで公開します。 69 A-1 Ⓒ Classmethod, Inc. #cmdevio2015
  69. 69. 「スマホアプリあるあるとその対策」 は隣のNorikuraになります。 この部屋は 「DevOps時代の開発環境と現場体験」 になります

×