SOA(サービス指向アーキテクチャ)とは?MSAとの違いも合わせて解説
ビジネス上のニーズに合わせ、システムを迅速に変容させられる手法のひとつとして「SOA」が挙げられます。システム開発時間の短縮にもつながると言われており、昨今の時代変容に追いつくための手段として着目されています。 当コラムでは、基本的な情報として、概要から導入によるメリットや、比較されやすいマイクロサービス(MSA)にも触れながら、SOAについてご紹介します。 SOAとは SOA(Service-oriented architecture/サービス指向アーキテクチャ)とは、システム設計における概念または手法を指します。 具体的には、複数の別システムを、ビジネス的に汎用性の高い機能単位で分割し、さらに分割した別々の機能を組み合わせて、新たなシステムを再構築する仕組みとなります。 SOAのメリット ・システム開発や仕様変更に対する柔軟性 SOAが生み出された当時、システム内で汎用性の高い機能があっても、他システムで再利用することは非常に難しいとされていました。 たとえば、製造から販売までを一貫して担っているメーカーにおいて、製造部門で活用しているシステムの「在庫管理機能」を、そのまま販売部門でも活用できないかと考え、販売部門が活用しているシステムと連携を試みたとします。しかし、技術的な観点で見ると、連携は一筋縄ではいきません。なぜなら、大半のシステムは各ユーザー(当例では各部署)の状況や使用意図などにフォーカスして開発されたものであり、他部署での利用は想定されていません。それぞれのシステムでOSや開発言語、ネットワークなどの相違点が多く、もし仮に連携させようと試みても、多大なコストが発生してしまうのです。 SOAは、こうした課題を解決できるポテンシャルを秘めています。先述の通り、SOAは各システムを機能単位で分割し、再構築する考え方です。そのため、システム変更を行う際も、柔軟に機能を組み替えることが可能です。 ・開発期間の短縮 SOAには、既存のアプリケーション機能を再利用できるという側面もあります。そのため、新規システム開発においてもゼロから機能を開発することなく、再利用によって開発期間を短縮できるメリットがあります。 ・重複開発の防止 とりわけ大規模な組織においては、各部署で知らず知らずの内に類似機能を備えた別システムを導入してしまっていた、という事態も起こり得ます。SOAでは、汎用性の高い機能をピックアップし開発を進められる側面があるため、各部署やアプリケーションごとに重複したシステムが開発される、といった事態を防ぐこともできます。 MSAとの違い SOAと混同されやすいワードに、MSA(マイクロサービスアーキテクチャ)があります。 MSAとは、複数の小規模な機能を組み合わせてアプリケーションを構成するソフトウェア開発手法のひとつです。SOAの誕生後に生み出されたMSAは、一般的にはSOAの延長線上にある新たな技術として認識されている傾向があるようです。 SOAとMSAは、どちらも「サービスを軸とし、変化に対応しやすいシステムを作る」という目的は共通点といえますが、いくつかの相違点もあります。以下に、相違点の一例をご紹介します。 概念の違い そもそもSOAとMSAは、生み出された背景および考え方から異なります。 SOAは先述の通り、従来では機能変更が容易ではなかった企業情報システムを、「サービスの集合」と定義しなおすことによって、変化に対応しやすいシステムをつくることを目的に生み出されました。しかし、SOAを実現しようと考えたとき、当時のシステム基準に沿った環境整備を試みると、複雑・高価なミドルウェアや仕組み(API等)が必要だったのです。そのため、当時のSOAはあまり定着しなかったのが実態でした。 一方、MSAは、上述の課題を払拭すべく、よりシンプルな考え方をもとに生み出されました。結果として、多くの現場で受け入れられ、国内でも導入による成功事例が多数見受けられるようになったのです。 アーキテクチャーの違い 技術的な相違点として、MSAはサービスが細分化されています。そのため、各サービスは互いに独立して動作します。結果として、ひとつのサービスを仕様変更する際、他サービスへの影響が最小限となるように設計されています。 対してSOAは比較的大規模であり、互いに独立していないモジュール型のサービスとなります。 コンポーネントの共有 MSAは独立しており、各コンポーネント(システムを構成する機能単位の部品)が最小限の共有に留まるため、サービスの耐障害性が向上します。またコンポーネントの共有が少ないことで、開発側は新しいバージョンの展開が容易となります。 一方、SOAではコンポーネントの共有頻度が相対的に高くなります。そのため、関連サービスで問題が起きると、他サービスの有効性が損なわれるリスクもあります。 プロジェクトの相性 MSAは細分化されていることから、展開対象のプロジェクトの大きさと範囲はかなり縮小されます。Web・モバイルアプリケーションなどを含む小規模な環境には、MSAが向いているという説もあるようです。 対照的に、規模と範囲が大きくなるのはSOAとなります。多様なサービスの複雑な統合に適しており、企業間の連携や、大規模な環境下であればMSAを選択する方がよいという見方もあります。 ストレージリソースの割り当て方法 SOAとMSAは、ストレージリソースの配分も異なります。 MSAでは、個々のサービスにデータストレージや、専用サーバー・データベースを備えています。 SOAの場合、各サービスを包括するアプリケーションごとに、共有のデータストレージが割り当てられます。 まとめ 「一時の流行」として認識されていたSOAですが、クラウドコンピューティングの台頭とともに、有用性も再認識されています。アプリケーション機能の再利用を可能とする分、資産の有効活用や開発期間の短縮、アプリケーション間の依存度合いの低減による運用コスト削減など、さまざまなメリットをもたらすためです。スピーディかつ品質の高いシステム開発が求められる昨今、SOAはいち手段として選択肢に入れる余地があるともいえるのではないでしょうか。