アンチパターン: ソース コントロール管理を使用せずにリソースを管理する

Apigee X のドキュメントが表示されています。
Apigee Edge のドキュメントを参照する。

Apigee は多くの異なる種類のリソースを提供し、それぞれの目的が異なります。特定のリソースは、前提条件となるロールと権限を持つユーザーしか、また Apigee UI、Apigee API、または API を使用するツールからでしか、構成(すなわち、作成、更新、削除)できません。たとえば、特定組織に属する組織管理者のみがこれらのリソースを構成できます。つまり、エンドユーザーがデベロッパー ポータルからこれらのリソースを構成することや、他のなんらかの手段によって構成することはできません。こうしたリソースには、次のものがあります。

  • API プロキシ
  • 共有フロー
  • API プロダクト
  • キャッシュ
  • KVM
  • キーストアとトラストストア
  • 仮想ホスト
  • ターゲット サーバー
  • リソース ファイル

これらのリソースはアクセスが制限されていますが、承認されたユーザーによって変更が加えられさえすれば、過去のデータは新しいデータでそのまま上書きされます。それは、これらのリソースは、現在の状態だけで Apigee に保存されるためです。このルールに対する主要な例外は、API プロキシと共有フローです。

リビジョン管理される API プロキシと共有フロー

API プロキシと共有フローは、リビジョンに基づいて管理(作成、更新、デプロイ)されます。リビジョンには連続番号が割り当てられるので、新たな変更を加えて新リビジョンとしてそれを保存できます。また、以前のリビジョンの API プロキシまたは共有フローをデプロイすることで、加えた変更を元に戻すこともできます。リビジョンのベースパスの異なる場合を除き、1 つの環境にデプロイされる API プロキシまたは共有フローは、どの時点においても常に 1 つのリビジョンのみが存在します。

API プロキシと共有フローはリビジョンによって管理されますが、既存のリビジョンになんらかの変更を加えた場合、過去の変更は単純に上書きされるので、ロールバックする手段はありません。

監査と履歴

Apigee には、トラブルシューティングの場面で役立つ監査機能が用意されています。これらの機能によって、Apigee リソース上で特定のオペレーション(作成、読み取り、更新、削除、デプロイ、デプロイ解除)を誰が実行したか、いつオペレーションが実行されたかなどの情報を表示できます。ただし、いずれかの Apigee リソースに対して更新オペレーションまたは削除オペレーションが実行されると、監査では古いデータを提供できません。

アンチパターン

ソース コントロール システムを使用しない Apigee UI または API を通じた Apigee リソース(上述)の直接管理

変更や削除の後でも、Apigee はリソースを以前の状態に復元できるという誤解があります。しかし、Apigee はリソースを以前の状態に復元しません。したがって、Apigee リソースに関連するすべてのデータをソース コントロール管理を通じて確実に管理するのがユーザーの責任です。そうすれば、誤って削除してしまった場合や、なんらかの変更のロールバックが必要になった場合に、古いデータを迅速に復元できます。これは、ランタイム トラフィックにこのデータが必要な本番環境では特に重要です。

ソース管理システムで管理されていないデータが、偶発的または意図的に変更または削除されてしまった場合に生じうる影響について、いくつか例を挙げて説明していきます。

例 1: API プロキシの削除または変更

既存のリビジョンで API プロキシが削除された、または変更がデプロイされたときは、以前のコードは復元できません。この API プロキシに、Apigee の外部のソース コントロール管理(SCM)システムで管理されていない Java、JavaScript、または Python コードが含まれている場合、膨大な開発の作業と労力がすべて失われる可能性があります。

例 2: 特定の仮想ホストを使用する API プロキシの識別

ある仮想ホスト上の証明書が有効期限切れ間近であり、この仮想ホストを更新しなければならないとします。多数の API プロキシが存在する場合、この仮想ホストをどの API プロキシが使用しているのか、テスト目的で特定することは容易ではありません。Apigee 外部の SCM システムで各 API プロキシが管理されていれば、リポジトリを簡単に検索できます。

例 3: キーストアまたはトラストストアの削除

仮想ホストまたはターゲット サーバー構成によって使用されているキーストア / トラストストアが削除された場合、キーストア / トラストストアの構成の詳細(証明書、秘密鍵など)がソース管理システムに保存されていない限り、それを復元することはできません。

効果

  • どの Apigee リソースが削除された場合でも、Apigee からリソースとそのコンテンツを復元することはできません。
  • リソースが元の状態に復元されるまで、API リクエストは予期しないエラーの発生によって失敗し、停止にいたる可能性があります。
  • Apigee では、API プロキシと他のリソース間の依存関係の間を検索するのが困難です。

ベスト プラクティス

  • 任意の標準 SCM を継続的インテグレーションと継続的デプロイ(CICD)パイプラインを組み合わせて使用して、API プロキシと共有フローを管理します。
  • API プロダクト、キャッシュ、KVM、ターゲット サーバー、仮想ホスト、キーストアなど、他の Apigee リソースの管理に、任意の標準 SCM を使用します。
    • 既存の Apigee リソースがある場合は、Apigee API を使用して、それらの構成の詳細を JSON/XML ペイロードとして取得し、ソース コントロール管理内に保存します。
    • ソース コントロール管理内で、これらのリソースへのあらゆる新しい更新を管理します。
    • 新しい Apigee リソースを作成する、または既存のリソースを更新する必要がある場合は、API を使用して、ソース コントロール管理内に格納された適切な JSON/XML ペイロードを使用し Apigee の構成を更新します。

* 暗号化された KVM は API から書式なしテキストとしてエクスポートできません。暗号化された KVM に何の値を入れたのかの記録を保持するのはユーザーの責任です。

関連情報