翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SOAP ベースの ASP.NET ウェブサービス (ASMX)
レガシー ASP.NET ウェブサービス (ASMX) を REST API にモダナイズすると AWS、依存するコンシューマーがいる可能性があり、関連するリスクのために同時にアップグレードすることはできません。次の図は、3 つの依存コンシューマーを持つ ASMX ウェブサービスを示しています。
これらのコンシューマーは SOAP プロトコルを使用して ASMX サービスを呼び出すため、ASMX サービスを REST API に置き換えると、これらのコンシューマーは破損します。さらに、システムをモノリシックアーキテクチャからマイクロサービスに変換しながら ASMX サービスを REST API にリファクタリングすると、システム動作とドメインモデルのリモデルが必要になる可能性が高くなります。これにより、コンシューマーに重大な変更が加えられる可能性があります。
古いサービスとの下位互換性を維持し、システムを段階的にモダナイズできるようにするには、strangler fig アプローチのガイダンスを実装できます。strangler fig アプローチでは、重要なレガシーシステムのモダナイズに関連するリスクは、部分的にレガシーシステムを新しいシステムに徐々に置き換えることで管理されます。
抽象化による分岐は、Martin Fowler によって導入されたもう 1 つのアプローチであり、ストラングラーイチジクパターンを実装するための効果的な手法です。strangler fig アプローチと同様に、抽象化による分岐は、主要な機能を置き換えたりモダナイズしたりする必要がある場合に、エンジニアがシステムに対して段階的および段階的な変更を行うのに役立ちます。このアプローチでは、特定の機能を実装するコードと、その機能を使用するコード (クライアントコード) の間に抽象化レイヤーが導入されます。この抽象化レイヤーは、具象クラスに継承できる抽象型である必要はありません。代わりに、コンシューマーとプロバイダー間の機能契約をキャプチャする任意の実装にすることができます。
従来の SOAP ベースの ASP.NET ウェブサービスの場合、抽象化手法によってブランチに着想を得たアプローチにより、互換性を維持することで、サービスコンシューマーを古いものから新しいものへ段階的に移行できます。ただし、SOAP ベースの ASP.NET ウェブサービスのアプローチでは、継承の代わりに委任が使用されます。ASMX コンシューマーとの互換性は、レガシー ASMX サービスをリファクタリングして実装を新しい REST API に委任することで実現されます。次の図は、実装を新しい REST API に委任しているレガシー ASMX サービスを示しています。この委任により、サービスコンシューマー 3 は新しい REST API にアップグレードでき、サービスコンシューマー 1 と 2 は個別にアップグレードされます。
ASMX サービスリファクタリングの性質は、そのサービスの機能要件と非機能要件 (機能横断) によって異なります。場合によっては、リファクタリングには、古い から新しい認証および認可メカニズムへの変換、サービス ASMX ペイロードの XML から JSON への変換、変換されたペイロードを使用した REST API の呼び出しが含まれることがあります。より複雑なシナリオでは、リファクタリングされた ASMX サービスが複数の REST APIs への呼び出しをオーケストレーションし、状態を維持しなければならない場合があります。
サービスコンシューマーをレガシー ASMX サービスからモダナイズされた REST API に移行するプロセスは、すべてのサービスコンシューマーが新しい API を参照するように更新されるまで段階的に継続されます。次の図は、すべてのサービスコンシューマーが REST API を参照し、不要になったために ASMX サービスが廃止された、完全にモダナイズされた状態を示しています。
アーキテクチャの例
SOAP ベースの ASMX サービスのエンドステートアーキテクチャは、モダナイズされた REST API を使用しているすべてのサービスコンシューマーを示し、レガシー ASMX ウェブサービスの廃止につながります。ただし、このパターンの焦点はエンドステートアーキテクチャではなく、コンシューマーのアップグレード中に移行中に必要な中間ステートアーキテクチャです。この中間状態を次の図に示します。この中間アーキテクチャでは、サービスコンシューマー 1 と 2 は引き続きレガシー ASMX サービスを使用しています。このサービスは、実装をモダナイズされた REST API に委任するためにリファクタリングされています。リファクタリングされた Windows サービスは、Amazon ECS の Windows コンテナとしてデプロイされ、高可用性を実現するために 3 つのアベイラビリティーゾーンにまたがって設定され、Application Load Balancer を介してアクセスされます。サービスコンシューマー 3 が更新され、API Gateway を介して新しい REST API を直接使用できるようになりました。