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

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

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

これらのリソースへのアクセスは制限されますが、なんらかの変更を加えると、変更者が承認されたユーザーであっても、履歴データは新データに単純に上書きされます。これらのリソースは、現在の状態のみに基づいて Apigee Edge に保存されるためです。このルールに対する主要な例外が、API プロキシと共有フローです。

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

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

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

監査と履歴

Apigee Edge には、問題のトラブルシューティングに役立つ監査機能、および API、プロダクト、組織の履歴機能があります。これらの機能を使用すると、Edge リソースに対する特定の操作(作成、読み取り、更新、削除、デプロイ、デプロイ解除)を誰が実行したのか、この操作をいつ実行したのか、といった情報を参照できます。しかし、いずれかの Edge リソースに対して更新または削除を行った場合は、監査によって古いデータを確認することはできません。

アンチパターン

ソース コントロール管理システムを使用せず、上述の Edge リソースを Edge UI または管理 API から直接管理する

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

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

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

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

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

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

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

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

影響

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

ベスト プラクティス

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

* 暗号化された KVM は、書式なしテキストとして API からエクスポートすることはできません。どの値で暗号化 KVM を作成したのかを記録しておくことは、ユーザーの責任となります。

関連情報