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.

AWS Lambda のご紹介 2015 JAWS沖縄

5,044 views

Published on

AWS Lambda のご紹介 2015 JAWS沖縄

Published in: Technology
  • Be the first to comment

AWS Lambda のご紹介 2015 JAWS沖縄

  1. 1. 知らなきゃ損する!? AWS  Lambdaの使い⽅方 アマゾン  データ  サービス  ジャパン  株式会社 パートナーソリューションアーキテクト 榎並利利晃
  2. 2. ⾃自⼰己紹介 •  名前 –  榎並  利利晃(えなみ  としあき) –  toshiake@amazon.co.jp •  役割 –  パートナーソリューションアーキテクト –  主にエマージングパートナー様を担当 •  好きなAWSのサービス –  Amazon  Kinesis –  AWS  Lambda @ToshiakiEnami
  3. 3. Lambda祭り勃発!
  4. 4. AWS  Lambdaとは •  クラウド上で、イベントをトリガーに独⾃自のコード を稼働させるComputeサービス –  EC2インスタンスやOS等インフラの管理理作業が不不要 –  毎⽇日数件から毎秒数千件のリクエストまで⾃自動的にスケール –  従量量課⾦金金、実際にコードが稼働した時間に対してのお⽀支払 –  新たに追加された情報(イベント)に対して即座に応答するアプリ ケーションを、特別な仕組みなく簡単に実装できる
  5. 5. 特徴
  6. 6. インフラの管理理が不不要 •  ビジネスロジックにフォーカス できる •  コードをアップロードするだけ で、あとはAWS  Lambdaが以 下をハンドリング –  キャパシティ –  スケール –  デプロイ –  耐障害性 –  モニタリング –  ロギング –  セキュリティパッチの適⽤用
  7. 7. オートスケール •  イベントのレートに合うように Lambdaが⾃自動でスケール •  プロビジョニング中や完了了を気にす る必要なし •  コードが稼働した分だけのお⽀支払い
  8. 8. Bring  your  own  code •  Node.jsで書かれたコードを実⾏行行 •  コード内では以下も可能 –  スレッド/プロセスの⽣生成 –  バッチスクリプトや何らかの実⾏行行ファイルの 実⾏行行 –  /tmpのread/write •  各種ライブラリも利利⽤用可能 –  ネイティブライブラリも可能 –  利利⽤用するライブラリを⼀一緒にアップロード
  9. 9. 多彩なイベント呼び出し •  Pull型 –  Amazon  Kinesis –  Amazon  DynamoDB  Streams •  Push型 –  Amazon  S3  Event  Notification –  Amazon  SNS –  Invoke  API(同期、⾮非同期)
  10. 10. 細やかな料料⾦金金体系 •  100ミリ秒単位でのコンピュー ト時間に対する価格設定 •  リクエストに対する低額の課⾦金金 •  ⼗十分な無料料枠
  11. 11. ユースケース
  12. 12. イメージリサイズ、サムネイル⽣生成   •  S3に画像がアップロードされたときにサムネイ ルの⽣生成やリサイズを実⾏行行 AWS LambdaAmazon S3 Bucket イベント 元画像 サムネイル画像 1 2 3
  13. 13. 値チェックや別テーブルへのコピー •  DynamoDBへの書き込みに応じて値チェックを しつつ別テーブルの更更新やプッシュ通知を実⾏行行 AWS Lambda Amazon DynamoDB Table and Stream プッシュ通知 別テーブルを更新
  14. 14. 監査と通知 •  S3に保管されるCloudTrailのログを分析し、怪 しい⾏行行動や異異常を検知したら通知する AWS APIコール AWS CloudTrail Logs AWS Lambda Bucketイベント プッシュ通知
  15. 15. ⼝口コミアプリ •  投稿の書き込み/表⽰示はDynamoDBと直接 •  レートの計算はモバイルアプリから直接Lambdaを実⾏行行し⾮非 同期で実⾏行行 1.  認証・認可 ・  FBアプリと連携 Cognito DynamoDBApp  with   AWS  Mobile   SDK 2.  ⼝口コミの投稿 ・  投稿内容とレーティング 4.  過去の全データを元に平均値の計算と     結果のDynamoDBへの登録等 3.  Lambda  functionの起動 Lambda
  16. 16. Followers 写真共有モバイルアプリ 4.  メタデータをDynamoDBに登録 -‐‑‒  タイトル、コメント等 1.  認証・認可 ・  FBアプリと連携 6.  Push通知 -‐‑‒  フレンドやフォロワーに通知 Cognito Mobile  Analytics DynamoDB S3 SNS7.  画像をポストしたことをAnalyticsに登録 3.  画像のリサイズ 2.  S3への画像アップロード 5.  結果をSNSへ通知 App  with   AWS  Mobile   SDK
  17. 17. IoT  BaaS   Event:     Arrived  Home   Command:     Lights  On  
  18. 18. デモ
  19. 19. イメージリサイズ、サムネイル⽣生成   AWS LambdaAmazon S3 Bucket イベント 元画像 サムネイル画像 1 2 3
  20. 20. LambdaでCGI EC2無しで動的なサイト構築も!
  21. 21. AWS上のシステムのインシデント管理理をkintoneで AWS  Lambdaアプリケーション サーバ CloudWatch   Logs Amazon  SNS トリガー検知によるワークフローの⾃自動起票!
  22. 22. AWS  Lambdaの使い⽅方
  23. 23. 画⾯面
  24. 24. 画⾯面
  25. 25. 画⾯面
  26. 26. イベントソース •  イベントの発⽣生元となるAWSリソース •  現時点以下のAWSサービスをサポート –  Amazon  S3 –  Amazon  Kinesis –  Amazon  DynamoDB  Stream(Preview) –  Amazon  Cognito –  Amazon  SNS
  27. 27. イベント例例(S3) { "Records": [       -- 省省略略 –       "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "sourcebucket", "ownerIdentity": { "principalId": "A3NL1KOZZKExample" }, "arn": "arn:aws:s3:::mybucket" }, "object": { "key": "sourcebucket/HappyFace.jpg", "size": 1024, "eTag": "d41d8cd98f00b204e9800998ecf8427e" } } } ] }
  28. 28. イベント例例(Kinesis) { "Records": [ { "awsRegion": "us-east-1", "sequenceNumber": "196800000000000000000374", "partitionKey": "2efdb0ea22685b46993e42a67302a001", "eventSource": "aws:kinesis", "data": "SOME CUSTOM DATA 1" }, { "awsRegion": "us-east-1", "sequenceNumber": "196800000000000000000571", "partitionKey": "2efdb0ea22685b46993e42a67302a003", "eventSource": "aws:kinesis", "data": "{ "key": "value" }" } ] }
  29. 29. ユーザアプリケーションからのInvoke •  AWS  SDKもしくはAWS  Mobile  SDKを利利⽤用 •  Invoke時にInvocation  Typeを指定する –  Event •  ⾮非同期実⾏行行 •  レスポンス内容はリクエストが正常に受け付けられたかどうかのみ –  RequestResponse •  同期実⾏行行 •  実⾏行行が完了了時にレスポンスが返ってくる。レスポンス内容は Lambdaファンクション内でセット可能
  30. 30. モニタリング •  ダッシュボード –  全てのLambdaファンク ションのリスト –  可視化されたメトリクス •  CloudWatchを⽤用いた Metricsの監視 –  Invocations –  Errors –  Duration –  Throttle
  31. 31. 制限事項 •  Lambdaファンクションのリソース リソース 制限 /tmpスペース 512MB ファイルディスクリプタ数 1024 プロセス数およびスレッド数(合計) 1024 同時リクエスト数(プレビュー期間中) 25リクエスト/秒 1リクエストあたりの実行時間(プレビュー期間中) 60秒 •  インプット インプット 制限 zipファイル(圧縮) 30MB zipファイル(無圧縮) 250MB InvokeAsyncのリクエストボディ(JSON) 128KB
  32. 32. 料料⾦金金体系 •  リクエスト  (全リージョン) –  ⽉月間100万リクエストまでは無料料 –  超過分は$0.20/100万リクエスト (1リクエストあたり$0.0000002) •  実⾏行行時間  (全リージョン) –  100ms単位で課⾦金金 –  100ms以下は繰り上げで計算 –  メモリー容量量により単価および無 料料時間が異異なる Memory (MB) Price per 100ms ($) Free tier seconds per month 128 0.000000208" 3,200,000 192 0.000000313" 2,133,333 256 0.000000417" 1,600,000 320 0.000000521" 1,280,000 384 0.000000625" 1,066,667 448 0.000000729" 914,286 512 0.000000834" 800,000 576 0.000000938" 711,111 640 0.000001042" 640,000 704 0.000001146" 581,818 768 0.00000125" 533,333 832 0.000001354" 492,308 896 0.000001459" 457,143 960 0.000001563" 426,667 1024 0.000001667" 400,000
  33. 33. 2Tier  Architecture
  34. 34. 2-‐‑‒Tier  Architectureとは? •  いわゆるサーバレスな、クライアントとバックエンドだけのアーキ テクチャ –  AWS  SDKとマネージドサービスを積極的に利利⽤用 –  モバイルアプリやブラウザから直接AWSサービスを呼ぶ •  特にモバイルにおすすめ 直接呼び出し
  35. 35. 2-‐‑‒Tier  Architectureのメリット •  アプリの開発に多くのメリット: –  バックエンド側の開発コストを最⼩小化 –  バックエンド側の運⽤用コストを最⼩小化 –  スケーラビリティの⼼心配なし –  バックエンドのEC2を減らせるため⾦金金額⾯面でもローコスト(当社⽐比*) •  必要に応じてEC2も導⼊入できる安⼼心感 –  後からバックエンド側にロジックを⼊入れてシステムの最適化ことも可能 •  よりビジネスに集中することが可能 *  EC2で同規模のサーバを⽴立立てる場合に⽐比べ
  36. 36. まとめ
  37. 37. 本⽇日のまとめ •  AWS  Lambdaは、インフラの管理理不不要で、⾃自分のコー ドを実⾏行行できるコンピュートサービス •  シンプルかつ可⽤用性の⾼高いアーキテクチャを構築する ことができる •  AWS  Lambda含め、AWSマネージドサービスをうまく 活⽤用する2Tier-‐‑‒Architectureでクラウドネイティブなシ ステムを構築
  38. 38. ところで。。
  39. 39. kintoneとAWSの素敵な関係
  40. 40. kintoneとAWSは補完関係! •  ⼤大量量なコンピュートやスト レージが必要ところはAWS •  業務に近いところはkintone
  41. 41. kintoneとAWSは補完関係! モバイル センサー 親機 ダッシュ ボードア プリ ワーク フロー 例例えば、IoTのシステムを構築する場合
  42. 42. kintoneからの 定期データ取得 Amazon ML batch APIで予 測をクエリーする kintoneとAWSは補完関係! 予測データ セット 例例えば、Amazon  Machine  Learningを使ったデータ予測を⾏行行う場合

×