Upload
rikitake-oohashi
View
3.116
Download
3
Embed Size (px)
Citation preview
Copyright © Classmethod, Inc.
モバイルファースト時代の クラウドネイティブアーキテクチャ
JAWS DAYS 2015 2015.3.22
classmethod Inc. 大橋 力丈
×
大橋 力丈 (おおはし りきたけ)
✦所属 • クラスメソッド株式会社
• iPhoneアプリサービス事業部 部長
✦仕事 ✦iOSとAWSを組み合わせたアプリの開発
http://dev.classmethod.jp/author/oohashi-rikitake/
ブログ
http://underscore-app.tumblr.com/アプリ
クラスメソッド株式会社• iOS/AWSに特化した会社(Androidもやってます)
• アプリからインフラまでワンストップ
• 秋葉原 / 札幌 / 上越
• 約70名のエンジニア集団
• Developers.IO
Developers.IO
Developers.IO• 社員執筆によるIT技術専門サイト • 月間:80万PV、35万UU • 国内で最も多くのAWS記事を公開しています • AWS:1,000本、iOS:500本、Android:300本以上
ブログもやってる会社です
Developers.IO
AWSだけじゃない!!
Twi$er Jaws*Days **
@jawsdays
3 "
@awscloud_jp
#jawsdays
1 "
AWS Twi0er JAWS"DAYS Twi0er
??
17:00 *9:00 16:50 Tweet
Kindle JAWS*T
*Moff*Band JAWS*T
Step"1"
Step"2"
Step"3"
Jaws*Days OK
JAWS*T
今日はいくつか名言ぽいことを言いますので、是非
Tweetしてください!
#jawsdays
Agenda
•よくあるAWS構成
•モバイルアプリで考えておくべきこと
•クラウドネイティブ
• AWS Mobile SDK
•おさらい
Agenda
•よくあるAWS構成
•モバイルアプリで考えておくべきこと
•クラウドネイティブ
• AWS Mobile SDK
•おさらい
よくあるスケーラブルな構成
ELB + EC2 + RDS構成のメリット
• EC2に障害があってもELBが振り分けてくれる
•トラフィック増えたらスケールアウト
• AutoScalingで自動で拡大/縮小
• RDSの負荷が上がったらスケールアップ •スナップショットでデータ復元
ELB + EC2 + RDS構成のメリット
ELB + EC2 + RDSは 本当に良い構成!!
ちゃんと設計されていれば
Agenda
•よくあるAWS構成
•モバイルアプリで考えておくべきこと
•クラウドネイティブ
• AWS Mobile SDK
•おさらい
モバイルアプリ開発あるある
•最短リリース!最小構成!
• Push通知と一斉リターン
•既存のAPIあるある問題!
最短リリース!最小構成!
各ストアのアプリ登録数
•AppStore •1,230,000本
•GooglePlay •1,430,000本
•Amazon AppStore •293,000本
Sorece:appFigures
各ストアの登録数
とにかく早く!
•アイデアが決まったらすぐリリース
•モバイルアプリの開発期間は短い 平均3ヶ月※1
•iOSは毎年9月頃にOSのバージョンアップ
※1:当社平均です
スピード重要!
最小構成!最短リリース!
•モバイルアプリはリリースしてからがスタート •後々必要になる足回りは後回しになりがち •拡張性
•ログ
•アクセス解析
•アップデート対応
•全体設計の考慮漏れ
「小さく産んで大きく育てる」 そのための設計は疎かにしない
Push通知と一斉リターン
Pushの流れ
端末が増えてくると…
配信遅延が起きてくる
•SNSのTopic使う
•1リクエストで複数の送信先へ一括送信
•1トピックで1000万サブスクリプション
•3000トピックまで作成可能
配信を早くする
•デバイス毎に直接通知を行う
特定の宛先に配信
S3に配信リストを置く
Workerが配信リストを取得してキューに入れる
Workerはキューを取り出してPublishする
配信が早く終わると 瞬間的なリクエストが増える
一斉アクセス
・APIに負荷が一気にかかる ・AutoScalingでも対応できない
・I/Oが追いつかない ・スケールアップでも対応できない
•配信量をコントロールする •各サービスの対策
•EC2:ピーク時の計画的スケールアウト
•RDS:読み取り専用インスタンス
•そもそもEC2にアクセスが本当に必要か?
•静的コンテンツを利用
一斉アクセス対策
全体を意識したアーキテクチャ
Pushを制するものが モバイルアプリを制する
既存のAPIあるある問題!
サーバーサイドってどうなってます?
既存のAPIあるんでソレ使って下さい!
あっ!既存あるんすね! じゃあチョチョイのチョイですね!!
営業 クライアント
※フィクションです
既存のAPIあるから余裕そうだよ!
大丈夫!大丈夫! 既存あるから!よろしくね!
営業 エンジニア
えっ!? API一覧とか見たいです
・・・・・
※フィクションです
ホーム画面用のAPI一覧
目的 エンドポイント
トピック一覧取得 https://api.xxx.com/v1/topics/
カテゴリー一覧取得 https://api.xxx.com/v1/categories/
おすすめ商品取得 https://api.xxx.com/v1/products/recommend
ユーザー情報取得 https://api.example.com/v1/user/
ホーム画面の呼び出しまで
カテゴリー一覧取得APIおすすめ商品一覧API
ユーザー情報取得APIトピック一覧取得API
1画面呼ぶのに何個のAPIを叩けばいいんだ!?
モバイルアプリ用のAPIを作るべき
•何度も異なるAPIを呼ぶのは非効率
•画面表示までに時間がかかる •ユーザー体験が悪い
•API毎にエラーハンドリングなど考えなきゃダメ
詳しくは ”Web API The Good Parts”
1Screen, 1API call
Agenda
•よくあるAWS構成
•モバイルアプリで考えておくべきこと
•クラウドネイティブ
• AWS Mobile SDK
•おさらい
ここから本題!
モバイルファースト時代の クラウドネイティブアーキテクチャ
本日のタイトル
よくあるスケーラブルな構成
これは クラウドネイティブ?
AWSを使っているから クラウドネイティブ?
AWSのサービス
AWSのサービス
使ってるのこれだけ
AWSのすべての機能やツールには、存在している
理由がある
米アマゾンCTOのヴァーナー・ヴォーゲルズ(Werner Vogels)氏
21世紀的なアプリケーション開発のあり方
•Controllable • コンポーネント化とステートレス化
• デプロイメントおよび運用のプロセスの自動化
• アプリケーション設計の最初に考えるべきはコスト
•Resilient • 顧客の保護は何よりも優先されるべき
• コンティニュアスなデプロイメントやインテグレーションは日常だ
• 障害は例外的なものではないと考えること
•Adaptive • 自分で制約することをやめよ
•Data Driven • データを最大限に活用せよ
参考:@IT アマゾンCTOが語った、「クラウドネイティブ」なアプリのつくりかた
EC2:センターフォワード RDS:ゴールキーパー
注:あくまで主観です
サッカーのポジション• GK:ゴールキーパー
• DF:ディフェンダー
• CB:センターバック
• SB:サイドバック
• SW:スウィーパー
•MF:ミッドフィールダー
• DMF:ディフェンシブミッドフィルダー
• WB:ウイングバック
• CMF:セントラルミッドフィルダー
• SMF:サイドミッドフィルダー
• OMF:オフェンシブミッドフィルダ
•フォワード(FW)
• WG:ウイング
• ST:セカンドトップ
• CF:センターフォワード
AWSのサービス
AWSのサービス
豊富なタレントが 揃っている
インフラだけでいいの?
AWSを利用しサービス全体を考える
•可用性 •サーバーはダウンするという前提で設計する
•性能・拡張性 •急なリクエストが発生するという前提で設計する
•運用・保守性 •定期的なシステムメンテナンスが発生するという前提で設計する
•コスト •ユーザー数が増えてもコストが激増しないような設計する
AWSを知り、サービスを 知らなければ勝利はない
チームで全体を考える!
疎結合なチーム
AWSエンジニア
プロダクトオーナー
Serverエンジニアスマホエンジニア
密結合なチーム
AWSエンジニア
プロダクトオーナー
Serverエンジニア
スマホエンジニア
それぞれが補完し合える 関係が大切!!
サービスは疎結合 チームは密結合
Agenda
•よくあるAWS構成
•モバイルアプリで考えておくべきこと
•クラウドネイティブ
• AWS Mobile SDK
•おさらい
AWS Mobile SDK
モバイルから直接使える AWS サービス
認証 : Cognito データストア : DynamoDB ストレージ : S3 プッシュ通知 : SNS 行動分析 : Mobile Analytics データストリーミング : Kinesis 分散キュー : SQS
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
•おさらい
おさらい
「小さく産んで大きく育てる」 そのための設計は疎かにしない
Pushを制するものが モバイルアプリを制する
1Screen, 1API call
AWSのすべての機能やツールには、存在している
理由がある
米アマゾンCTOのヴァーナー・ヴォーゲルズ(Werner Vogels)氏
AWSを知り、サービスを 知らなければ勝利はない
サービスは疎結合 チームは密結合
モバイルアプリは 2Tierが増える!
告知
• 3/27(金):BusinessDay • デジタルマーケティングをテーマにした話
• 対象:マーケティング担当
• 3/29(日):DevelopersDay • AWS、Mobile、IoT、BigDataなどのお話
• 対象:デベロッパー
• セミナー、ハンズオン、テクニカルディープセッション
• 本日の2Tierの話をより深く話します
Developers.IO 2015
お待ちしております!