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

「10分以内に機能を消せる状態」 の実現のためにやっていること

Avatar for おぎ おぎ
November 08, 2025

「10分以内に機能を消せる状態」 の実現のためにやっていること

Avatar for おぎ

おぎ

November 08, 2025
Tweet

More Decks by おぎ

Other Decks in Programming

Transcript

  1. フラクタル構造 packages |---packageA | |---FeatureA | |---Http | |---Models |

    |---FeatureB | |---Http | |---Models |---packageB • パッケージの中で更に機能でディレクトリを 分ける入れ子構造 • 機能間の相互依存がないような構成 (依存の向きは常に一方向) ソフトウェアは捨てやすく作ろう
  2. Feature Toggleによるリリース制御 Feature Toggleなし (デプロイとリリースが同時) サーバー サーバー サーバー ①デプロイ &リリース

    ②変更失敗⚠ ④再デプロイ ③ソースリバート⚠ サーバー Feature Toggleあり (デプロイとリリースが分離) サーバー サーバー サーバー ①デプロイ🔴 ②リリース🟢 ④トグルオフ🔴 ③変更失敗⚠ サーバー
  3. Feature Toggleを使った安全な削除手順 1. 画面側の動線に制御を追加 2. API側にロジックの制御を追加 3. Feature Toggleを埋め込んだコードをデプロイ 4.

    機能廃止日に Feature ToggleをON 5. 問題なければ順次コードを削除 ここが10分以内にできれば、提供価 値としてはビックバンリリースで消す のと変わらない
  4. 変更量とリードタイム - マージ回数:8回 - 合計ファイル数: 149 ファイル - 削除された行数: -20,488行

    - 最初の削除マージ:10/14 13:29 - 最後の削除マージ:10/15 09:02 ※バックエンドのコードのみ
  5. freeeのリリースフラグ誤操作による障害(2018) • 原因 ◦ 消されずに残っていたリリースフラグ( Feature Toggle)が負債化 ▪ ”どのフラグがいつ・どう変更されたのかがわからなかった ”

    ▪ ”数が多いことで正確に判断することが難しかった ” • 対策 ◦ フラグの削除を実施 ◦ フラグ変更を通知する仕組み作り ◦ 月次モニタリング運用 ▪ リリースフラグの目的 ▪ 残存期間の目安 ▪ 期間を超過した場合のアクション ▪ 残存させ続ける条件 システム障害のおわびとまなび
  6. 参考 • 不要なコードを見極めて削除するポイント • ソフトウェアは捨てやすく作ろう • レガシー回避のPHP開発術 • FeatureToggle戦略と運用方法 •

    アジャイル宣言の背後にある原則 • ご主人様、小難しいDDDやクリーンアーキテクチャはお忘れになって、”削除しやす い設計”から始められてはいかが? • システム障害のおわびとまなび