
わかるためにわける
前回は、SOAの生まれた背景について教えていただきました。なんとなく全体像は分かった気がします。ここで、ちょっとSOAの構造というか、定義についてまとめていただけますでしょうか。
最初に、SOAはService Oriented Archtectureの略だと言いました。でも、実はこれだけ聞いてもよくわからない。ここで問題になるのが、「サービスってなに?」「アーキテクチャってなに?」っていうことですよね。
はい。そういわれるとあまりキチンと理解できていない気がします。
じゃあ、一応おさらいという意味で、アーキテクチャについて説明しましょうか。
私たちは、物を見るときにそのまま全体だけを見て理解することはできませんよね。だから、それをより小さな単位に分解してみる。そこで、初めて「あぁ、こういう形をした部品からできているんだな」と理解できるわけです。つまり、構成要素に分けるんだね。

ただし、分けるだけでその構造物を十分に理解したとは言えません。例えば、全くの素人にパソコンの部品を渡してもパソコンは作れないよね。なぜなら、彼らは渡された部品をどのように組み合わせれば、パソコンになるか分からないからです。構造物には構成要素を組み上げるための思想や原理が要るんですね。

つまり、構造物は「構成要素」と「構成要素の組み合わせるための思想・原理」によって成り立っているわけです。私は、その両者をあわせたものをアーキテクチャとして定義しています。
なるほど。つまり、サイロ型のシステムの場合、データベースとアプリケーションが一体化しているアーキテクチャなんですね。
そうそう。この場合だと、アプリケーションとデータという構成要素があって、それらが一体化しているのがサイロ型システムのアーキテクチャだね。

オブジェクト指向の場合は、構成要素はメソッドとデータで、それが一つのオブジェクトの中に情報隠蔽され、外部からのアクセスのためにI/Fだけが提供されている。それが、オブジェクト指向のアーキテクチャ的な特徴と言えるでしょう。(次ページへ続く)