web-dev-qa-db-ja.com

SOA "in English"とは何ですか?

誰かが平易な英語で説明できますかSOAとは何ですか? SOAはここに、SOAはそこにありますが、それが何であり、何に使用されているかを正確に理解することはできません。それは単純な概念でしたが、後に巨大な何かに進化しましたか?

Wikiを含むすべてのドキュメントは少し抽象的であるか、または私はばかであるため取得できない場合があります。これについてのバカのガイドはありますか?

これらの3つの文字の背後には正確に何がありますか?

112
Elena

この記事(SOAとは-SOAとWebサービスの説明) が役立つかもしれません。

ちょっとしたお誘い:

  • SOAは、シンプルで明確に定義されたインターフェイスを持ち、必要な機能を実行するために疎結合によって調整された個別のソフトウェアエージェントで構成されるような方法でアプリケーションを設計するスタイルです。

  • SOAには、サービスプロバイダーとサービスコンシューマーの2つの役割があります。ソフトウェアエージェントは両方の役割を果たすことができます。 SOAはまったく新しい概念ではありませんが、この記事では主にWebサービスで実装されるSOAに焦点を当てています。

49
KB22

SOAは非常に古いアイデアの新しいバッジです。

  • コードを再利用可能なモジュールに分割します。

  • 変更される可能性のある設計上の決定をモジュールにカプセル化します。

  • さまざまな便利な方法(「ファミリ」または「製品ライン」と呼ばれることもある)で結合できるようにモジュールを設計します。

これらはすべて基盤となるソフトウェア開発の原則であり、その多くは最初にDavid Parnasによって明確にされました。

SOAの新機能は

  • あなたはネットワーク上でそれをやっています。

  • モジュールは、プロシージャコールなどのより伝統的なプログラミング言語のメカニズムではなく、ネットワークを介して互いにメッセージを送信することで通信しています。特に、サービス指向アーキテクチャでは、通常、パーツは可変状態(従来のプログラムのグローバル変数)を共有しません。または、状態を共有する場合、その状態は、それ自体がエージェントであり、複数の同時クライアントを簡単に管理できるデータベースに慎重にロックアップされます。

64
Norman Ramsey

さらに高度な単語と技術用語を使用して、サービス指向アーキテクチャ(SOA)を説明する多くの回答があります。私は、平易な英語での類推を使用して、素人向けに説明するためのショットを与えたいと思います。

ただし、最初にSOAの説明
SOAは、次の図に示すように3つの層で説明できます。一方にはProviderがあり、もう一方にはConsumerBridgeで区切られ、両側が通信します。

消費者はビジネスに必要な多くのApplicationsを使用し、プロバイダーはComponentsこれらのアプリケーションに情報を提供します。共通のアーキテクチャを使用して、一連のServicesを介して通信します。


enter image description here

類推
田舎の家を想像してください。多くの点で、都市や町のような大きなコミュニティの一部です。市には、水と電気の供給、衛生設備の取り扱い、輸送およびその他のユーティリティの提供のための独自の複雑なシステムがあります。 Houseはこのモデルの消費者であり、City(またはコミュニティ)はプロバイダーであり、パイプ、下水道、電力線、光ファイバーなどは、それらが通信するInfrastructureです。

このモデルは、大まかにSOAと比較できます。家の人々は、ラジエーター、コンピューター、トイレ、ランプ、床下暖房、バスタブなどのさまざまな「アプリケーション」を使用します。これらのアプリケーションは、都市が水を生成する方法、電気を生成する方法、廃棄物を処理する方法を気にしません動作するように。市の構成要素は、発電機、水ポンプ、衛生区域です。それはすべてのこれらのニーズを家に提供しますが、それが適切と思われる方法でそれを使用するのは家次第です。

これにより、少なくとも誰かがSOAのより良い姿を見せてくれることを願っています。

43
Niklas

コックが4人いるとします。 SOAでは、あなたは彼らがお互いを嫌っていると仮定するので、あなたは彼らがお互いにできる限り話さないように努力します。

どうやってやるの?まず、役割とインターフェイスを定義します。料理1はサラダを作り、料理2はスープを作り、料理3はステーキを作ります。インターフェイス)そして、「誰もがあなたの割り当てをあなたの割り当てられた皿に置いてください。他の誰かを気にしないでください。」と言います。

このように、4人の料理人は互いにできるだけ話し合う必要がありません。これはソフトウェア開発において非常に優れています-必ずしもお互いが嫌いなわけではなく、物理的な場所、意思決定の効率性などの理由により.

また、お好みに合わせて料理(サービス)を再結合できることも意味します。たとえば、デザートを使用してカフェにサービスを提供したり、スープを取り、他の会社から購入したパンと組み合わせて安価なメニューを提供したり、他のレストランにサラダを使用して料理と組み合わせたりすることができます。

SOAの最も成功した実装の1つはAmazonでした。彼らの設計により、彼らはインフラストラクチャ全体を再パッケージ化し、それをAmazon Web Serviceとして販売することができました。

*これはSOAの1つの側面にすぎません。

27
Enno Shioji

SOAはアーキテクチャスタイルですが、異種アプリケーションの開発および統合方法に関するvisionでもあります。 SOAの主な目的は、モノリシックアプリケーションから移行し、代わりに再利用可能なサービスのセットを作成して、アプリケーションを構築することです。

私見、SOAは、エンタープライズレベルでのみ意味があり、単一のアプリケーションには意味がありません。

多くの企業では、各部門が独自のエンタープライズアプリケーションのセットを持っていて、

  1. 同様の機能が数回実装されました

  2. データ(顧客や従業員のデータなど)は、複数のアプリケーション間で共有する必要があります

  3. アプリケーションは部門中心でした。

SOAを使用すると、再利用可能なサービスを企業全体で利用できるようにして、それらからアプリケーションを構築および構成できるようにするという考え方があります。 SOAの約束は

  1. 同様の機能を何度も再実装する必要はありません(たとえば、顧客または従業員のサービスを提供する)

  2. アプリケーションの統合と共通データまたは機能へのアクセスを容易にします

  3. エンタープライズ中心の開発努力。

SOAビジョンでは、技術的シフトと組織的シフトが必要です。いくつかの問題を解決する一方、他の問題も導入します。たとえば、モノリシックアプリケーションのセキュリティはSOAの方がはるかに困難です。したがって、SOAは、動作するかどうかについての議論の対象となります。

これは、SOAの1000フィートのビューです。ただし、これで終わりではありません。ビジネスプロセスオーケストレーション(BPM)、エンタープライズサービスバス(ESB)、複合イベント処理(CEP)など、SOAを補完する他の概念があります。これらはすべて、IT /ビジネスalignement、つまり、ITがビジネスを効果的にサポートできるようにする方法。

17
ewernli

SOAはService Oriented Architectureの頭字語です。

SOAは、個別のソフトウェアモジュールを高度な再利用性でシームレスに統合できるように、ソフトウェアアプリケーションを設計および作成しています。

ほとんどの人は、SOAをクライアント/サーバーソフトウェアWebサービスの作成として制限しています。しかし、SOAのコンテキストは小さすぎます。 SOAはそれよりもはるかに大きく、過去数年にわたってWebサービスが通信の主要な媒体であったため、人々がSOAをWebサービスとして一般的に制限していると考えているのでしょう。 SOAの境界と意味。

非常に独立しているため、依存関係なしで独自に動作できるデータベースアクセスモジュールを記述することを考えることができます。このモジュールは、データベースアクセスを必要とする任意のホストソフトウェアで使用できるクラスを公開できます。ホストアプリケーションには起動設定はありません。必要なものや必要なものはすべて、データベースアクセスモジュールによって公開されるクラスを介して通信されます。これらのクラスをサービスとして呼び出し、モジュールをサービス対応と見なすことができます。

SOAを実践すると、DRY [自分自身を繰り返さない]を強制することで高度な再利用性が得られ、保守性の高いソフトウェアになります。保守性は、ソフトウェアアーキテクチャが考える最初のことです-SOAはそれを提供します。

10

私の知る限り、基本的な概念は、他のシステムに役立つ何かを提供する小さな「サービス」を作成し、システム内でeverythingを実行する傾向がある大規模なシステムの構築を回避することです。

したがって、インタラクションに使用するプロトコル(たとえば、SOAP Webサービス)を定義し、「system-that-does-some-business-work」を小さなサービスと対話させます「大きな目標」を達成します。

6
naivists

Thomas ErlとRoger Sessionsの記事を読むことをお勧めします。これにより、SOAが何であるかについてしっかりと理解することができます。これらも優れたリソースです。上司に説明されているSOAをご覧ください。

SOAの構築

SOAデザインパターン

SOAでの整合性の達成

なぜSOAがVW Beetleのようになるべきか

SOAが上司に説明した

WCFサービスパフォーマンス

5
MetalLemon

唯一の提案:-

SOAコンセプト、テクノロジー、デザイン Thomas Erl著を読んでください。

SOAに関する詳細をわかりやすい英語で、ケーススタディとともに非常に美しく提供しています。

4
ivorykoder

大規模な組織で発生する傾向があるのは、時間が経つにつれて、すべてがモノリシックまたは異種システムのいずれか、またはその両方であるということです。誰かがやがてやって来て、混乱していると言います。さて、あなたはパラダイムを支払う人に依存するが、同時にマスター/モノリスとは独立してピースとパーツを追加できるように、モノリシックの方向に向けられるようにすべてを再設計します(誰かへのお金)。

したがって、OracleのSOAを購入すると、Oracleがすべてのパーツのボスになります。参加する他のすべてのプレーヤーは、サービス(Webサービスなど)を介してSOAを使用する必要があります。Oracleモノリスはすべてを処理します(モノリスは軽rog的ではありません)。そうそう、ASP.NET MVCが前面にあるか何か他のものがあります。

主なものは、影響を与えずにシステムにシステムを出し入れすることであり、ベンダーのOracle SOAであるMicrosoft WCFをすべての頭脳として維持することです。すべては、流動的で、コンピューターに限らず、ヒューマンサービスでさえも、ほとんどまたはまったく影響を与えずに出入りします。

私にとって、それは単に良いフロントエンドを備えた一連のWebサービス(または、将来それらを呼ぶもの)を意味します。また、データベースを所有している場合は、データベースにアクセスするだけで、流行語について心配する必要がなくなります。いいんだよ。

4
johnny

ittoolboxブログから。

以下に、過去の設計手法との類似点と相違点の概要を示します。

•SOA対構造化プログラミングo類似性:パラメーターが渡され、関数の操作が呼び出し元から抽象化されるサブルーチン呼び出しに最も類似しています。 CICSリンクおよび実行およびCOBOL CALL予約語。コピーブックは、通常サービスのXMLスキーマとして定義されるデータ構造を定義するために使用されます。 o違い:SOAは疎結合であり、サービスへの変更がコンシューマ(「呼び出し」プログラム)への影響が少なく、サービスが言語とプラットフォーム間で相互運用可能であることを意味します。

•SOA対OOA/OOD o類似性:カプセル化、抽象化、および定義済みインターフェイスo相違点:SOAは、クラス階層または継承なしで疎結合、低レベル抽象化-クラスレベル対ビジネスサービス

•SOA対従来のコンポーネントベース開発(CBD)-例CORBA、DCOM、EJB o類似性:コンポーネント、インターフェース、リモートコールのアセンブルによる再利用o相違点:標準の幅広い採用、XMLスキーマとマーシャリングオブジェクト、サービスオーケストレーション、再利用のための設計が容易になり、サービスはITに焦点を当て、ビジネスサービスはきめが粗い(範囲が広い)

•SOA(統合用)対エンタープライズアプリケーション統合(EAI)o類似性:ベストプラクティス(明確に定義されたインターフェイス、標準化されたスキーマ、イベント駆動型アーキテクチャ)、再利用可能なインターフェイス、共通スキーマo相違点:標準、採用、および改善されたツール

3
Jani Syed

上記の回答を読むと、SOAが開発者(少なくとも良い開発者)が初日から行っていることだと思います。

3
ziggy

よくわかります。SOAはサービス指向アーキテクチャの略です。最も簡単な言葉で言えば、非常に汎用的なコードを記述します。つまり、多くのアプリケーションで使用できることを行います。 ..は、アドレス帳のようなものでも、計算機でもかまいません。このコードをIISで起動します。したがって、コードを介してサービスを提供します。あなたはサービスプロバイダーです。今、誰かが同様のコードを使用したい場合、彼は再びコードを書く必要はありません。彼は単にWebサービスを介してコードを使用するだけです。したがって、彼はサービス消費者になります。したがって、このようなサービスを使用してプログラムを作成することはSOAと呼ばれます。また、サービスプロバイダーとコンシューマーがdiffプログラミング言語を使用している場合でも、相互作用する可能性があるため、疎結合が存在します。ご理解ください。

3
dev ray

並列(特にSIMD)プログラミングの一般的なトピックである「Struct of Arrays」(「Array of Structs」とは対照的)を表すこともできますが、ここでの意味ではないと思います!

2
Tom

SOAは、Enterprise Service Bus関連のテクノロジーの販売を支援するためにテクノロジーベンダーによって発明された流行語です。アイデアは、企業内の小さな島のアプリケーション(例:会計システム、在庫管理システムなど)をすべて公開して、サービスを柔軟に「アプリケーション」に統合できるようにするか、または企業全体のスコープビジネスの一部になることです。論理。

基本的に、ほとんど役に立たない古いbollocksの負荷は、テクノロジーが組織内にある方法の理由が文化、進化、会社の歴史、そしてロックインに非常に高いという点を見逃しているためですテクノロジーを再構築しようとすると失敗するはずです。

2
Sentinel

あなたが誰であるかに依存します!

あなたがビジネスオーナーの場合、SOAは収入とビジネスの俊敏性を向上させるソリューションです。あなたが起業家の建築家なら、SOAは空白のキャンバスにすてきできれいなソフトウェアを描く方法です。あなたがアーキテクトであれば、SOAは、統合プラットフォーム上で疎結合サービスを設計し、サービスをコンセントに差し込むだけのソリューションです。あなたが開発者なら、SOAは、サービスが設計とコードの中心にあるプログラミングパラダイムです。

100-SOA-Questions [pdf] を読む必要があります

乾杯

1
TheEnglishMe

サービス指向アーキテクチャ(SOA)は、プラグ可能なパーツのコレクションとしてアプリケーションを構築するソフトウェアアーキテクチャスタイルであり、各パーツは他のアプリケーションで再利用できます。

1
Joe Pardi

今週の Floss Weekly のポッドキャストを聞いてください。これはSOAをカバーしています。説明はかなり高レベルであり、技術的な詳細をあまり掘り下げてはいけません(ただし、SOAプロジェクトのより具体的で認識可能な例は役に立ちます。

1
Dana the Sane

従来のアプリケーションアーキテクチャは次のとおりです。

  • ユーザーインターフェース
  • ユーザーインターフェイスの背後にカプセル化/隠されている未定義のもの(実装)

プログラムでデータにアクセスする場合は、スクリーンスクレイピングに頼る必要があるかもしれません。

SOAは、UIを公開するのではなく、機械読み取り可能なデータやAPIを公開することに焦点を当てたアーキテクチャであるように思えます。

1
ChrisW

SOAまたはサービス指向アーキテクチャは、アプリケーションまたはシステムが特定の特性セットに準拠する基礎となる(および通常は分散された)ソフトウェアサービスから構築されるソフトウェアアーキテクチャパターンです。

  1. インターフェース、ポリシー、および契約ベース
  2. ロケーションの透明性
  3. 自律的
  4. 抽象
  5. 再利用可能
  6. コンポーザブル
  7. ステートレス
  8. 発見可能
  9. 拡張可能
  10. 疎結合

SOAの主な目標は、ソフトウェア開発の俊敏性です。つまり、変更に簡単かつ安価に対応できることです。したがって、企業は変化する市場に迅速に対応できます。

サービスは通常、Webサービスとして実装されます(ただし決して排他的ではありません)。つまり、ユビキタスWeb HTTPプロトコルで動作し、XMLベースのSOAPまたは軽量(より一般的な)RESTパラダイム。

1
Robert Morschel