サービス指向アーキテクチャ(SOA)

サービス指向アーキテクチャとは?

サービス指向アーキテクチャ (SOA) は、サービスと呼ばれるモジュラー ソフトウェア ユニットが集合したアプリケーションを作成するための最新のソフトウェア アーキテクチャのパラダイムです。SOA では、サービスは自己完結型であり、モジュール化され、疎結合しています。この手法では、すべてのモノリシック アプリケーションとは対照的に、コンポーネント単位で個別に更新できる複雑な分散アプリケーションを構築できます。一般的な SOA ソフトウェアスタックには、サービスを構成するアプリケーション ソフトウェア、プラットフォーム サービス、ミドルウェアが含まれます。これらのサービスは、高性能ハードウェアまたはバーチャルマシン上で実行されます。

一般化された SOA ソフトウェアスタックは、上からアプリケーション ソフトウェア、ミドルウェア、基本ソフトウェアの各層で構成され、高性能ハードウェア上で動作します。

一般化された SOA ソフトウェアスタック。

サービス指向通信 (SOC)

SOA ベースのアプリケーションは、メッセージ上で情報交換を行う機能を利用できるようにする、サービス指向通信用のサービス指向インターフェイスを使用しています。サービスは、SOA においてクライアントまたはサーバーの役割を果たしています。各クライアントサービスまたはサーバーサービスは、コンポーネントとしてソフトウェアに実装されます。クライアント コンポーネントとサーバー コンポーネントの接続点は、クライアント/サーバーポートと呼ばれ、サービス指向インターフェイスを構成します。

2 つのサービス指向アプリケーションは、メッセージを使用して互いに通信します。

メッセージを使用したサービス指向通信。

情報交換を促進するため、クライアント コンポーネントとサーバー コンポーネントは、Publish-Subscribe、Request-Response、Fire-Forget など、さまざまなサービス指向通信のパターンを使用します。これらのパターンは非同期または非周期的であり、これは SOC の重要な特徴です。イベントベース モデリングは、Stateflow® と SimEvents® を使用して実行できます。さらに、Simulink® の Messages & Events ライブラリを使用すると、メッセージベースの通信を使用するアプリケーションのモデル化、シミュレーション、C++ コードの生成が可能になります。

メソッド (Request-Response、Fire-Forget)、イベント、フィールドを含む、サービス指向通信インターフェイスのパターン。

サービス指向通信インターフェイスのパターン。

SOA ワークフロー

モデルベースデザイン (MBD、モデルベース開発) のワークフローを使用すると、次を実行してサービス指向アプリケーションを構築できます。

  • Requirements Toolbox™ を使用した要件の指定
  • System Composer™ を使用した SOA のオーサリング
  • Simulink でのサービスとコンポーネントのモデル化とシミュレーション
  • 既存のサービスやコンポーネントをインポートして再利用
  • Embedded Coder® を使用した C++ 量産コードの生成
  • 完全な SOA アプリケーションの統合
  • エッジデバイスとクラウドへの SOA アプリケーションの展開

SOA の拡張性

サービスは再利用可能で、アップグレード可能です。ソフトウェア エンジニアは、アジャイルの原則を使用してスケーラブルなサービス指向アプリケーションを構築でき、OTA (over-the-air) アップデートをサポートするシステムも含まれるため、それらを常に最新の状態に維持できます。

インシデントからの復旧時間を短縮する一連の手順と関連ツールを示す、ソフトウェア定義車両のワークフロー。

インシデントからの復旧時間を短縮する、ソフトウェア定義車両のワークフロー。

SOA のユースケース

自律性、接続性、電動化を組み込んだソフトウェア定義システムでは、サービス指向アーキテクチャが基盤となるフレームワークとして重要な役割を果たします。SOA は、自動車、航空宇宙、産業オートメーション、IoT、医療機器、ロボティクスなどの産業分野において、SoS (システム オブ システムズ)、マルチエージェント システム、離散イベントシステム、分散システムの構築にも使用されています。

これらの産業分野をサポートするために登場したのが、サービス指向アーキテクチャとサービス指向通信に基づくソフトウェア アーキテクチャ フレームワーク、ミドルウェア標準、通信プロトコルです。これらのフレームワークや標準の例としては、AUTOSAR Adaptive、DDS、ROS/ROS2、FACE、SOME/IP、MOSA、MQTT、OPC UA などが挙げられます。

自動車における SOA

SOA は、ソフトウェア定義車両 (SDV) の登場により、自動車業界で大きく普及しました。SDV は、信号ベース アプリケーションとサービス指向アプリケーションの両方を、車両コンピューターとゾーンコントローラーを備えた新しい EE アーキテクチャに統合します。開発者は、System Composer と Simulink を使用して SOA をモデル化し、そのシミュレーションを行い、C++ 量産コードを生成してから、エッジデバイスやクラウドにモジュラーサービスとして展開できます。さらに、これらのサービスは、車両のライフサイクル全体で OTA (over-the-air) ソフトウェア アップデートを使用したアップグレードが可能であり、顧客体験の向上を図ることができます。SOA は、上記の業界標準や社内のフレームワークに組み込まれています。

AUTOSAR Classic ソフトウェアスタックと AUTOSAR Adaptive ソフトウェアスタックがクラウドに接続された自動車の例。

自動車の例: AUTOSAR Classic ソフトウェアスタックおよび AUTOSAR Adaptive ソフトウェアスタック。

航空宇宙、防衛における SOA

航空宇宙および防衛産業では、SOA は、MOSA (Modular Open Systems Approach) 標準化イニシアチブの一部である FACE™ (Future Airborne Capability Environment) 標準で採用されています。FACE は、サービス指向通信に TSS (Transport Services Segments) を使用しています。Simulink と DDS Blockset を使用すると、FACE 規格のアプリケーションのモデル化とシミュレーション、DDS TSS 用の FACE IDL のインポート、FACE TSS 通信のシミュレーション、FACE アプリケーション用の C++ 量産コードの生成と展開が可能です。

IDL のインポート、インターフェイスのデータディクショナリの表示と編集、アルゴリズムのモデル化、C++ コードの生成と FACE アプリケーションへの展開を示す、FACE IDL ベースのワークフロー。

インポートから展開までを示す FACE IDL ベースのワークフロー。

参考: System Composer, Simulink, Stateflow