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.

[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏

359 views

Published on

[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏

Published in: Technology
  • Be the first to comment

[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏

  1. 1. AWSを利用した サーバーレス開発の実践 アイレット株式会社 cloudpack事業部 高橋直樹
  2. 2. 自己紹介 • 名前 : 高橋 直樹(たかはし なおき) • 仕事 : cloudpack エンジニア • 好き : AWS, Python, C#, Vue.js, • 趣味 : お酒・食事・勉強会参加・天一 • Facebook : /naoki.takahashi.39501 • Twitter : @uniunix
  3. 3. お約束 本資料の内容と発表での発言は、あ くまで個人の見解であり、所属する 組織の公式見解ではありません。 AWSサービスを使用する際には、公 式サイトの情報を確認の上で、使用 してください。(特に費用面)
  4. 4. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  5. 5. サーバーレス開発とは? 一般的なWebシステムでは、プログラムを動かすため のサーバーが必要となり、スケーラビリティを考えたサー バーの設計や構築、24時間稼働させるための運用方法 の検討などが必要になってきます。 サーバーレスなシステムは、その常識を覆すサーバー を必要としないサービス(AWSではLambda)を使用し、 サーバー自体のコストだけではなく、保守・運用のコスト を削減するための手法です。
  6. 6. サーバーレス開発とは? 具体的には、、 • サーバーレスアーキテクチャ NoWebサーバーでプログラムを実行するサービスを、処理 の中心に据え、そのほかの機能についても、フルマネージド なサービスで構成するシステム • サーバーレス開発 サーバーレスアーキテクチャによる開発プロジェクト
  7. 7. サーバーレス開発とは? AWSでは・・・ サーバーレスコンピューティングにより、アプリケーションとサービスを構築して実行 する際に、サーバーについて検討する必要がなくなります。サーバーレスアプリケー ションでは、サーバーのプロビジョニング、スケーリング、および管理は必要ありませ ん。サーバーレスアプリケーションはほぼすべてのタイプのアプリケーションまたは バックエンドサービス用に構築でき、高可用性を実現しながら、アプリケーションの 実行およびスケーリングに必要なことがすべて自動的に行われます。 サーバーレスアプリケーションを構築することで、開発者は、クラウドでもオンプレミス でも、サーバーやランタイムの管理や操作に煩わされず、コア製品に集中することが できます。このようなオーバーヘッドの削減によって、開発者は、スケーラブルで信 頼性の高い優れた製品の開発に費やすために時間とエネルギーを取り戻すことが できます。 参考: https://aws.amazon.com/jp/serverless/
  8. 8. サーバーレス開発とは? やった!! これで勝つる!!!
  9. 9. サーバーレス開発とは? と・・・ おもうだろ?
  10. 10. サーバーレス開発とは? 本資料では、サーバーレス開発の良い 面だけではなく、サーバーレス開発の課 題と言える面やその対策、今後自分がど のようにサーバーレス開発を実践してい くか?といったことを発表したいと思いま す。
  11. 11. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  12. 12. サーバーレスアーキテクチャの特徴 • 主な特徴 • イベント駆動型で実行されるためコストが低い 参照: https://cloudpack.jp/pdf/cloudpack_ServerlessWhitePaper.pdf
  13. 13. サーバーレスアーキテクチャの特徴 • 主な特徴 • セキュリティリスクが低い Lambdaの実行環境では、実行されるプログラム以外(裏で 動いているWebサーバー、OS、ライブラリ等)のセキュリティ アップデート等の実施をAWSが責任を持って実施します。 参照: https://cloudpack.jp/pdf/cloudpack_ServerlessWhitePaper.pdf
  14. 14. サーバーレスアーキテクチャの特徴 ただし、もちろん良いことばかりではありません。
  15. 15. サーバーレスアーキテクチャの特徴 • 主な特徴 • 設計手法の違い Lambdaは、イベント駆動実行され、実行時のメモリ空間(サ バーも)は、物理的に独立しています。そのため、1つのWeb サーバーで動作するプログラムとは違う考え方で設計しなけ ればいけません。 複数のCPUで、各プログラムが並列に動作するイメージを 持って設計する必要があります。 参照: https://cloudpack.jp/pdf/cloudpack_ServerlessWhitePaper.pdf
  16. 16. サーバーレスアーキテクチャの特徴 • 主な特徴 • 実行時に制限がある Lambdaの実行時間は、一回で最大5分となっています。その ため、実行時間を考えた設計が必要になります。 また、ファイル等の保存は実行環境ではできないため(temp 領域はあります)S3などのストレージへ保存して置く必要があ ります。 (制限事項について、詳しくは後述します) 参照: https://cloudpack.jp/pdf/cloudpack_ServerlessWhitePaper.pdf
  17. 17. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  18. 18. サーバーレスアーキテクチャの特徴 • コストについて サーバーレス開発では、コスト面で常にWebサーバーを 起動しておかなければいけないシステムよりも安くなりま す。
  19. 19. サーバーレスアーキテクチャの特徴 例えば月にかかる費用を計算すると・・・ • EC2を4台(web x 2 , DB x 2)で構成した場合 EC2(t2.medium):$0.0608 /1 時間(東京リージョン) 0.0608 x 24 x 30 = $43.776 = 4 934円 x 4台 = 約2万円
  20. 20. サーバーレスアーキテクチャの特徴 • LambdaとS3で構成した場合 1 か月に100万リクエスト、40万 GB-秒の使用時間は無料。 S3の静的ウェブサイトホスティングを利用する場合、 データ容量 : 最初の50TBまで $0.025/GBあたり月 データ転送料 : PUT, COPY, POST, LIST $0.0047 / 1000リクエスト GET $0.0037/ 10000リクエスト 10Gの静的webサイトに、月100万アクセスがあるとして $0.25 + アクセス($0.37) = $0.62 = 100円未満
  21. 21. サーバーレスアーキテクチャの特徴 立ち上げたばかりのWebサービスであれば、月のアクセ スが100万を超えることは、なかなか無いと考えると、 Lambdaでの構成が、いかに割安になるかわかると思い ます。
  22. 22. サーバーレスアーキテクチャの特徴 ただし、もちろん良いことばかりではありません。
  23. 23. サーバーレスアーキテクチャの特徴 サーバーが無いということは開発時の設計をしっかり行 わなければ、システムとして破綻するため、開発にかか る費用は一般的な開発よりも高額になります。
  24. 24. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  25. 25. サーバーレスアーキテクチャの特徴 • 使用するサービス AWSのサービスで、Lambdaと連携(イベントをきっかけ にLambdaを呼び出せる)できる主なサービスは次の通り です。
  26. 26. 参照: http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invoking-lambda-function.html • Amazon S3 • Amazon DynamoDB • Amazon Kinesis Streams • Amazon Simple Notification Service • Amazon Simple Email Service • Amazon Cognito • AWS CloudFormation • Amazon CloudWatch Logs • Amazon CloudWatch Events • AWS CodeCommit • スケジュールされたイベント (Amazon CloudWatch Events を使用) • AWS Config • Amazon Alexa • Amazon Lex • Amazon API Gateway • AWS IoT ボタン • Amazon CloudFront • Amazon Kinesis Firehose • その他のイベントソース: オンデマンドで Lambda 関数を呼び出す • イベントソースによって公開されたサンプルイベント
  27. 27. 参照: http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/invoking-lambda-function.html • Amazon S3 • Amazon DynamoDB • Amazon Kinesis Streams • Amazon Simple Notification Service • Amazon Simple Email Service • Amazon Cognito • AWS CloudFormation • Amazon CloudWatch Logs • Amazon CloudWatch Events • AWS CodeCommit • スケジュールされたイベント (Amazon CloudWatch Events を使用) • AWS Config • Amazon Alexa • Amazon Lex • Amazon API Gateway • AWS IoT ボタン • Amazon CloudFront • Amazon Kinesis Firehose • その他のイベントソース: オンデマンドで Lambda 関数を呼び出す • イベントソースによって公開されたサンプルイベント おおいわ・・・
  28. 28. サーバーレスアーキテクチャの特徴 よく使うものとしては・・・ • API Gateway • Cloud Watch Eventsを利用したスケジューリング この2つさえあれば、大概のことはできると思います。
  29. 29. サーバーレスアーキテクチャの特徴 • API Gateway Lambdaは他のサービスやWebから直接呼び出すことは できないため、WebシステムでLambdaをフロント側から 呼び出す際には、API Gatewayを必ず使用します。
  30. 30. サーバーレスアーキテクチャの特徴 • Cloud Watch Eventsを利用したスケジューリング 定期的にLambdaを実行したい場合に使用します。 記載例) rate(1 minute) ・・・ 1分ごとに実行 rate(5 minutes) ・・・ 5分ごとに実行 cron(* 2 * * ? * ) ・・・ 2時間ごとに実行
  31. 31. サーバーレスアーキテクチャの特徴 サーバーレスアーキテクチャでの最大のメリットは低いコ ストでサービスを開始できることです。 と考えると、使用 するサービスも、低コストなものを選んでいった方が良い と言えます。 続いて、AWS以外でLambda(API Gateway)と連携する サービスを紹介します。
  32. 32. サーバーレスアーキテクチャの特徴 • データベース データベースについては、EC2を利 用してもRDSを利用しても、それなり の料金がかかります。 私の経験し たサーバーレスアーキテクチャのシ ステムではkintoneをデータベースと して使用しています。
  33. 33. サーバーレスアーキテクチャの特徴 • メール送付 システムの中で、メールを送付した いケースは多々あると思います。 その際に使用しているサービス。 AWSにもSESというサービスがあるの ですが、現状ではSendGridが使い やすかったです。
  34. 34. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  35. 35. サーバーレス開発で気をつけるべきこと • 制限事項 サーバーレス開発では、それ以外の開発では無い様々 な制限事項があります。 これらを考慮せずに、開発を進めると思わぬ落とし穴に はまるので、設計時に十分考慮しておきましょう。
  36. 36. サーバーレス開発で気をつけるべきこと • Lambdaの制限事項 • メモリの制限 最小128M 最大1536M • 最大実行時間 300 秒 • ファイル記述子 1024 • プロセス・スレッド 1024 • 同時実行数 1000/ アカウント • 環境変数の容量 4 KB
  37. 37. サーバーレス開発で気をつけるべきこと • Lambdaの制限事項 • メモリの制限 最小128M 最大1536M • 最大実行時間 300 秒 • ファイル記述子 1024 • プロセス・スレッド 1024 • 同時実行数 1000/ アカウント • 環境変数の容量 4 KB 環境変数に何でもか んでもはダメ。絶対。
  38. 38. サーバーレス開発で気をつけるべきこと • API Gatewayの制限事項 • API数 60 • API あたりのリソース 300 • API あたりのステージ 10 • API キャッシュ TTL 0〜3600秒 • 統合のタイムアウト 30秒
  39. 39. サーバーレス開発で気をつけるべきこと • API Gatewayの制限事項 • API数 60 • API あたりのリソース 300 • API あたりのステージ 10 • API キャッシュ TTL 0〜3600秒 • 統合のタイムアウト 30秒 つまり30秒制限ね。
  40. 40. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  41. 41. サーバーレス開発で気をつけるべきこと • 開発のコツ サーバーレス開発では、今まで紹介した制限事項を踏 まえた上で、設計を行う必要があります。
  42. 42. サーバーレス開発で気をつけるべきこと • その1 ・・・ そのアーキテクチャでいいの? 本当にサーバーレスアーキテクチャが必要かをよく考え る。 正直、開発はサーバーがある場合よりも苦労が多 いです。 その上、サーバーレスアーキテクチャでも、あ まりにも呼び出し回数が多いようなサービスでは、あると ころを境に価格が跳ね上がることがあります。 事前に、サーバーレスアーキテクチャが必要かどうかを よく検討しましょう。
  43. 43. サーバーレス開発で気をつけるべきこと • その2 ・・・ Lambda関数は小さく分ける Lambdaで実装を行う場合、大きな一つのLambdaですべ てを実装するのではなく「たくさんのLambdaが次々呼び 出されることで、全体のシステムが動く」ように、できるだ け小さなLambdaの集合として作るようにします。
  44. 44. サーバーレス開発で気をつけるべきこと • その3 ・・・ イベントソースについて 基本的には、API GatewayとCloudwatch Eventsで事足り ると思いますが、むやみやたらに呼び出すのではなく、 例えば、API Gatewayを直接呼ぶのではなく、Cloud Front経由でキャッシュを使用する。 などすることで、よ りコストを抑えた設計が可能になります。
  45. 45. サーバーレス開発で気をつけるべきこと • その4 ・・・ デプロイは自動化する たくさんのLambdaを、AWS Consoleから管理するのは非 常に大変です。 Serverless Frameworkを使用して管理し ましょう。 この際、共通のDeployment Bucketを指定して 置くことをお勧めします。 アカウントごとの S3 Bucket数には100という制限があるた め、Lambdaが増えてくると制限を超えることがあります。
  46. 46. サーバーレス開発で気をつけるべきこと • その5 ・・・ SEO対策について Lambdaで動的にWebサイトを作成する際の注意点とし て、SEO対策に弱くなる。ということが挙げられます。 これを回避するには、あらかじめLambdaでSSRをおこな た結果をS3に保存して置くなど、一手間かける必要があ ります。
  47. 47. サーバーレス開発で気をつけるべきこと • その6 ・・・ 保守・運用について サーバーレスでは、開発後の保守・運用・・・とくに運用 体制についてよく考えておかなければなりません。 サーバーレスでのエラーは、サーバー再起動で治ること はないため、アラートが発生した場合に対応できるのは 開発者(かそれに類する人)だけという場合が多くなりま す。 どのようにシステムを監視するか・・・そこまでをプ ロジェクト開始前に検討しておきましょう。
  48. 48. アジェンダ • サーバーレス開発とは? • サーバーレスアーキテクチャの特徴 • 主な特徴 • コストについて • 使用するサービス • サーバーレス開発で気をつけるべきこと • 制限事項 • 開発のコツ • まとめ
  49. 49. まとめ • 初期の運用コストは(かなり)安く済む • サーバー有りとは違った設計が必要 • 運用まで考えた開発を!
  50. 50. 参考資料 • cloudpack サーバーレス開発ホワイトペーパー https://cloudpack.jp/whitepaper/serverless.html • サーバーレスコンピューティングとアプリケーション https://aws.amazon.com/jp/serverless/ • いらすと屋 http://www.irasutoya.com/
  51. 51. ご清聴ありがとうございました!

×