モバイルファースト時代のクラウドネイティブアーキテクチャ jaws days 2015

Post on 18-Jul-2015

3.113 Views

Category:

Mobile

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

お待ちしております!

top related