サービス指向アーキテクチャは、最近ますますホットな引用になっているようですが、オフィスの周りに尋ねたところ、それについて多くの異なる定義があるように思われることがわかりました. 皆さんは SOA をどのように定義しますか? 正式な定義は何だと思いますか?
9 に答える
Martin Fowler が言うように、それは人によって意味が異なります。このトピックに関する彼の記事はかなり良いですが、それは完全な定義ではありません.
http://martinfowler.com/bliki/ServiceOrientedAmbiguity.html
それは、具体的な定義を思いつく難しさを説明するかもしれません.
ウィキペディア: 「SOA は、疎結合されたソフトウェア サービスを使用して、ビジネス プロセスとソフトウェア ユーザーの要件をサポートするソフトウェア アーキテクチャです。SOA 環境のネットワーク上のリソースは、基盤となるプラットフォームの知識がなくてもアクセスできる独立したサービスとして利用できます。実装。"
SOA はそれほど新しいものではありませんが、いくつかの驚くべきことを達成する可能性を秘めています。しかし、組織はそれに備える必要があります。ビジネスはプロセスで考える必要があり、それが大きな問題です。
私は一緒に行きます:
複数のアプリケーションで活用するために作成された、ステートレスでクライアントに依存しない一連のビジネス オペレーションを定義します。
SOA 設計には、実装 (つまり、任意の OS または言語) に関係なくコードで使用できるコンポーネント (つまり、サービス) が含まれます。サービスの 1 つのインスタンスを複数のアプリケーションで使用することもできますが、たとえば、DLL はアプリケーションごとに複製する必要があり、リンクするアプリケーションと同じ実装テクノロジが必要になります。
SOA 設計のサービスは、通常、相互運用可能な Web サービスとして実装されます。
ライアンが以前に述べたように、公式の定義はありません。しかし、サービス指向全体に対する Thomas Erl の見解は、非常によく構造化されており、関連性があると思います。彼のSOA Glossary (詳細)からの SOA の定義は次のとおりです。
サービス指向アーキテクチャは、組織に対する IT の全体的な負担を軽減しながら、企業の俊敏性と費用対効果を高めることを目的としたアーキテクチャ モデルを表します。
Thomas Erl は多くの SOA タイトルの著者であり、そのほとんどは IBM、Oracle、Microsoft などの SOA ベンダーから支持を受けています。彼の本の良いところは、可能な限り SOA ベンダーに依存しないことです。これは、SOA をサポートする一部のベンダーのミドルウェアについてよりも、サービス指向自体についてより多くを学ぶことを意味します。
ここでの説明 - 「サービス指向アーキテクチャは、システム統合とコード再利用のアプローチであり、アプリケーションは、ネットワークを介して実行中の他のアプリケーションによって提供されるサービスへの接続に依存しています。」
イベント ドリブン メッセージングを使用して 2 つの j2ee アプリケーションが統合されているシナリオがあります。ここで、ネットワークを介して他の実行中のアプリケーションによって提供されるサービスへのシステム統合と接続の上記のフレーズが有効です。これを SOA と呼べますか?
ここでは、次の原則が有効です。1) ステートレス、2) メッセージ指向 - 疎結合、事実上分離、3) 拡張可能。
ただし、次の事項は適用されません。1) プラットフォームの独立性 - 統合されるアプリケーションはいずれも、異なるプラットフォームで動作するように設計されていません。2) アプリケーションは、すべての SOA コンセプトで設計されていない単純な j2ee アプリケーションです。
これについてあなたをファウラーに指摘するすべての人々に同意します。基本的には次のように実行されます。サービス指向アーキテクチャは優れているという評判を得たため、人々が優れたものと関連付けたいと思うものはすべて SOA と呼んでいます。実際には、多くの欠点があり、サービス指向のグリッドロックまたは依存関係指向のアーキテクチャを作成できます。
これが私の定義です。サービス指向アーキテクチャは、システム統合とコード再利用のアプローチであり、アプリケーションは、ネットワークを介して他の実行中のアプリケーションによって提供されるサービスへの接続に依存しています。これは、ソフトウェア コンポーネントがライブラリや SDK などの形式でアプリケーション間で静的に共有されるコンポーネント アーキテクチャとは異なります。
定義は次のとおりです。
SOA - ソフトウェア オーバー アーキテクチャ。「dir /s > a.txt | ftp -s:upload.ftp」の 3D グラフィック フォルダが一方から他方へ飛んでいるきれいな Web サイトのアーキテクチャと呼ばれる、無意味で肥大化した、機能的なインターフェイス フレームワークの組み込み仕事をした。
ソフトウェア コンポーネントはブリックではなく、一般的な機能パターンで一般化することはできません。アーキテクチャは、優れた設計ではなく、優れた実践から企業に生まれます。ソフトウェアは設計されたものではなく、設計されたものです。
スクラムオン!
ブログ投稿の 1 つでSOA を定義しようとしました。ここに抜粋があります...
何年もの間、機能を関数、クラス、およびモジュールに分離することが標準的な方法でした。これらの小さくて高度に専門化されたコンポーネントは、モノリシックなコード ブロックよりも共有および保守が容易であるという考えが常にありました。
機能的には、SOA と大差ありません。再利用性とメンテナンスの容易さという目標は同じです。Web サービス SOA の場合の最大の違いは、アプリケーションに含まれる共有ライブラリが HTTP 呼び出しに置き換えられることです。