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 事始め

1,769 views

Published on

JAWS-UG広島 第3回勉強会 と JAWS-UG KANSAI特別編 「AWSを使い倒せ。AWSのフルマネージドサービス活用によるネイティブクラウドシステムへの誘い」で発表した資料になります

Published in: Software
  • Be the first to comment

Aws lambda 事始め

  1. 1. Iot時代のサービス  <AWS  Lambda>事始め アイレット株式会社 2014.02.21 cloudpack ⽐比企  宏之
  2. 2. ●  ⽐比企  宏之  (ひき  ひろゆき) ●  cloudpack  グループリーダー ●  JAWS-‐‑‒UG⼤大阪⽀支部⻑⾧長 ●  JAWS-‐‑‒UG関⻄西エリアリーダー(関⻄西エリア取り纏め) ●  JAWS-‐‑‒UG  初代(唯⼀一)MVP  受賞 ●  好きなAWSサービス  :  AWS  Direct  Connect              @unioce              facebook.com/hiroyuki.hiki 趣味  ガンダムとアクアリウム
  3. 3. 10,000社を超えるパートナーの中で、 最上位のパートナーである APNプレミアコンサルティングパートナー に3年年連続認定
  4. 4. IoTとは? 「モノのインターネット」(Internet  of  Things:IoT) コンピュータなどの情報・通信機器だけでなく、 世の中に存在する様々なモノに通信機能を持たせ、 インターネットに接続したり相互に通信することにより、 自動認識や自動制御、遠隔計測などを行うこと。 (Internet  of  Everything:IoE) IoTにさらに⼈人も含めた概念念。
  5. 5. IoTとは? 「モノのインターネット」(Internet  of  Things:IoT) コンピュータなどの情報・通信機器だけでなく、 世の中に存在する様々なモノに通信機能を持たせ、 IoTに向いているAWSのサービスは ⾊色々ありますが 今回はLambdaを紹介。
  6. 6. AWS Lambdaとは? •サーバーの負荷を気にせずインフラの管理理不不要(    AWS側が裏裏で⾃自動でスケールアウトしてくれる) •使った分だけの課⾦金金(リクエスト数+(時間✖️メモリ)) •課⾦金金は100ミリ秒単位 •実装⾔言語はNode.js(今は)でLambdaファンクションを    コーディングしデプロイするだけで使⽤用可能。 •AWS上の特定のサービスのイベントやデータを処理理
  7. 7. AWS Lambdaの活用ポイント •S3へのファイル操作が⾏行行われた時の処理理 •DinamoDBでデータ操作が⾏行行われた時の  ストアドプロシージャとして •スマフォアプリのバックエンド(BaaS)として •キネシスに流流れ込んできた機器などのデータの処理理
  8. 8. AWS Lambdaの大事なポイント •対応イベント(データ) •Lambdaファンクション •pushモデル  と  pullモデル  という利利⽤用形態 •呼び出し側  (invocation  role)  と  実⾏行行側  (    excution  role)  のIAMロールの設定
  9. 9. 対応イベント •AWS  SDK •Amazon  S3 •Amazon  DynamoDB •Amazon  Kinesis
  10. 10. Lambdaファンクション(何が出来るの?) •Node.jsの関数で出来る事は⼤大体出来る •Node.jsのnpmも使える(    AWS  SDKも使える) •CoffeeScriptでも記述可能
  11. 11. Lambdaファンクション(何が出来ないの?) •Lambdaファンクション単体で    データを保持する事が出来ない •VPCが使えない(RDSなどにVPCの機能を    使ったセキュアな接続が出来ない)
  12. 12. Lambdaファンクションのデプロイ方法 •コンソール上のエディタ、または    ZIPファイルアップロードでプロジェクトをUP    ※nmpのライブラリはZIPファイルにまとめてUP •リソースサイズ(性能)の設定    ※128MBから1GBの範囲で64MB毎の設定 •タイムアウト値は1秒から60秒で設定 •Lambdaファンクションにひもづける  イベントの指定
  13. 13. Lambdaファンクションのデプロイ方法(画面) •コンソール上のエディタ、または    ZIPファイルアップロードでプロジェクトをUP    ※nmpのライブラリはZIPファイルにまとめてUP •リソースサイズ(性能)の設定    ※128MBから1GBの範囲で64MB毎の設定 •タイムアウト値は1秒から60秒で設定 •Lambdaファンクションにひもづける  イベントの指定 画⾯面でJSで登録するか? プロジェクトを アップロードするか?
  14. 14. Lambdaファンクションのデプロイ方法(画面) •コンソール上のエディタ、または    ZIPファイルアップロードでプロジェクトをUP    ※nmpのライブラリはZIPファイルにまとめてUP •リソースサイズ(性能)の設定    ※128MBから1GBの範囲で64MB毎の設定 •タイムアウト値は1秒から60秒で設定 •Lambdaファンクションにひもづける  イベントの指定 画⾯面でJSを編集可能
  15. 15. Lambdaファンクションのデプロイ方法(画面) •コンソール上のエディタ、または    ZIPファイルアップロードでプロジェクトをUP    ※nmpのライブラリはZIPファイルにまとめてUP •リソースサイズ(性能)の設定    ※128MBから1GBの範囲で64MB毎の設定 •タイムアウト値は1秒から60秒で設定 •Lambdaファンクションにひもづける  イベントの指定 ロールの設定
  16. 16. Lambdaファンクションのデプロイ方法(画面) •コンソール上のエディタ、または    ZIPファイルアップロードでプロジェクトをUP    ※nmpのライブラリはZIPファイルにまとめてUP •リソースサイズ(性能)の設定    ※128MBから1GBの範囲で64MB毎の設定 •タイムアウト値は1秒から60秒で設定 •Lambdaファンクションにひもづける  イベントの指定 コンテナのメモリと タイムアウト値の設定
  17. 17. pushモデル と pullモデル という利用形態 pushモデル •Amazon  S3とカスタムイベント(    SDKからのコール) •実⾏行行順番は不不明 •三回までリトライ
  18. 18. pushモデル と pullモデル という利用形態 pullモデル •Amazon  DynamoDB/Amazon  Kinesis •順序性あり •イベントごとの複数レコード対応 •データが期限切切れになるまでリトライ
  19. 19. 呼び出し側 (invocation role) と
 実行側 (excution role) のIAMロールの設定 Invaocation  Role    どの機能がLambdaファンクションを実⾏行行するか Execution  Role    どのAWS機能をLambdaファンクションが実⾏行行するか
  20. 20. ネイティブライブラリの実行 Lambdaファンクションで使う ネイティブライブラリを ビルドしてパッケージにして プロジェクトに取り込む事も可能 ※AMAZON  Linuxでビルドしたもの
  21. 21. コンテナのライフサイクル 開始 ファンクションの作成後、またはコードや設定更更新後の 初回実⾏行行時にコンテナが作成されて、 コードがコンテナ内にロードされる。 終了了 •Timeout時 •context.done()呼び出し時 •クラッシュ時 •process.exit()呼び出し時
  22. 22. コンテナのライフサイクル 再利利⽤用 •前回の実⾏行行時からある程度度時間が経過した後に    再度度実⾏行行される場合は新規でコンテナが作成される。 •前回の実⾏行行から時間が⽴立立っていない場合はコンテナの    再利利⽤用の可能性がある。 再利利⽤用を前提にしたコードは バグの元
  23. 23. モニタリング Cloud  WatchによるMetricsの監視 •レイテンシ •リクエスト数 •Errors数
  24. 24. 制限事項(1コンテナあたり) リソース 制限 /tmp スペース 512MB ファイルディスクリプタ 1024 プロセス数およびスレッド数(合計) 1024 インプット 制限 ZIPファイル 30MB InvokeAsyncのリクエスト(JSON) 128KB
  25. 25. 料金体系 リクエスト数 •毎⽉月最初の  1,000,000  件は無料料 •その後は  0.20  USD/1,000,000  件の  リクエスト(0.0000002  USD/秒) 時間 コードの実⾏行行が開始からコードが返されるか 中⽌止されるまでで計算され、100  ミリ秒単位 で切切り上げ。
  26. 26. 料金体系 メモリ メモリ(MB) 100 ミリ秒単位の価格 128 0.000000208 192 0.000000313 256 0.000000417 320 0.000000521 384 0.000000625 448 0.000000729 512 0.000000834 メモリ(MB) 100 ミリ秒単位の価格 576 0.000000938 640 0.000001042 704 0.000001146 768 0.000001250 832 0.000001354 896 0.000001459 960 0.000001563 1024 0.000001667 1⽉月あたり最⼤大320万秒のコンピュート処理理時間(128MB時。 メモリが増えると減る)が無料料。
  27. 27. まとめ •BaaSのような使い⽅方も出来るけど    基本はAWSのサービス間をつなぐスクリプト •サーバーの管理理不不要で勝⼿手にスケールアウト    してくれるので便便利利 •Node.js⾃自体に癖がある(コールバックメイン)けど    慣れているエンジニアならタイムアウトも    考慮するので問題なし? •WEBのサーバー部分を素直に実装したいなら    AWS  Elastic  Beanstalkで
  28. 28. クラウド電話 twillio
  29. 29. Cloudpack⼤大阪⽀支社(東京も) クラウドで⼀一緒に流流れを 変えたい同志を絶賛募集中です ※開発だけどインフラに興味ある⼈人も 話を聴きたい⽅方は是⾮非⽐比企まで 30
  30. 30. Cloudpack⼤大阪⽀支社(東京も) クラウドで⼀一緒に流流れを 変えたい同志を絶賛募集中です ※開発だけどインフラに興味ある⼈人も 話を聴きたい⽅方は是⾮非⽐比企まで 31 アウトソーシングの開発で コンペやお客様から 買いたたかれたりして うんざりしているエンジニアは 特に話をしたいですw
  31. 31. 32
  32. 32. ご清聴ありがとうございました

×