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

少人数チームで実現する、大規模AWSサーバーレス基盤における"揺らがない"信頼性運用

Avatar for maimyyym maimyyym
August 04, 2026

 少人数チームで実現する、大規模AWSサーバーレス基盤における"揺らがない"信頼性運用

2026/8/4 Fusic Tech Live vol.32 〜AWS Ambassador・TopEngineer・Jr.Champion大集結〜
https://fusic.connpass.com/event/397671/

Avatar for maimyyym

maimyyym

August 04, 2026

More Decks by maimyyym

Other Decks in Technology

Transcript

  1. Introduction Click!! 宮 崎 真 衣 MA I M IYA

    ZA KI HN: mai (@maimyyym ) 株式会社Fusic 事業本部 クラウドエンジニアリング部門 チームリーダー / エンジニア ◉ I am - 元百貨店スタッフ (Beauty Counselor) 2023年10月 Fusic入社 2026 Japan AWS Top Engineers ◉ Skill - AWS / Python / TypeScript / PHP(Laravel) Interested in: Security, Identity & Compliance ◉ Comment - 最近の関心ごと: DevOps, SRE, … ©Fusic Co., Ltd. 1
  2. 「少ないパワーで大きなシステム運用を回す」とは? 運用している”大規模サーバーレスAPI”について 重要度が高い 基本的に落ちてはならない リクエスト数の多さ 月間数億リクエスト / 分間10,000req前後 速度とエラー率の要件 P90で100〜500ms以下

    / エラー率0.01%未満 多数のリソース Lambdaが約40個 ※あえて曖昧な表現にしています。 / その他、サーバーレスサービスを網羅的に利用 そして、もちろん常に開発は続いていく。 ©Fusic Co., Ltd. 6
  3. 運用しているシステムについて プライベートネットワーク プライベートAPI Gatewayの利用 - リソースポリシー設定 - カスタムドメイン設定 クロスアカウント接続 Lambdaの制御

    - APIGWステージとLambdaエイリアスの接続 - ProvisionedConcurrencyによる スパイク対策・速度維持 - AssumeRoleによる最小権限の実現 RAMを用いたAPIGWドメイン共有 ・・・など、要件に応じた細かな設定が多々 ©Fusic Co., Ltd. 8
  4. 大規模APIのSAMの実態 YAMLテンプレート 約3000行 主な原因【複数のステージ】 全ステージのリソースプロビジョンを管理・自動化したい → 各種リソースの設定値を全て定義するため ① 各種ログ、デプロイメント設定 ②

    DefinitionBodyで統合リクエストを定義 × Lambdaの数 ③ AWS::Lambda::Permission リソース = 各ステージごとのAPIGWがLambdaを実行するための権限定義 その他 ・API Gatewayリソースポリシー ・API Gatewayキャッシュ設定 ・開発・ステージング・本番環境×マルチリー ジョン分のenv変数定義 ・・・など ※ あくまで一例です。行数も正確には言えませんが、概ねこのぐらいです。 ※ 訳あってCDKの選択はできず、ここまでやってきました。 ©Fusic Co., Ltd. 21
  5. 大規模APIのSAMの実態 1つのAPI Gatewayに十数個のLambda = 依存関係がある → 1スタック / 1テンプレート 管理が良い

    ◎ テンプレートの膨大化を防ぐために、別でリソース操作を行うスクリプトを書いてGitHub Actions上で実行 する構成にしていた時期もありました。 → AWS CLIでのリソース操作はスタック管理下に入らないため、余計に複雑化。 ◎ テンプレート行数が多いこと自体のデメリットはそんなにない。 Lambda関数ごとに同じ定義を記述することは、プログラミングコードでは「同じことを繰り返し書かない」と されるが、IaCに関してはその限りではない。 「徹底した自動化」ができて、「管理の複雑さ」がなくなれば、OK! ※ 本システムにおいて導き出した考えです。構成により最適解は異なります。 ©Fusic Co., Ltd. 22
  6. GitHubの機能を利用したリリースの一連の流れ 01 いつでも反映可能なPRはmainにマージ 02 リリース実施OKが出た時点で、mainの最新地点コミットにタグを打つ(git tag) タグからリリースを作成 03 ローカル端末でタグにcheckout/そのタグから release_1.0.1

    のような名前でリリース 専用ブランチを作成 04 リリース専用ブランチからステージング環境・本番環境デプロイ用ブランチにPR作成 → マージすると自動デプロイが起動 ※デプロイはGitHub Actionsで自動化(AWS SAMのコマンドを実行) ©Fusic Co., Ltd. 27
  7. GitHubの機能を利用したリリースの一連の流れ 01 いつでも反映可能なPRはmainにマージ 02 リリース実施OKが出た時点で、mainの最新地点コミットにタグを打つ(git tag) タグからリリースを作成 03 ローカル端末でタグにcheckout/そのタグから release_1.0.1

    のような名前でリリース 専用ブランチを作成 04 リリース専用ブランチからステージング環境・本番環境デプロイ用ブランチにPR作成 → マージすると自動デプロイが起動 ※デプロイはGitHub Actionsで自動化(AWS SAMのコマンドを実行) ©Fusic Co., Ltd. 29
  8. GitHubの機能を利用したリリースの一連の流れ 01 いつでも反映可能なPRはmainにマージ 02 リリース実施OKが出た時点で、mainの最新地点コミットにタグを打つ(git tag) タグからリリースを作成 03 ローカル端末でタグにcheckout/そのタグから release_1.0.1

    のような名前でリリース 専用ブランチを作成 04 ここの作業を自動化 リリース専用ブランチからステージング環境・本番環境デプロイ用ブランチにPR作成 → マージすると自動デプロイが起動 ※デプロイはGitHub Actionsで自動化(AWS SAMのコマンドを実行) ©Fusic Co., Ltd. 30
  9. スクリプトによるリリース準備の自動化 タグ作成〜リリースPR作成までを1ステップで ./create_release.sh <バージョン名> を実行するだけ。 1 2 3 4 mainにswitch

    gitタグ作成 GitHub Release作成 各環境(STG・PRD)への リリースPR作成 ※ ④のリリースPRには、③で作成したリリースノートのリンクを記載 ©Fusic Co., Ltd. 31