SOAとは?初心者向けに画像多めで解説!
SOA(Service Oriented Architecture)とは、システムの機能をサービス単位で分割し、複数のシステムから再利用できるようにする設計思想です。
SOAって何?

SOAは『Service Oriented Architecture(サービス指向アーキテクチャ)』の略だよ。

サービス指向・・・?なんか難しそうだね。

大丈夫。簡単に言うと、システムの機能を部品化して再利用しやすくする考え方だよ。

部品化?

例えば『ログイン機能』『商品検索機能』『決済機能』みたいに、機能ごとに分けて管理するイメージだね。

なるほど。全部を1つの大きなシステムとして作るんじゃないんだ。

レゴブロックで考えるSOA

でも、なんでわざわざ分ける必要があるの?

レゴブロックを想像してみて。
家を作るときも車を作るときも、同じブロックを組み合わせるよね。

確かに車にしか使えないブロックとか家にしか使えないブロックとかではないね。

SOAも同じ。機能を部品として用意しておけば、新しいシステムを作るときに再利用できるんだ。

毎回ゼロから作らなくていいってことか。

その通り。だから開発効率が上がるんだよ。

SOAの具体例

実際にはどんな場面で使われるの?

例えばネットショップだね。

よくあるECサイトだね。

ネットショップにはいろんな機能がある。
- ログイン
- 商品検索
- 在庫確認
- 決済
- 配送管理

SOAでは、これらをそれぞれ独立したサービスとして作るんだ。

在庫確認サービスとか決済サービスとか?

そうそう。

レゴブロックみたいに他の通販サイトにそのサービスを流用できるってこと?

そうだよ。別の通販サイトを作るときに、既存の決済サービスをそのまま利用できる。

一から作りなさなくていいなら、開発コストが抑えられるね。

SOAのメリット

再利用以外にもメリットある?

あるよ。こんな感じ。
① 開発スピードの向上

再利用できるってことはつまり、開発スピードの向上につながるよ。

② メンテナンスしやすい

機能ごとに独立しているから修正しやすいよ。

影響範囲も分かりやすそう。

③ システム拡張がしやすい

新しい機能を追加するときも、既存サービスに組み込みやすい。

後から機能追加しやすいのか。

SOAのデメリット

良いことばかりじゃないよね?

もちろんデメリットもあるよ。
① 設計が複雑になる

どの機能をサービスとして切り出すか考える必要があるよ。

切り出す?

単純に1つのサービスをまとめて作れるように、切り出せるように作るのが複雑なんだ。

あぁ、一番最初の設計が大変なんだね。

② サービス間通信が増える

サービス同士でやり取りするから通信の管理が必要になる。

あぁ、通信障害とかあると大変そうだね。

そうだね。通信の安定性の確保やセキュリティ対策が必要だよ。

③ 管理対象が増える

サービスが増えるほど運用管理も複雑になる。

部品化にも手間はあるんだね。

SOAとマイクロサービスの違い

そういえばマイクロサービスって聞いたことある。

実はSOAとよく比較されるんだ。

何が違うの?

どっちも「機能をサービスとして分割する」のは一緒だよ。
簡単に言うと、SOAをさらに細かく分割した考え方がマイクロサービスに近い。

やっていることは一緒だけど、ちょっと使い方が違う感じ?

そう、目的や組織の状況に合わせて使い分けるんだ。
主な違いはこんな感じ。
| 項目 | SOA | マイクロサービス |
|---|---|---|
| サービス粒度 | 大きめ | 小さい |
| 目的 | 再利用 | 独立開発 |
| 管理 | 集中的 | 分散型 |
| 対象 | 企業全体 | アプリ単位 |

大きめのサービスにはSOAで分けるんだね。

まとめ

SOAは一言で言うと、システムの機能をサービスとして部品化し、再利用しやすくする設計思想だね。

レゴブロックみたいに必要な機能を組み合わせてシステムを作る考え方だったね。

その理解でバッチリ。SOAは『再利用』『保守性』『拡張性』を高めるための考え方なんだよ。

