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

フィーチャートグルを 使って素早く価値を検証する 早く安全に失敗し学ぶために

akki
September 23, 2022

フィーチャートグルを 使って素早く価値を検証する 早く安全に失敗し学ぶために

akki

September 23, 2022
Tweet

More Decks by akki

Other Decks in Programming

Transcript

  1. フロントエンドの実装: ディレクトリ構成 src/store/featureFlag.t s src/middleware/initializeFeatureFlagClient.ts src/features/ ├── _utils │ ├──

    featureFlagClient.ts │ └── featureFlagged.tsx ├── hogehogeFeature │ ├── api │ ├── components │ │ ├── hoge.vue │ │ └── fuga.vue │ └── utils │ └── flagValidation.ts ├── hogehogeFeature2 inspire by bulletproof-react featuresのディレクトリに検 証機能を入れて他と明確に 区別する 他と依存させない
  2. バックエンドの実装方針 - まず必要なら外部リソースを検討 - Lambda, Croud Run, GAS - モジュラーモノリスを意識して施策ごとにモジュール化

    - リポジトリもDBは共通 - 施策用の専用HTTPのエンドポイントのみを提供する - 本流のコードへの依存度は低く保つ - フィーチャートグルの分岐(トグルポイント)をLaravel の Middlewareに集約する
  3. バックエンドの実装: ディレクトリ構成 /modules/features └── utils │ ├── composer.json │ └──

    src └── features1 ├── composer.json └── src │ ├── ServiceProvider.php │ ├── Http │ │ ├── Controllers │ │ └── Middleware │ └── routes.php └── tests └── Feature └── Http 施策ごとにモジュールとして 切り出す 他とは依存させない そのまま消しても影響がな い
  4. デメリット - 依存性の低さと引き換えにできることが限られる - 規模が大きくなってくるときつい - 今後拡張予定 - UI的な変更へは弱い -

    仮説検証のため機能の動作担保も必要 - 依存度を低くするために、コード量が増えることや、重複するような 処理が生まれてしまう