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

AWS AppConfig で低リスク・低ストレスなロールアウトを実現した話 / A story about low-risk, low-stress rollouts with AWS AppConfig

AWS AppConfig で低リスク・低ストレスなロールアウトを実現した話 / A story about low-risk, low-stress rollouts with AWS AppConfig

2023/09/02 AWS Startup Day 2023
https://aws-startup-community.connpass.com/event/289498/

AWS AppConfig で低リスク・低ストレスなロールアウトを実現した話

佐藤 丈生
Software Engineer

kaminashi, Inc.

September 02, 2023
Tweet

More Decks by kaminashi, Inc.

Other Decks in Technology

Transcript

  1. AWS AppConfig で低リスク・低ストレスなロールアウトを
    実現した話

    株式会社カミナシ
    ソフトウェアエンジニア
              佐藤 丈生

    View Slide

  2. 自己紹介
    株式会社カミナシ
    ソフトウェアエンジニア
    佐藤 丈生(Tomoki Sato)
    経歴)
     パッケージソフト開発(Java, 普通のJS 中心)
      → 2022/12 株式会社カミナシ
     カミナシでは、React / React Native (iOS) / Golang / AWS

    View Slide

  3. はじめに
    会社 & プロダクトについて

    View Slide

  4. 会社 & プロダクト紹介
    日常はITに溢れているのに、仕事場は紙ばかりで非効率。
    今日も作業現場で働く人たちは、十分に才覚を発揮できていない。
    そんな3,900万人の埋もれたエネルギーを、私たちが解き放つ。
    誰もが享受するべき当たり前を、すべての現場の人たちに届けたい。
    効率的な作業、見事な成果、腕のなる仕事、豊かな人生。
    これらはきっとつながっているから。
    ノンデスクワーカーの
    才能を解き放つ
    Mission

    View Slide

  5. 会社 & プロダクト紹介
    誰でも正しい手順で作業を実行
    カミナシは、モバイルアプリを使って、
    現場業務のムダを自動化するサービスです。
    現場DXプラットフォーム「カミナシ」
    管理者の代わりに作業をチェック
    データから自動で集計・報告書を作成
    改善活動をサポート

    View Slide

  6. 会社 & プロダクト紹介

    View Slide

  7. 会社 & プロダクト紹介

    View Slide

  8. はじめに
    ここから本題

    View Slide

  9. セッション対象者
    ➢ 実例を通じて、AWS AppConfig で Feature Flags を実装するイメージを持
    ちたい方
    ➢ Feature Flags を用いた低リスク・低ストレスなサービスのロールアウトを
    実現したい方
    ➢ AWS AppConfig の特徴やその使い所(使用例)について知りたい方
    セッション対象者とゴール

    View Slide

  10. ゴール
    ➢ 今後 Feature Flags などの仕組みを設計するときに AWS AppConfig を設計
    の選択肢の1つにできること
    話すこと
    ➢ Feature Flags の概要や、必要とされる理由
    ➢ AWS AppConfig ならではの特徴や、その利用イメージ
    話さないこと
    ➢ Feature Flags に関する網羅的な説明
    ➢ AWS AppConfig の詳細な仕様や、使用する際の具体的な手順
    セッション対象者とゴール

    View Slide

  11. アジェンダ
    1. Feature Flags はなぜ必要か?
    a. デプロイとロールアウトの分離の重要性
    b. Feature Flags とは?
    c. カミナシにとっての Feature Flags
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    a. AWS AppConfig とは?
    b. カミナシでの AWS AppConfig 利用例
    3. Feature Flags の仕組みを運用してみての学び
    a. よかったこと
    b. 今後の課題

    View Slide

  12. アジェンダ
    1. Feature Flags はなぜ必要か?
    a. デプロイとロールアウトの分離の重要性
    b. Feature Flags とは?
    c. カミナシにとっての Feature Flags
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  13. アジェンダ
    1. Feature Flags はなぜ必要か?
    a. デプロイとロールアウトの分離の重要性
    b. Feature Flags とは?
    c. カミナシにとっての Feature Flags
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  14. デプロイとロールアウトの分離の重要性
    デプロイとロールアウトの分離とは?
    デプロイ
    ➢ 運用環境のソフトウェアのバージョンを変え、稼働させること
    ➢ 例) コンテナイメージをビルドし、ECR に push。それを元に、ECS タスク
    を(再)起動する
    ロールアウト
    ➢ 機能を、利用者の一部 or 全体に利用可能にすること
    ➢ 例) 新規開発した機能Xを、ユーザーが利用可能な状態にすること

    View Slide

  15. デプロイとロールアウトの分離の重要性
    デプロイとロールアウトの分離とは?
    💡本セッションでは、デプロイとの区別を明確にするために、「機能を、利用者
    の一部 or 全体に利用可能にすること」という意味合い対して、「リリース」で
    はなく「ロールアウト」という言葉を使用します。

    View Slide

  16. デプロイとロールアウトの分離の重要性
    デプロイとロールアウトの分離とは?
    ➢ デプロイとロールアウトが分離していない状態
    ○ 例)コンテナイメージをビルドし ECR に push。それを元に、ECS タスクを(再)
    起動すると、新規開発した機能Xを、ユーザーが利用可能になる
    ➢ デプロイとロールアウトが分離した状態
    ○ 例)コンテナイメージをビルドし ECR に push。それを元に、ECS タスクを(再)
    起動しても、新規開発した機能Xは、ユーザーには公開されない
    ○ 例)コンテナイメージのビルド 〜 ECS タスクの(再)起動を行わなくても、機能X
    の、公開・非公開状態が切り替えられる

    View Slide

  17. デプロイとロールアウトの分離の重要性
    なぜ、デプロイとロールアウトの分離が重要なのか?
    開発視点 (開発効率・作業負荷軽減・安定運用)
    ➢ CD(継続的デリバリー)、継続的デプロイメントに、事実上不可欠であるため
    ➢ ロールアウト時のリスクを低減させるため
    ビジネス視点(ビジネス上の施策・戦略)
    ➢ 開発を妨げずに、適切なタイミングでロールアウトできるようにするため

    View Slide

  18. デプロイとロールアウトの分離の重要性
    なぜ、デプロイとロールアウトの分離が重要なのか?
    👀開発視点 (開発効率・作業負荷軽減・安定運用)
    ➢ CD(継続的デリバリー)、継続的デプロイメントに、事実上不可欠であるため
    ○ コード変更を一日複数回メインブランチにマージしたい!
    ○ 高頻度でプロダクション環境にデプロイしたい!
    ○ その一方で、ある程度の期間を要する機能追加・変更は発生しうる...
    ➢ ロールアウト時のリスクを低減させるため
    ○ ロールアウト後に、トラブルが起きたら、即座にその機能をオフにしたい!

    View Slide

  19. デプロイとロールアウトの分離の重要性
    なぜ、デプロイとロールアウトの分離が重要なのか?
    👀ビジネス視点(ビジネス上の施策・戦略)
    ➢ 開発を妨げずに、適切なタイミングでロールアウトできるようにするため
    ○ 開発チームがデプロイしたいタイミングと、ビジネス上、機能をユーザーに公開
    したいタイミングは異なる
    ■ 例:ユーザーへの公開は、マーケティングキャンペーンと連動させたい

    View Slide

  20. アジェンダ
    1. Feature Flagsはなぜ必要か?
    a. デプロイとロールアウトの分離の重要性
    b. Feature Flags とは?
    c. カミナシにとっての Feature Flags
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  21. Feature Flags とは?
    ➢ コードを修正せずに、システムの振る舞いを変える技術
    (参考: https://martinfowler.com/articles/feature-toggles.html)

    View Slide

  22. Feature Flags とは?
    ➢ コード上の特定の箇所を、条件に応じて ON or OFF にできるイメージ

    View Slide

  23. Feature Flags とは?
    ロールアウトされた状

    ロールアウトされてい
    ない状態

    View Slide

  24. Feature Flags とは?
    Feature Flags でデプロイとロールアウトの分離を実現できる
    さらにこんなこともできる......🎉
    例:ユーザーの属性に応じて、機能の利用可否を切り替える
    ➢ 開発視点では、ロールアウト時のリスクをさらに低減できる
    ○ カナリアリリース
    ➢ ビジネス視点では、完全なロールアウトの前に、検証プロセスを回せる
    ○ A / B テスト
    ○ β リリース
    *一般的に「カナリアロールアウト」や「β ロールアウト」のような言い方はしないと感じ
    たのでここでは「リリース」という言葉を使っています

    View Slide

  25. Feature Flags とは?
    Feature Flags の種類について補足
    - Release Toggles
    - Experiment Toggles
    - Ops Toggles
    - Permission Toggles
    - …..
    💡本セッションでは、新しい機能を追加するときに、柔軟にロールアウトしてい
    くために利用するFeature Flags を念頭においています。
    上記では、Release Toggles や Experiment Toggles が近いイメージです。
    (参考: https://martinfowler.com/articles/feature-toggles.html)

    View Slide

  26. アジェンダ
    1. Feature Flagsはなぜ必要か?
    a. デプロイとロールアウトの分離の重要性
    b. Feature Flags とは?
    c. カミナシにとっての Feature Flags
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  27. カミナシにとっての Feature Flags
    Feature Flags のメリットを感じていること
    ➢ ステークホルダーへの影響などを考慮しながら、ロールアウトのタイミング
    を調整できる
    ○ フィールドワーカーの中には、Saas やアプリなどツールに不慣れな方も多い
    ➢ 一部のお客様へのβ版提供により、機能をブラッシュアップできる
    ○ 別環境を構築せずに、プロダクション環境を使用
    ○ 本番データで、質の高いβテスト(データ壊れないよう注意だが...)
    ➢ 開発に数週間・数ヶ月かかるような機能も、メインブランチにマージ & プロ
    ダクションへデプロイできる
    ○ 開発の効率や、エンジニアの作業負荷の軽減

    View Slide

  28. カミナシにとっての Feature Flags
    Feature Flags のメリットを感じていること (Pick up)
    ➢ プロダクション環境・実業務のデータで、β版を試していただく
    ● β版環境・お試しデータは、
    ■ お客様が業務がイメージしづらい・実業務での使用はほぼ不可
    ● プロダクション環境・実業務データは、
    ■ お客様が実業務をイメージしやすい・実業務で使用可の場合も
    ■ (もちろん実業務データに悪影響がでないよう注意 & 期待値調整必須)
    → フィードバックがたくさん🎉
    → Feature Flags で一部ユーザーのみに柔軟にロールアウトできるおかげ

    View Slide

  29. 「1. Feature Flagsはなぜ必要か?」まとめ
    ➢ 開発・ビジネスの両方の視点で、デプロイとロールアウトの分離は重要
    ➢ Feature Flags により、デプロイとロールアウトの分離が実現できる
    ➢ カミナシでは、開発・ビジネス両面で、Feature Flags のメリットを享受し
    ている

    View Slide

  30. 次章以降の説明のための補足
    (参考:https://martinfowler.com/articles/feature-toggles.html)
    Toggle Configuration
    (機能ONにするユーザー
    の属性値)

    View Slide

  31. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    a. AWS AppConfig とは?
    b. カミナシでの AppConfig 利用例
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  32. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    a. AWS AppConfig とは?
    b. カミナシでの AppConfig 利用例
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  33. AWS AppConfig とは?
    全体イメージ
    AWS AppConfig を使用することにより、「アプリケーションの設
    定」を作成・管理し、素早く「デプロイ」できます
    (引用元:https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html 佐藤
    意訳)

    View Slide

  34. AWS AppConfig とは?
    全体イメージ

    View Slide

  35. AWS AppConfig とは?
    全体イメージ
    ● 「アプリケーションの設定」を作成・更新し、「デプロイ」(開始)する
    ○ 「アプリケーションの設定」: Feature Flags の文脈では、Toggle
    Configuration
    ● アプリケーションは、「デプロイ」された 「アプリケーションの設定」を参
    照する
    ○ 「デプロイ」: 「アプリケーションの設定」 を、アプリケーションが参照でき
    る状態にすること

    View Slide

  36. AWS AppConfig とは?
    全体イメージ
    ➢ Feature Flags の文脈:Toggle Configuration が「アプリケーションの設
    定」に相当する
    Toggle Configuration
    (機能ONにするユーザーの属性
    値)

    View Slide

  37. AWS AppConfig とは?
    「デプロイ」(deployment) について

    View Slide

  38. AWS AppConfig とは?
    「デプロイ」(deployment) について
    ● イメージ: ローリングアップデートのようなことができる
    ○ Deployment strategy によって変更の反映をコントロールできる
    ■ 例えば、複数のアプリケーションに、徐々に新しい設定を参照させる、こと
    ができる
    ○ Deployment time + Bake time 内であれば、ロールバックが可能
    ■ トラブル時にロールバック
    ■ システムメトリクスなどを観ながら、慎重にロールアウト

    View Slide

  39. AWS AppConfig とは?
    AWS AppConfig を使うと何が嬉しいの?
    ● 👀「アプリケーションの設定」を更新する時のバリデーション
    ○ JSON スキーマ・AWS Lambda
    ● 「アプリケーションの設定」の変更をアプリケーションに迅速に反映
    ○ 「アプリケーションの設定」がAWS AppConfigにより一元管理
    ● デプロイ・再起動なしで「アプリケーションの設定」の更新を反映
    ● 👀Deployment Strategy により、設定変更の反映のされ方をコントール
    ○ トラブル時にロールバック
    ○ システムメトリクスなどを観ながら、慎重にロールアウト

    View Slide

  40. 補足 典型的なアプリケーションからの参照方法
    AWS AppConfig とは?

    View Slide

  41. AWS AppConfig とは?
    補足 典型的なアプリケーションからの参照方法
    ● イメージ:
    Local Cacheを参照する。Local Cache 更新はバックグラウンドスレッド
    ● バックグラウンドスレッド
    ○ StartConfigurationSession(*API): セッション開始
    ○ GetLatestConfiguration(*API): ポーリング
    ○ 「アプリケーションの設定」に変更があれば、Local Cache を更新する
    ● アプリケーション
    ○ 設定を参照する箇所では、Local Cache を参照する
    *API:AWS AppConfig のAPI

    View Slide

  42. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    a. AWS AppConfig とは?
    b. カミナシでの AWS AppConfig 利用例
    3. Feature Flags の仕組みを運用してみての学び

    View Slide

  43. カミナシでの AWS AppConfig 利用例
    弊社でどのように AWS AppConfig を利用したのかについて、より詳細は、弊社
    テックブログもご確認ください。
    → https://kaminashi-developer.hatenablog.jp/entry/2023/07/31/122831

    View Slide

  44. カミナシでの AWS AppConfig 利用例
    誰でも正しい手順で作業を実行
    カミナシは、モバイルアプリを使って、
    現場業務のムダを自動化するサービスです。
    (再掲)現場DXプラットフォーム「カミナシ」
    管理者の代わりに作業をチェック
    データから自動で集計・報告書を作成
    改善活動をサポート
    Web 管理者向け画面
    (React (SPA))
    Mobile 記録者向け画面
    (React Native)

    View Slide

  45. カミナシでの AWS AppConfig 利用例
    カミナシのアーキテクチャ概要

    View Slide

  46. カミナシでの AWS AppConfig 利用例
    カミナシのアーキテクチャ概要
    ● ブラウザからアクセスする「Web」アプリケーション(React。SPA)
    ● 「Mobile」アプリケーション(React Native。iOSネイティブアプリ)
    ● フロントエンドからアクセスされる「API Server」
    ● API サーバーは、AWS Fargate 上のコンテナで稼働する Go lang アプリケー
    ション

    View Slide

  47. カミナシでの AWS AppConfig 利用例
    AWS AppConfig 利用前の状態・課題

    View Slide

  48. カミナシでの AWS AppConfig 利用例
    AWS AppConfig 利用前の状態・課題
    ● ソースコード上に Toggle Configuration をハードコーディング
    ● 課題
    ○ ロールアウトのために、デプロイが必要
    ○ 一元管理が難しい → 認知コスト・ロールアウト時の修正漏れ

    View Slide

  49. カミナシでの AWS AppConfig 利用例
    再掲(Toggle Configuration)

    View Slide

  50. カミナシでの AWS AppConfig 利用例
    アーキテクチャ(アプリケーション周り 全体)

    View Slide

  51. カミナシでの AWS AppConfig 利用例
    アーキテクチャ(アプリケーション周り 全体)
    ● Toggle Configuration を AWS AppConfig で管理
    ○ Configuration Profile の type == Feature Flag
    ○ (JSON スキーマによるバリデーション)
    ● AWS AppConfig へのアクセスは、AWS AppConfig agent が担う
    ○ AWS が提供するサイドカーコンテナイメージ
    ○ https://gallery.ecr.aws/aws-appconfig/aws-appconfig-agent
    ● アプリケーションは、AWS AppConfig agent にアクセス
    ● Front End は、「GET /enabledFeatures」にアクセス

    View Slide

  52. アーキテクチャ(アプリケーション周り フロントエンド)
    ● 各コンポーネントでは、カスタムフックを用いて、機能の利用可否を判定
    ○ API コールのタイミングを意識したくない
    ○ コンポーネントのレンダリング毎に API コールされるのを避けたい
    ○ → Front End は Front End で Local Cache を管理
    ● TanStack Query のキャッシュ機構を用いて実装
    カミナシでの AWS AppConfig 利用例

    View Slide

  53. カミナシでの AWS AppConfig 利用例
    AWS AppConfigの設定を IaC で管理する

    View Slide

  54. カミナシでの AWS AppConfig 利用例
    AWS AppConfigの設定を IaC で管理する
    ● Toggle Configurationは Terrafrom で定義し、Github Repository で管理
    ○ Toggle Configuration の変更履歴を残し、レビューのプロセスを通したい
    ○ ロールアウト、ロールバックしたい時は、PR を出す
    ● Terraform Cloud 上で、Plan実行 → Apply により、「デプロイ」開始
    ○ main ブランチへのマージがトリガー
    ● Deployment time、Bake time ともに 0 のため、即時に全コンテナに反映

    View Slide

  55. カミナシでの AWS AppConfig 利用例
    他の選択肢について
    Toggle Configuration をどこに格納するか?
    ● RDS、DynamoDB、S3など何かしらの外部ストレージ
    ○ AWS AppConfig に比べ自由度が高いが、そのぶん設計・実装・管理が難しい
    ● Amazon CloudWatch Evidently を利用する
    ○ 自由度、エコシステムなどが、AWS AppConfig の方がふさわしかった
    ● 環境変数(AWS Systems Manager Parameter Storeなど)
    ○ タスク再起動が必要。構造化データを持たせる辛み

    View Slide

  56. カミナシでの AWS AppConfig 利用例
    他の選択肢について
    Front End からどうやって AWS AppConfig の設定を取得するか?
    ● Amazon Congito を活用し、Front End から直接 AWS AppConfig の API に
    アクセスする
    ○ API サーバーにエンドポイントを定義する方が、(現状では)シンプルかつ、実
    装・運用しやすい

    View Slide

  57. カミナシでの AWS AppConfig 利用例
    活かせている AWS AppConfig の良さ
    ● ✅「アプリケーションの設定」を更新する時のバリデーション
    ○ ✅ JSON スキーマ・AWS Lambda
    ● ✅「アプリケーションの設定」の変更をアプリケーションに迅速に反映
    ○ ✅「アプリケーションの設定」がAWS AppConfigにより一元管理
    ● ✅ デプロイ・再起動なしで「アプリケーションの設定」の更新を反映
    ● 🔴 Deployment Strategy により、設定変更の反映のされ方をコントール
    ○ トラブル時にロールバック
    ○ システムメトリクスなどを観ながら、慎重にロールアウト
    *AWS AppConfig の良さを全て活かしきれているわけではない

    View Slide

  58. 「2. AWS AppConfig で Feature Flags の仕組みを整備した話」まとめ
    ➢ AWS AppConfig 使うことにより、
    ○ 設定の更新時、バリデーションによりエラーを低減
    ○ 設定を一元管理
    ○ 設定の更新時にアプリケーションの停止も不要
    ○ Deployment Strategy により、設定更新の反映のされ方をコントロー

    ➢ カミナシでは、AWS AppConfig を利用した仕組みを整備し、以下を実現
    ○ Toggle Configuration の一元管理
    ○ デプロイに依存しないロールアウト

    View Slide

  59. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び
    a. よかったこと
    b. 今後の課題

    View Slide

  60. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び
    a. よかったこと
    b. 今後の課題

    View Slide

  61. よかったこと
    導入しやすさ
    ● 3-4 人で、1スプリント(1week) 程度の作業ボリュームで導入できた
    ● いい感じのエコシステムが揃っていた
    ○ AWS AppConfig agent
    ■ Local Cache の管理などを実装しなくてよかった
    ○ Terraform Cloud
    ○ TanStack Query
    ■ (AWS AppConfig とは直接関係ないが、Local Cache 管理の点で便利だっ
    たため、記載)

    View Slide

  62. よかったこと
    導入した効果(効果を感じている点)
    ● Toggle Configuration が一元管理されている
    ○ 認知コストが下がった
    ○ ロールアウト時の修正漏れ防止
    ● ロールアウトのスケジュールが柔軟に設定できるようになった
    ○ (現状は、毎週火・木に定期デプロイ)
    ○ このタイミングとロールアウトのタイミングを合わせる必要が無くなっ

    View Slide

  63. アジェンダ
    1. Feature Flagsはなぜ必要か?
    2. AWS AppConfig で Feature Flags の仕組みを整備した話
    3. Feature Flags の仕組みを運用してみての学び
    a. よかったこと
    b. 今後の課題

    View Slide

  64. ➢ Feature Flags のよさを活かし、よりデプロイの頻度を上げる
    ➢ AWS AppConfig のよさを活かし、サービスの変化・成長に適応する
    ➢ Feature Flags の濫用を防ぎ、技術負債を作らない仕組み
    今後の課題

    View Slide

  65. Feature Flags のよさを活かし、よりデプロイの頻度を上げる
    デプロイとロールアウトの分離が加速したので、デプロイの頻度を上げたい!
    ● Feature Flags 以外の整備も必要
    ○ 派生元ブランチにマージ後の、手動の動作検証がブロッカー
    ● コードが複雑化している部分では、Feature Flags自体を定義しづらい。
    ○ Feature Flags の仕組みがあっても制御しづらい
    ○ 要リファクタリング
    今後の課題

    View Slide

  66. 今後の課題
    AWS AppConfig のよさを活かし、サービスの変化・成長に適応する
    Deployment strategy について
    ● 現状は、即座に全コンテナに設定が反映
    ○ Deployment time、Bake time が 0 min.
    ● Deployment strategy を見直したら、ロールバック時の Toggle
    Configuration の値の管理方法も再考
    ○ Github Repository 上の値と、AWS AppConfig 上の値が乖離するため

    View Slide

  67. 今後の課題
    AWS AppConfig のよさを活かし、サービスの変化・成長に適応する
    バリデーションについて
    ● 現状では、JSON スキーマによるバリデーションで十分
    ● AWS Lambda によるバリデーションも検討?
    ○ 複雑または、不備があった際に業務影響が大きな Toggle Configuration
    を使用したいケースがあれば...

    View Slide

  68. 今後の課題
    Feature Flags の濫用を防ぎ、技術負債を作らない仕組み
    ● Feature Flags を定義しすぎない・長い期間使わない仕組み
    ○ 定義する数・期間に制限を設ける

    View Slide

  69. 「3. Feature Flags の仕組みを運用してみての学び」まとめ
    ➢ AWS AppConfig を利用した Feature Flags の仕組みはエコシステムが充実
    しており、妥当な期間で導入できた!
    ➢ 導入前目的としていた、Toggle Configuration の一元管理やデプロイに依存
    しないロールアウトは実現できた!
    ➢ 一方で、Feature Flags の利点や、AWS AppConfig の長所は今後もっと生か
    す余地がある!

    View Slide

  70. おわり
    We are hiring !!
    カミナシ Entrance book エンジニア

    View Slide

  71. おわり
    ご清聴ありがとうございました!

    View Slide

  72. Further reading
    Feature Flags 関係
    - https://martinfowler.com/articles/feature-toggles.html
    - https://semaphoreci.com/blog/feature-flags
    - https://codezine.jp/article/detail/14114
    - https://www.harness.io/blog/what-are-feature-flags
    CI/CD 関係
    - https://semaphoreci.com/blog/2017/07/27/what-is-the-difference-between-continuous-integration-conti
    nuous-deployment-and-continuous-delivery.html
    - https://trunkbaseddevelopment.com/
    AWS AppConfig 関係
    - https://kaminashi-developer.hatenablog.jp/entry/2023/07/31/122831
    - https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html

    View Slide