Slide 1

Slide 1 text

© 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Shinichi Hama / track3jyo Startup Solutions Architect, West Japan Amazon Web Services Japan G.K. Design for Failure with Startup AWS Startup Tech Meetup 関西 #1

Slide 2

Slide 2 text

Shinichi Hama / track3jyo Startup Solutions Architect Amazon Web Service Japan --- work: - ⻄⽇本のスタートアップ⽀援 - コンテナ技術のあれこれ 過去のスライド: https://speakerdeck.com/track3jyo 趣味︓家のアーキテクチャを考えること

Slide 3

Slide 3 text

⽣きてるとさまざまな Failure(予定外のこと)が起きる

Slide 4

Slide 4 text

突然のパンク︕ 予備のタイヤを持っておく 別の交通⼿段に切り替える

Slide 5

Slide 5 text

おしゃれなカフェに⾏こうとしたら・・・

Slide 6

Slide 6 text

お店が混んでてて⼊れない︕ 予定を組み替えてリトライ 別の選択肢(お店)を⽤意しておく

Slide 7

Slide 7 text

キャンプ場で・・・

Slide 8

Slide 8 text

悪天候︕ 最悪の事態になる前に察知すること

Slide 9

Slide 9 text

備えあれば憂いなし!! ⼊念な準備、情報取集、迅速な判断が⼤切

Slide 10

Slide 10 text

システムの世界でも Failure(予定外のこと)は発⽣する 例

Slide 11

Slide 11 text

健全なシステムの運⽤を実現するために

Slide 12

Slide 12 text

クラウドに最適化された (クラウドネイティブな)設計とは

Slide 13

Slide 13 text

クラウドネイティブな設計とは何か︖︖ Design for Failure な設計にすること

Slide 14

Slide 14 text

connect DevAx © 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Everything fails all the time Dr. Werner Vogels Chief Technology Officer of Amazon.com

Slide 15

Slide 15 text

connect DevAx © 2021, Amazon Web Services, Inc. or its affiliates. All rights reserved. © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Design for Failure To Your Application

Slide 16

Slide 16 text

健全なシステムの運⽤を実現するために

Slide 17

Slide 17 text

マイクロサービス キューイング ロギング 冪等性の確保 モニタリング サーキットブレーカー オートスケーリング オートスケーリング ⾮同期処理 ステートレス 組織 イベントドリブン リトライ制御 分散トレーシング ブルーグリーンデプロイ オートヒーリング データの退避/破棄 マネージド 補償トランザクション スロットリング マルチ AZ Design for Failure をどのように実現する︖

Slide 18

Slide 18 text

スタートアップではそうも⾔ってられないことが多い ⼈もいないし、 ビジネスロジックに 取り組むでいっぱい いっぱいやわ。。 とにかく早く作りたい。 余計なコストもかけてら れない。。 !

Slide 19

Slide 19 text

Design for Failure な設計になっていないとどうなるか︖ • 例1: ⼤事な時(e.g. VC へデモを⾒せる時等) にダウンし ていることによる機会損失 • 例2: メンバーも少ないため、その都度発⽣する障害対応 だけで1⽇が過ぎてしまう

Slide 20

Slide 20 text

スタートアップ向け「まずここから」Design for Failure • 想定上のアクセスが来てもダウンしない 冗⻑構成 (マルチAZ)/オートスケーリング • 問題のあるインフラがあっても置き換えてくれる オートヒーリング • データを誤って消しちゃった時にでも復旧できる バックアップ・リストア • (+α) アプリケーションがエラーになった際の リトライ処理やキューイング

Slide 21

Slide 21 text

スタートアップが Design for Failure を実現するために Q. 時間やお⾦のないスタートアップにとって、 Design for Failure を真⾯⽬に全て向き合うのは難しいのでは︖ • まずは、Design for Failure な設計が組み込まれたサービスを 選定できないか考える • スピードとコストとのトレードオフではない • むしろ対応に追われる⼯数がなくなりスピードアップ • 実装やアーキテクチャに依存するところはその先で考える • AWS の SA に相談も︕

Slide 22

Slide 22 text

プロダクト開発に専念できる AWS の使い⽅

Slide 23

Slide 23 text

オーソドックスな技術スタック

Slide 24

Slide 24 text

オーソドックスな技術スタック フロントエンド、 モバイルアプリ バックエンド Webサーバー バックエンド DBサーバー ⾔語・フレームワーク React, Vue, Swift, Kotlin, Java etc インフラ Web Hosting サービス、 BaaS etc ⾔語・フレームワーク Ruby on Rails, Laravel, Django, Express, Spring etc インフラ 仮想サーバー、コンテナ、 サーバーレス etc DB 種類 RDBMS, NoSQL, Fulltext Search, etc インフラ マネージドDBサービス, 仮想サーバー etc

Slide 25

Slide 25 text

負担をオフロードできる AWS のサービス フロントエンド、 モバイルアプリ バックエンド Webサーバー バックエンド DBサーバー Amplify Hosting AWS App Runner Amazon Aurora Serverless v2

Slide 26

Slide 26 text

Amplify Hosting

Slide 27

Slide 27 text

AWS Amplify Hosting ウェブアプリや静的ウェブサイトのため のフルマネージドなホスティングサービ ス 簡単なカスタムドメイン設定も可能 継続的デプロイメント Amplify CLI で Infrastructure as Code( IaC)を⽣成 Amplify CLI やコンソールからのデプロ イ AWS Amplify CLI AWS Amplify Console

Slide 28

Slide 28 text

Amplify Hosting の利⽤フロー

Slide 29

Slide 29 text

Amplify Hosting の主な機能 グローバルで利⽤可能 プルリクエストプレビュー カスタムドメインの簡単設定 シンプルな 継続的ワークフロー パスワード保護

Slide 30

Slide 30 text

もっと AWS Amplify を知りたい⽅へ 公式ドキュメント https://docs.amplify.aws AWS Summit 2021 「Web・モバイルアプリ開発を加速させる AWS Amplify」 https://d1.awsstatic.com/events/jp/2021/summit-online/AWS- 47_AWS_Summit_Online_2021_FWM01.pdf ワークショップ https://amplify-sns.workshop.aws/ja/ Amplify 学習リソース集 https://aws-amplify-jp.github.io/resources Amplify Japan User Group Slack https://github.com/aws-amplify-jp/awesome-aws-amplify-ja#slack

Slide 31

Slide 31 text

AWS App Runner

Slide 32

Slide 32 text

AWS サービスを組み合わせてインフラを構築 柔軟性が⾼い VPC (ネットワーク) Fargate (コンピュート) ECS (オーケストレーション) ALB (ロードバランサ) AWS Auto Scaling (オートスケール) CodeBuild (CI/CD) ⼿間がかかる

Slide 33

Slide 33 text

構築済みのインフラにすぐにデプロイ AWS App Runner

Slide 34

Slide 34 text

AWS App Runner の主な特徴 シンプルな オートスケーリング 統合された メトリクス・ロギング機能 シンプルな セットアップ

Slide 35

Slide 35 text

AWS App Runner の主な特徴 シンプルな オートスケーリング 統合された メトリクス・ロギング機能 シンプルな セットアップ

Slide 36

Slide 36 text

App Runner 上にウェブアプリケーションをデプロイ App Runner Amazon ECR Image Repo 動かしたいウェブアプリケーションを指定する

Slide 37

Slide 37 text

App Runner 上にウェブアプリケーションをデプロイ App Runner GitHub 動かしたいウェブアプリケーションを指定する GitHub Repo

Slide 38

Slide 38 text

App Runner 上にウェブアプリケーションをデプロイ App Runner GitHub ソースコードを取得 コンテナイメージをビルドしてデプロイ コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner GitHub Repo

Slide 39

Slide 39 text

App Runner 上にウェブアプリケーションをデプロイ App Runner コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner コンテナイメージを取得 コンテナイメージをデプロイ Amazon ECR Image Repo

Slide 40

Slide 40 text

App Runner 上にウェブアプリケーションをデプロイ コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner エンドユーザー デフォルトドメイン https://xxxxxxxx..awsapprunner.com

Slide 41

Slide 41 text

AWS App Runner の主な特徴 シンプルな オートスケーリング 統合された メトリクス・ロギング機能 シンプルな セットアップ

Slide 42

Slide 42 text

App Runner - シンプルなオートスケーリングの設定 オートスケールのしきい値 となるリクエスト数 コンテナインスタンスの 最⼩数 コンテナインスタンスの 最⼤数 デフォルト の設定値

Slide 43

Slide 43 text

オートスケール コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner エンドユーザー デフォルトドメイン

Slide 44

Slide 44 text

オートスケール コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner エンドユーザー デフォルトドメイン エンドユーザー エンドユーザー

Slide 45

Slide 45 text

オートスケール コンテナインスタンス ロードバランサー ネットワーク (VPC) App Runner エンドユーザー デフォルトドメイン

Slide 46

Slide 46 text

AWS App Runner の主な特徴 シンプルな オートスケーリング 統合された メトリクス・ロギング機能 シンプルな セットアップ

Slide 47

Slide 47 text

ログ・メトリクス ロードバランサー App Runner 開発者 App Runner コンソール コンテナインスタンス ログとメトリクスを⾃動で収集 App Runner コンソールから確認

Slide 48

Slide 48 text

App Runner - Console でのログの閲覧 ⾃分でログエージェントを実装する必要なし

Slide 49

Slide 49 text

App Runner - Console でのメトリクスの閲覧 リクエスト数、応答のレイテンシ、HTTP 2XX 4XX 5XX それぞれの数 を App Runnerのコンソール画⾯で閲覧可能

Slide 50

Slide 50 text

もっと AWS App Runner を知りたい⽅へ 公式ドキュメント https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html ブログ https://aws.amazon.com/jp/blogs/news/introducing-aws-app-runner/ ワークショップ https://www.apprunnerworkshop.com/ ロードマップ https://github.com/aws/apprunner-roadmap/projects/1

Slide 51

Slide 51 text

Amazon Aurora Serverless v2

Slide 52

Slide 52 text

Amazon Aurora 優れた性能と拡張性 クラウド向けに再設計された MySQL, PostgreSQL と互換性のある RDBMS 商⽤データベースの性能と可⽤性を 1/10 のコストで ⾼可⽤性と耐久性 ⾼い安全性 フルマネージド

Slide 53

Slide 53 text

Amazon Aurora のアーキテクチャ ストレージノード 分散ストレージシステム データベース⽤に設計された 専⽤の分散ストレージシステム データは3箇所に分散された数百 のストレージノードに6つのコ ピーとして保存

Slide 54

Slide 54 text

Amazon Aurora のアーキテクチャ ストレージノード 分散ストレージシステム データベース⽤に設計された 専⽤の分散ストレージシステム データは3箇所に分散された数百 のストレージノードに6つのコ ピーとして保存 SQL を実⾏するインタフェース は分散ストレージを共有するこ とで、責務が分離 SQL トランザクション キャッシュ コンピュートノード

Slide 55

Slide 55 text

Amazon Aurora Serverless v2 アプリケーションのニーズに応じて⾃動的に容量を拡張 インスタンスタイプの⼀つとして簡単なセットアップ 秒単位のシンプルな従量課⾦ 瞬時に拡張し、要求の厳しいアプリケーションをサポート データベースのキャパシティ管理の⼼配からの解放

Slide 56

Slide 56 text

急激なアクセス増減対応の選択肢 Storage fleet ⾃動スケール Amazon Aurora Serverless v2

Slide 57

Slide 57 text

急激なアクセス増減対応の選択肢 Storage fleet Compute fleet ⾃動スケール ⾃動スケール Amazon Aurora Serverless v2

Slide 58

Slide 58 text

急激なアクセス増減対応の選択肢 Storage fleet Compute fleet ⾃動スケール ⾃動スケール Amazon Aurora Serverless v2 • インプレーススケール:CPUやメモリのリ ソースなどを動的に追加することで、1秒以 内にスケーリングが可能 • パフォーマンス影響なし:数十万トランザク ションを実行中でも、スケーリングによる影 響はない https://aws.amazon.com/jp/blogs/news/amazon-aurora-serverless-v2-is- generally-available-instant-scaling-for-demanding-workloads/

Slide 59

Slide 59 text

設定はリソース使⽤量の範囲を設定するだけ 最⼩のリソース使⽤量 0.5ACUから0.5刻みで可能 最⼤のリソース使⽤量 128ACUまで0.5刻みで可能 リソースは “ACU” という単位で 管理されます。1ACU=RAM 2GiB と、それに応じたCPUやネット ワークリソースが割り当てられ ます。

Slide 60

Slide 60 text

Aurora Serverless v2 のシームレスなスケーリング Aurora Serverless v2 のスケーリング例 (定期的に同時実⾏数を上げながら OLTP 処理を実施) 同時実⾏数 が増加 同時実⾏数 が増加 同時実⾏数 が増加 処理終了 同時実⾏数が増加して、必要なリソースが 増加した時点で、Aurora Serverless v2の キャパシティが増加(⻘線) また、スケール時にトランザクション (⾚線のCommitThroughput)を阻害しない 処理が終了して、リソースが不要 になると徐々にキャパシティが 減少(⻘線)

Slide 61

Slide 61 text

もっと Amazon Aurora Serverless v2 を知りたい⽅へ 公式ドキュメント https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html ブログ https://aws.amazon.com/jp/blogs/news/amazon-aurora-serverless-v2-is-generally-available- instant-scaling-for-demanding-workloads/ Deep Dive https://www.youtube.com/watch?time_continue=350&v=b2Tl6SsWC-M&feature=emb_title

Slide 62

Slide 62 text

負担をオフロードできる AWS のサービス フロントエンド、 モバイルアプリ バックエンド Webサーバー バックエンド DBサーバー Amplify Hosting AWS App Runner Amazon Aurora Serverless v2

Slide 63

Slide 63 text

サンプルアーキテクチャ ※VPC や ECR等⼀部省略しています Amplify Hosting App Runner Aurora Serverless v2 S3 Lambda メッセージキューイング (Amazon SQS キュー) コンテナ実⾏環境 (Fargate) バッチ処理を⾏うコンテナ (ECS タスク) イベントバス (EventBridge) ワークフロー管理 (Step Functions) 定期実⾏ 署名付きURL発行 署名付きURLで Upload / Download

Slide 64

Slide 64 text

スモールな仕組みでもいいのでモニタリングも⼤事︕ https://speakerdeck.com/track3jyo/startup-monitoring-aws2022

Slide 65

Slide 65 text

• 備えあれば憂いなし︕ • まずは、Design for Failure な設計が組み込まれた サービスを選定できないか考える • Amplify Hosting, App Runner, Aurora Serverless v2 さいごに – お伝えしたかったこと -

Slide 66

Slide 66 text

Thank you © 2022, Amazon Web Services, Inc. or its affiliates. All rights reserved. Shinichi Hama track3jyo