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.

Techon01 09-july-2018

1,230 views

Published on

TechOn東京#01の発表資料です。

Published in: Software
  • Be the first to comment

Techon01 09-july-2018

  1. 1. ローカル環境で 気軽に始めるサーバーレス Tech-on Meet Up #01 2018/07/09(Mon) 平瀬 達也
  2. 2. 自己紹介 - 平瀬 達也 ( ひらせ たつや ) / @TatchNicolas - SIer で業務アプリ開発 -> 研究機関向け AWS 導入 -> Twitter 転職 - 2018/08/01 〜JX通信社にてインフラ・バックエンド開発を担当する予定 - なんちゃってイギリス英語とオネエな中国語を話すエセ関西人 - #インフラ勉強会 に時々現れます - 最近は友人の誘いで釣りを始めました
  3. 3. サーバーレスを始めるときの悩み
  4. 4. サーバーレスを始めるときの悩み - 会社だと - 各種申請が必要 / そもそもクラウドの利用が許されない - 自由に検証できるアカウント / 時間がない - 自宅だと - ( 少額でも ) やはり費用が気になる - 共通 - Commit / Upload する前にちょっとした動作確認ぐらいしたい
  5. 5. 身近におこった悲劇
  6. 6. 身近に起こった悲劇 - 無限ループによる高額請求 - S3 への Put をトリガーに整形処理をして結果を S3 に ... - 定期実行の単位違い - API Gateway 経由で DynamoDB に毎分格納 ... が毎秒に ...
  7. 7. ローカルで動かすには大きく分けて2つの方向性 1. 疑似的なクラウド環境を用意するパターン 2. 可搬性を高めるパターン
  8. 8. 1. 疑似的なクラウド環境を用意するパターン 使えるツール、フレームワークたち - AWS - SAM CLI : ローカルの実行環境 + デプロイ - DynamoDB Local : DynamoDB のモック、 jar として入手でき る - OSS - Serverless Framework: ローカルの実行環境 + デプロイ - localstack : DynamoDB 含む AWS サービスのモック
  9. 9. 1. 疑似的なクラウド環境を用意するパターン - SAM CLI + DynamoDB Local - 実態はリージョンごとの .jar ファイル - DynamoDB Local を Docker に固めてしまうと楽 ( 例) - 全部落として引数などで処理分けても良いかも docker run -p 8000:8000 dynamolocal - SAM + localstack - python または docker で動かせる pip install localstack localstack start or localstack start --docker - docker-compose.ymlがあるのでそのまま使っても良い
  10. 10. - SAM CLI で呼び出すとき - Lambda コード内でエンドポイントを指定しておく boto3.client('dynamodb', endpoint_url=xxx) - そのまま使うなら < ホストの docker0 の IP>:< サービスごとのポート > - SAM と localstack のコンテナで、 localhost の文脈が違う - 実行 - sam local invoke --event event.json - echo ‘{“foo”:”bar”}’|sam local invoke --event event.json - ローカルに API Gateway のエンドポイントを立てる - sam local start-api 1. 疑似的なクラウド環境を用意するパターン
  11. 11. - serverless + DynamoDB Local 又は serverless + localstack - SAM CLI との違い - boto3/aws-sdk はローカル環境にないと動かない - SAM CLI では実行する Docker コンテナのなかにあるので不要 - serverless は localhost:< サービスごとのポート > でも動く - 呼び出すとき sls invole local -f < 関数名 > - endpoint=<localhost or docker0 の IP>:< サービスごとのポート > - (Node.js 限定 )serverless-offline で HTTP(S) のエンドポイントも - sls offline start - (Node.js 限定 )serverless-dynamodb-local で DynamoDB Local も 1. 疑似的なクラウド環境を用意するパターン
  12. 12. 2. 可搬性を高めるパターン - 任意の Web サーバで受けられるようにする - コードの修正が必要になる - ロックインされなくなる - FaaS じゃなくて PaaS に引っ越しもできる - 障害時に避難できる
  13. 13. 2. 可搬性を高めるパターン - 普通にスクリプトとしてそのまま実行できるようにする - Web アプリケーションフレームワークに歩み寄る - 使えるツール、フレームワーク - awsgi - Zappa - 参考 - Web+DB Press Vol. 105 「実践サーバレス」 - Hub & AWS Lambdaエンジニア 「サーバレスのメリット 本質を、 を使って理解しよう」
  14. 14. まとめ 1. 疑似的なクラウド環境を用意するパターン - ツールの機能でデプロイまで面倒みてくれる - コードはそのままで良い - 環境の再現は完全ではない 1. 可搬性を高めるパターン - FaaS 以外の環境にも移動できる - ベンダーロックイン回避 / 障害時の対策として - すでにあるコードは修正がいる
  15. 15. ありがとうございました

×