Upgrade to Pro — share decks privately, control downloads, hide ads and more …

dev_io_osaka_serverless_ novice.pdf

Avatar for baji baji
October 11, 2019

dev_io_osaka_serverless_ novice.pdf

Avatar for baji

baji

October 11, 2019
Tweet

Other Decks in Technology

Transcript

  1. 2 ⾃⼰紹介 瀬⽥ 安弘 • クラスメソッド 株式会社 • AWS事業本部 オペレーション部

    • ⼤阪オフィス所属 • 経歴 • シンクライアント 運⽤エンジニア • 事業会社 サーバエンジニア • クラスメソッド オペレーションエンジニア
  2. 6 概要 1. 社内向けWebツール 2. Python + Flaskで作成したMPA 機能 1.

    ユーザの指定⽇時にAWSに注⽂処理を実⾏する 2. 注⽂マスタ情報(JSON)をAWSから定期取得してDBに保存する 要求 1. 同時に100注⽂を処理できること 2. ユーザは数⼈でWebアクセスは極⼩ 3. アクセスは社内からのみに制御 サーバレス化するAPP
  3. cron 8 EC2全部のせ AWS Cloud Users EC2 instance contents Amazon

    RDS Web UI 注文処理 注文コードマスタ更新 AWSアカウント 注⽂情報登録 注⽂コード取得 注⽂内容⼊⼒ 注⽂情報取得 注⽂実⾏ 注⽂マスタ取得 注⽂マスタ登録
  4. 9 元の構成の問題点 AWSアカウント cron AWS Cloud Users EC2 instance contents

    Amazon RDS Web UI 注文処理 注文コードマスタ更新 注⽂情報登録 注⽂コード取得 注⽂内容⼊⼒ 注⽂情報取得 注⽂実⾏ 注⽂マスタ取得 注⽂マスタ登録 1.実⾏環境の管理 (バックアップ、パッチ、バージョンアップ、ログ等) 2.リソース設計・管理 (キャパシティ、将来的な拡張) 3.可⽤性確保 4.費⽤
  5. 11 こうなりました Users AWSアカウント Amazon API Gateway Web UI AWS

    Lambda Amazon CloudWatch Events AWS Step Functions workflow AWS Lambda 成否判定 AWS Lambda 注文処理 AWS Lambda 通知処理 注文コードマスタ更新 AWS Fargate Service Task 注⽂スケジュール 登録 スケジュール実⾏ 注⽂コード取得 注⽂マスタ取得 注⽂マスタ登録 社内Slack 注⽂情報登録 AWS Cloud Amazon DynamoDB ⼆重実⾏防⽌
  6. 13 ここです Users AWSアカウント Amazon API Gateway Web UI AWS

    Lambda Amazon CloudWatch Events AWS Step Functions workflow AWS Lambda 成否判定 AWS Lambda 注文処理 AWS Lambda 通知処理 注文コードマスタ更新 AWS Fargate Service Task 注⽂スケジュール 登録 スケジュール実⾏ 注⽂コード取得 注⽂マスタ取得 注⽂マスタ登録 社内Slack 注⽂情報登録 AWS Cloud Amazon DynamoDB ⼆重実⾏防⽌
  7. 14 本⽇の役者 1. 呼ばれた時にコード実⾏ 2. 課⾦は実⾏時間のみ Lambda APIGateway 1. APIを作るための⽞関⼝

    様々なAWSリソースをバックエンドとして利⽤可能 2. 課⾦はAPIコール数と転送データ量のみ serverless framework 1. サーバレスアプリケーションの構成管理・デプロイを⽀援してくれるツール 2. 豊富なプラグイン、ymlでの構成管理、デプロイの簡略化等
  8. 15 WEB UI Users Amazon API Gateway Web UI AWS

    Lambda 1.サーバレスで動的Web公開どうやるんだ? 2.既存のAPPは⽣かせないものか お悩み 調べた・考えた 1.APPはLambdaにそのまま載せると動くらしい 2.API GatewayからLambdaを叩く
  9. 21 ここです Users AWSアカウント Amazon API Gateway Web UI AWS

    Lambda Amazon CloudWatch Events AWS Step Functions workflow AWS Lambda 成否判定 AWS Lambda 注文処理 AWS Lambda 通知処理 注文コードマスタ更新 AWS Fargate Service Task 注⽂スケジュール 登録 スケジュール実⾏ 注⽂コード取得 注⽂マスタ取得 注⽂マスタ登録 社内Slack 注⽂情報登録 AWS Cloud Amazon DynamoDB ⼆重実⾏防⽌
  10. 22 本⽇の役者 1.様々な条件でAWSリソースをキックできる 2.課⾦はイベント 100 万件あたり 1.00USD CloudWatch Events StepFunctions

    1.AWSリソースを視覚的にワークフロー定義できる 2.⼩さなコンポーネントを集めてステップ制御 3.誤解を恐れずに⾔うと、ジョブ管理ツールっぽい
  11. 25 注⽂処理 StepFunctions 1. ステートマシンでLambda関数を実⾏ 2. 各Stepでリトライ、遷移を制御 よいところ 1. 各モジュールの記述がシンプルになる

    2. エラーの確認がしやすい 3. リトライ、分岐、分散・並列、ループもお⼿の物 4. スケーラブル AWS Step Functions workflow AWS Lambda 成否判定 AWS Lambda 注文処理 AWS Lambda 通知処理
  12. 28 ここです Users AWSアカウント Amazon API Gateway Web UI AWS

    Lambda Amazon CloudWatch Events AWS Step Functions workflow AWS Lambda 成否判定 AWS Lambda 注文処理 AWS Lambda 通知処理 注文コードマスタ更新 AWS Fargate Service Task 注⽂スケジュール 登録 スケジュール実⾏ 注⽂コード取得 注⽂マスタ取得 注⽂マスタ登録 社内Slack 注⽂情報登録 AWS Cloud Amazon DynamoDB ⼆重実⾏防⽌
  13. 31 マスタDB ⽇次更新 ECSスケジュールによるバッチ 1. コンテナにバッチを仕込む 2. ECSはタイムアウトがないため⻑時間バッチが可能 3. 課⾦はバッチ実⾏時間中のみ

    ECSによるmongoDB 1. 注⽂マスタ情報を保持するだけのDB 2. 壊れてもコンテナを起動し直せば即復旧 3. 常時起動なので費⽤はかさむ 4. 今ならdynamodb on demandを検討 5. AWS DocumentDBは⾼かった
  14. 34 改修後のコスト変化 ⼀ヶ⽉あたりのコスト(ざっくり) サービス 改修前 改修後 EC2 $30 - RDS

    $20 - lambda - $0 (無料枠内) StepFunctions - $0 (無料枠内) DynamoDB - $0 (無料枠内) CloudWatch Events - $1 API Gateway - $1.3 ECS(Fargate) - $45 合計 $50 $47.3 無料枠 = 期限のない無料枠 ← DynamoDBに載せ替えると 無料枠で収まると予想
  15. 41