$30 off During Our Annual Pro Sale. View Details »

Design for Failure with Startup

Design for Failure with Startup

https://aws-startup-community.connpass.com/event/258486/
2022/09/29(木) AWS Startup Tech Meetup 関西 #1

track3jyo-hama
PRO

September 29, 2022
Tweet

More Decks by track3jyo-hama

Other Decks in Technology

Transcript

  1. © 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
  2. Shinichi Hama / track3jyo Startup Solutions Architect Amazon Web Service

    Japan --- work: - ⻄⽇本のスタートアップ⽀援 - コンテナ技術のあれこれ 過去のスライド: https://speakerdeck.com/track3jyo 趣味︓家のアーキテクチャを考えること
  3. ⽣きてるとさまざまな Failure(予定外のこと)が起きる

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

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

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

  7. キャンプ場で・・・

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

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

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

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

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

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

  14. 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
  15. 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
  16. 健全なシステムの運⽤を実現するために

  17. マイクロサービス キューイング ロギング 冪等性の確保 モニタリング サーキットブレーカー オートスケーリング オートスケーリング ⾮同期処理 ステートレス

    組織 イベントドリブン リトライ制御 分散トレーシング ブルーグリーンデプロイ オートヒーリング データの退避/破棄 マネージド 補償トランザクション スロットリング マルチ AZ Design for Failure をどのように実現する︖
  18. スタートアップではそうも⾔ってられないことが多い ⼈もいないし、 ビジネスロジックに 取り組むでいっぱい いっぱいやわ。。 とにかく早く作りたい。 余計なコストもかけてら れない。。 !

  19. Design for Failure な設計になっていないとどうなるか︖ • 例1: ⼤事な時(e.g. VC へデモを⾒せる時等) にダウンし

    ていることによる機会損失 • 例2: メンバーも少ないため、その都度発⽣する障害対応 だけで1⽇が過ぎてしまう
  20. スタートアップ向け「まずここから」Design for Failure • 想定上のアクセスが来てもダウンしない 冗⻑構成 (マルチAZ)/オートスケーリング • 問題のあるインフラがあっても置き換えてくれる オートヒーリング

    • データを誤って消しちゃった時にでも復旧できる バックアップ・リストア • (+α) アプリケーションがエラーになった際の リトライ処理やキューイング
  21. スタートアップが Design for Failure を実現するために Q. 時間やお⾦のないスタートアップにとって、 Design for Failure

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

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

  24. オーソドックスな技術スタック フロントエンド、 モバイルアプリ バックエンド 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
  25. 負担をオフロードできる AWS のサービス フロントエンド、 モバイルアプリ バックエンド Webサーバー バックエンド DBサーバー Amplify

    Hosting AWS App Runner Amazon Aurora Serverless v2
  26. Amplify Hosting

  27. AWS Amplify Hosting ウェブアプリや静的ウェブサイトのため のフルマネージドなホスティングサービ ス 簡単なカスタムドメイン設定も可能 継続的デプロイメント Amplify CLI

    で Infrastructure as Code( IaC)を⽣成 Amplify CLI やコンソールからのデプロ イ AWS Amplify CLI AWS Amplify Console
  28. Amplify Hosting の利⽤フロー

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

  30. もっと 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
  31. AWS App Runner

  32. AWS サービスを組み合わせてインフラを構築 柔軟性が⾼い VPC (ネットワーク) Fargate (コンピュート) ECS (オーケストレーション) ALB

    (ロードバランサ) AWS Auto Scaling (オートスケール) CodeBuild (CI/CD) ⼿間がかかる
  33. 構築済みのインフラにすぐにデプロイ AWS App Runner

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

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

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

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

  38. App Runner 上にウェブアプリケーションをデプロイ App Runner GitHub ソースコードを取得 コンテナイメージをビルドしてデプロイ コンテナインスタンス ロードバランサー

    ネットワーク (VPC) App Runner GitHub Repo
  39. App Runner 上にウェブアプリケーションをデプロイ App Runner コンテナインスタンス ロードバランサー ネットワーク (VPC) App

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

    デフォルトドメイン https://xxxxxxxx.<region>.awsapprunner.com
  41. AWS App Runner の主な特徴 シンプルな オートスケーリング 統合された メトリクス・ロギング機能 シンプルな セットアップ

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

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

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

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

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

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

    App Runner コンソールから確認
  48. App Runner - Console でのログの閲覧 ⾃分でログエージェントを実装する必要なし

  49. App Runner - Console でのメトリクスの閲覧 リクエスト数、応答のレイテンシ、HTTP 2XX 4XX 5XX それぞれの数

    を App Runnerのコンソール画⾯で閲覧可能
  50. もっと 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
  51. Amazon Aurora Serverless v2

  52. Amazon Aurora 優れた性能と拡張性 クラウド向けに再設計された MySQL, PostgreSQL と互換性のある RDBMS 商⽤データベースの性能と可⽤性を 1/10

    のコストで ⾼可⽤性と耐久性 ⾼い安全性 フルマネージド
  53. Amazon Aurora のアーキテクチャ ストレージノード 分散ストレージシステム データベース⽤に設計された 専⽤の分散ストレージシステム データは3箇所に分散された数百 のストレージノードに6つのコ ピーとして保存

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

    SQL を実⾏するインタフェース は分散ストレージを共有するこ とで、責務が分離 SQL トランザクション キャッシュ コンピュートノード
  55. Amazon Aurora Serverless v2 アプリケーションのニーズに応じて⾃動的に容量を拡張 インスタンスタイプの⼀つとして簡単なセットアップ 秒単位のシンプルな従量課⾦ 瞬時に拡張し、要求の厳しいアプリケーションをサポート データベースのキャパシティ管理の⼼配からの解放

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

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

    v2
  58. 急激なアクセス増減対応の選択肢 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/
  59. 設定はリソース使⽤量の範囲を設定するだけ 最⼩のリソース使⽤量 0.5ACUから0.5刻みで可能 最⼤のリソース使⽤量 128ACUまで0.5刻みで可能 リソースは “ACU” という単位で 管理されます。1ACU=RAM 2GiB

    と、それに応じたCPUやネット ワークリソースが割り当てられ ます。
  60. Aurora Serverless v2 のシームレスなスケーリング Aurora Serverless v2 のスケーリング例 (定期的に同時実⾏数を上げながら OLTP

    処理を実施) 同時実⾏数 が増加 同時実⾏数 が増加 同時実⾏数 が増加 処理終了 同時実⾏数が増加して、必要なリソースが 増加した時点で、Aurora Serverless v2の キャパシティが増加(⻘線) また、スケール時にトランザクション (⾚線のCommitThroughput)を阻害しない 処理が終了して、リソースが不要 になると徐々にキャパシティが 減少(⻘線)
  61. もっと 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
  62. 負担をオフロードできる AWS のサービス フロントエンド、 モバイルアプリ バックエンド Webサーバー バックエンド DBサーバー Amplify

    Hosting AWS App Runner Amazon Aurora Serverless v2
  63. サンプルアーキテクチャ ※VPC や ECR等⼀部省略しています Amplify Hosting App Runner Aurora Serverless

    v2 S3 Lambda メッセージキューイング (Amazon SQS キュー) コンテナ実⾏環境 (Fargate) バッチ処理を⾏うコンテナ (ECS タスク) イベントバス (EventBridge) ワークフロー管理 (Step Functions) 定期実⾏ 署名付きURL発行 署名付きURLで Upload / Download
  64. スモールな仕組みでもいいのでモニタリングも⼤事︕ https://speakerdeck.com/track3jyo/startup-monitoring-aws2022

  65. • 備えあれば憂いなし︕ • まずは、Design for Failure な設計が組み込まれた サービスを選定できないか考える • Amplify

    Hosting, App Runner, Aurora Serverless v2 さいごに – お伝えしたかったこと -
  66. Thank you © 2022, Amazon Web Services, Inc. or its

    affiliates. All rights reserved. Shinichi Hama track3jyo