コンテンツにスキップ

破壊的変更を避けるための互換性保持の設計がされているか?

Type: Structure
Category: API・権限・セキュリティ
Audience: 設計初心者 / 設計中のチーム / レビュワー


背景・概要

APIの互換性が壊れるとフロントエンドやCI/CDが止まりやすく、システム全体の信頼性が低下する

バージョニングやnullable項目の追加などで、後方互換を意識した開発が必要


  • 既存項目の削除・型変更を避け、代わりに新しい項目で置き換える
  • /v1/ などのバージョン付きエンドポイントでリリース
  • APIの定義ファイル(YAMLやJSON、gRPCの .protoなど)を元にして、旧バージョンと新バージョンの差分を比較し、破壊的変更がないかを自動で検出する

よくある失敗例

  • プロパティの型が変更されたりstatusが追加されたが、既存のAPI利用者のシステムでエラーになる
  • 任意フィールドのnullableが外されたが内部処理が考慮してないためバグが発生する

FAQ

Q. 破壊的変更が必要な場合はどうする?

A. バージョン分岐を行うか、段階的リリース(新旧共存)で移行する

Q. 自動検知できる?

A. buf(gRPC)や openapi-diff(OpenAPI)などのdiffツールで差分検知・互換性チェックの自動化は可能。導入する場合はCI組み込み推奨


関連観点