初心者が理解すべきSOAの考え方3つ|IT・ビジネス観点からの考え方

初心者が理解すべきSOAの考え方3つ|IT・ビジネス観点からの考え方のアイキャッチイメージ

SOAとマイクロサービスとの相違点とは?

初心者の方がSOAを理解するためにまずは、マイクロサービスとの違いに注目してみましょう。

SOAもマイクロサービスも、基本的にアプリケーションやその機能の一部をサービスとして部品化し、それらサービスを組み合わせて新たなシステムを構築する手法です。

では、これら二つには一体どのような違いがあるのでしょうか。下記で実現手法に注目し比較していきます。

実現手法の違いがある

基本的にどちらも変化に対応しやすいシステムを作るために生まれました。どんな違いがあるかというと、簡単に言えば「複雑さ」が違います。

SOAは、SOAPやWSDLという仕様を用いてESBというミドルウェア製品を介し連携させるのに対し、マイクロサービスはREST APIのみで実現できます。

上記の説明でもなんとなく複雑さの違いがわかりますが、下記でSOAとマイクロサービスそれぞれ分けて説明していきます。

SOAの場合

上記でも述べたようにSOAでは、SOAPやWSDLというXMLという言語をベースに記述された仕様群を用いてESBというミドルウェアを介して通信していました。

SOAPやWSDLはREST APIに比べて複雑で、更にESBではプロトコル変換、メッセージ変換、高負荷制御、セキュリティなど、厳しい設定があるため高価になります。

SOAは複雑、高価すぎるがゆえに導入が困難であり、多くの資金が必要です。

マイクロサービスの場合

一方、マイクロサービスはREST APIのみで簡単に実現可能で、ESBのような重量級のメッセージミドルウェアを使う必要がありません。

マイクロサービスはSOAのように高性能な通信ではなく、シンプルな通信経路を用い、サービスに必要な機能を備え付けています。

このような点から、SOAと比べてマイクロサービスは軽量となっています。

初心者が理解すべきSOAの考え方3つ

ここからは、SOAの考え方に注目していきます。まず、初心者の方がSOAを理解するために知っておかなくてはいけないことは、SOAは立場の違う人間によって解釈が変わってくるということです。

その原因として、サービスという言葉の定義が曖昧であることなどが挙げられます。

下記では、初心者が知っておくべきSOA考え方を、ITからの観点、ビジネスからの観点、SOAと同じような考え方の類から説明していきます。

初心者が理解すべきSOAの考え方1:ITからの観点の場合

開発者にとってSOAは、1つのアプリケーションを開発する際に拡張性や柔軟性を高めてくれるアーキテクチャであり、導入すればアプリケーションの再利用が容易になり、システム変更の柔軟性を高めてくれるものとして捉えられています。

つまりITの観点からのSOAとは、ネットワーク上で配置や実装に依存しないサービスとしてソフトウェアを用意し、それらを連携させて高度な処理を行うソフトウェア設計であるという考え方です。

初心者が理解すべきSOAの考え方2:ビジネスからの観点の場合

ビジネス側からSOAを考えるとき、経営者はシステムを使うユーザーではないということに注意が必要であり、経営者の関心があることは、システムの利便性ではなく、ビジネスにどんなインパクトを与えるかです。

つまり、ビジネスの観点からするとSOAは、ビジネス、プロセスを柔軟に変更できるものとして捉えられています。

初心者が理解すべきSOAの考え方3:SOAと同じような考え方の類

SOAのソフトウェアをサービスという部品として構築して、一つのシステムを構築するという考え方は、SOAが生まれる以前から存在していました。

それが下記で紹介する「オブジェクト指向プログラミング」、「共有ライブラリ」、「分散オブジェクト」、「サブルーチン」などの考え方です。

これから、それらの考え方とSOAとの共通点について説明していきます。

オブジェクト指向プログラミング

オブジェクト指向プログラミングとは、物を組み立てるように表現しコンピュータを動作させることで、Java言語などがあてはまります。
では、オブジェクト指向の原則を確認してみましょう。

・カプセル化(他のプログラムに干渉しない、されないようにする仕組み)
・継承(再利用性を高める考え方)
・ポリモーフィズム(振る舞いを様々に変えられる仕組み)

これらからわかるよう、オブジェクト指向はSOAと類似している点があります。

共有ライブラリ

共有ライブラリとは、部品化されたプログラムの集合であるライブラリの一つで、複数のプログラミングで利用できる物です。

つまり、いろいろなプログラムが部品をこの共有ライブラリから持ってきて使うことができます。この考え方は、SOAのサービスとしての部品の集まりを利用するという点と類似していると言えるでしょう。

分散オブジェクト

分散オブジェクトとは、複数のコンピュータに分散して配置されたソフトウェア部品をネットワークを通して共通の仕様に基づき、互いに機能を呼び出し合えるようにする技術です。

SOAは分散オブジェクト技術の流れを汲んでおり、これによりソフトウェアの再利用性や変更の再構築や柔軟性が期待されました。

しかし、汎用性の低さや複雑さからあまり浸透しませんでした。

サブルーチン

サブルーチンとは、メインの機能外から処理を呼び出すことを意味します。

SOAの構造は、プロキシやスタブと呼ばれる仕組みを使って外部のプログラムからアクセスし、呼び出すソフトウェア構造であり、このような処理はサブルーチンが元となっていると言えるでしょう。

ちなみに、サブルーチンはプログラミングでの処理を意味する関数と違い、指示が行ったきりで戻ってこない可能性があります。

初心者が理解すべきSOAの利点3つ

SOAの考え方を解説しましたが、理解できたでしょうか。ここからは、初心者が理解すべきSOAの利点3つについて説明していきます。

SOAについてご興味がある方は、ぜひ参考にしてみてください。

初心者が理解すべきSOAの利点1:BPMとの相性の良さ

BPM(ビジネスプロセス管理)とは、Plan(計画)、Do(実行)、Check(評価)、Act(改善)というサイクルを回し、業務の成果を上げるアプローチのことです。

SOAでビジネスプロセスを部品化し、BPMに従いそれを組み合わせることで、業務の流れを自動化できます。

つまり、従来は人が手で行なってきた業務を効率化、迅速化することが可能となります。

初心者が理解すべきSOAの利点2:自由度の高い業務システムを構築できる

上記のように、SOAでビジネスプロセスを部品化し、BPMに従いそれを組み合わせることで、業務の流れの自動化だけではなく、自由度の高い業務システムを構築することも可能です。

自由度の高い業務システムとはどういうことか、下記で説明していきます。

業務に新しい手続きを追加できる

SOAを使用しない一枚岩型のシステムの場合、新しいサービスや機能を追加したいといった場合、新たなシステムを構築しなくてはいけないため、コストや時間がかかるのはもちろん、多重開発という状況が生まれやすいと言えるでしょう。

しかし、SOA化していればワークフローの定義を変えれば良いだけであり、上記のようなアプリケーション全体を変更する必要がなくなります。

手続き変更が楽になる

手続きの追加が楽になることと同様に、SOAでは変更の際もサービスの一部だけを変更するだけで良いのでアプリケーション全体を変更する必要がありません。

また、SOAでは変更や追加において、他の部品に影響しないため柔軟かつ迅速にシステム化が可能となります。

従来のシステムでも、このように部品の組み合わせによる業務プロセスの定義は可能ではありましたが、展開にツールの統一が必要で柔軟性はSOAに劣りました。

初心者が理解すべきSOAの利点3:多重開発を防ぐことができる

上記でも述べたように、SOAでは手続きの変更や追加の際に、一部サービスの変更やワークフローの定義を変更するだけで対応できる場合が多いので、多重開発を防げます。

多重開発がどのように起こるのかというと、例えば、従来のシステムではSOAのように新しい手続きなどがある場合、一から新しいシステムを構築しなければなりませんでした。そのため新しいシステムの中に、既存の機能やサービスが組み込まれてしまうのです。

SOAの導入課題について

これまで述べてきた内容からすると、SOAを導入すればビジネスの効率化を図ることができ、多くの企業が既に導入しているのではないのか、と思う方もいるでしょう。

しかし、実際のところ導入に関していくつか課題があります。

下記では、SOAがなかなか認知されない問題、導入が進まない理由について説明していきます。

SOAがなかなか認知されない

SOAがなかなか認知されない理由の一つにIT業界の中で「サービス」という言葉が様々な意味で使用されていること、ITベンダーが自社の製品戦略のためにつけた付加情報により本質が見え辛いことが挙げられます。

つまり、ITや開発側と経営者側との間に認知のずれがあると言えるでしょう。

そのため、SOAの認知度を上げるために、経営者層へSOAの登場背景や技術的特性を正しく把握させることが大切と言えるでしょう。

導入が進まない

SOAの適用は一部の先進的企業に留まっています。

その理由として、日本企業の多くがボトムアップの業務アプリケーションの構築を重視しており、個別最適の議論に陥りやすいのに対し、SOAは全体最適の考え方を要求するからと言われています。

業務が幅広い企業にとっては全体像把握が困難であったり、そもそもSOA部品の定義ができなかったりなど、課題があります。

初心者が把握すべきSOAの考え方やメリットを理解しよう

SOAはソフトウェアを部品化することでサービスの変更や追加が柔軟かつ、迅速に行うことができ、自由度の高いシステムを構築できます。

実際、初心者にとってはシンプルなようで本質が理解し難い部分があったり、開発者や経営者との間で認識のズレがあったりします。

しっかり特徴やメリットを理解することができれば、ビジネスの大幅な効率化が狙えるでしょう。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。