資格道場 › レッスン一覧 › システム開発技術
システム開発技術・7/12・9分

サービスを組み合わせる設計(SOA・マイクロサービス・IaC)

ゴール

SOA・マイクロサービス・マッシュアップ(ロジック/プレゼンテーション)・IaC の定義を見分けて、似た用語(SFA・BPR・SLA・コンテナなど)の選択肢を消せるようになる。

「部品を組み合わせてシステムを作る」系の用語は毎年のように出題され、特に SOA は本試験・免除試験あわせて 30 回以上出ている得点源です。選択肢には別分野の用語の説明がひっかけとして混ざるので、定義の一言を押さえておけば確実に 1 問取れます。

このレッスンで稽古する(用語チェック・過去問)

結論:キーワードは「サービスを組み合わせる」

このレッスンの用語は、ほぼ全部が**「既にある機能(サービス)を部品として組み合わせて、新しいものを作る」**という同じ発想から来ています。違いは「誰のサービスを・どの単位で・何のために組み合わせるか」だけです。

  • SOA:業務機能をサービスという部品にして組み合わせる(設計の考え方)
  • マイクロサービス:1つのアプリを小さな独立サービスに分けて連携させる(アプリの構成)
  • マッシュアップ:外部に公開されているサービス(Web API)を組み合わせて新サービスを作る
  • IaC:これだけ毛色が違い、「サーバの設定をコードにして自動で適用する」技術

Web API(アプリ同士が機能やデータをやり取りするための窓口)の設計を知っている人なら、「API の向こう側にある機能を部品として扱う」と考えると全部つながります。

SOA(サービス指向アーキテクチャ):最頻出・必ず取る

SOA は、ソフトウェアの機能を「サービス」という部品とみなし、それを組み合わせてシステムを構築する考え方です。部品単位で入れ替え・再利用できるので、ビジネスの変化に対応しやすくなります。

たとえるならレゴブロックです。「受注」「在庫引当」「請求」といった業務機能のブロックを用意しておけば、業務の流れが変わってもブロックの並べ方を変えるだけで済み、全部を作り直す必要がありません。

試験で正解になる選択肢には、次のどれかの言い回しが必ず入っています。

  • 「サービスという部品(コンポーネント)」
  • 「サービスを組み合わせてシステムを構築」
  • 「ビジネス変化に対応しやすくする」

SOA の問題は「正解を探す」より「ほかの選択肢が何の説明かを当てて消す」ほうが速く確実です。次の表で消し方を覚えましょう。

同じ部品(サービス)を並べ替える業務の流れ①受注在庫引当請求業務の流れが変わったら受注請求在庫引当作り直さず、並べ方を変えるだけ
SOA では業務機能のサービスを部品として用意しておき、業務の流れが変わっても並べ方を変えるだけで済む。

SOA と取り違えさせられる用語(比較表)

過去問で SOA の選択肢に並んだ「別の用語の説明」をまとめました。左の決め手のことばが見えたら、その選択肢は SOA ではありません。

選択肢に出る決め手のことば 正体 一言でいうと
サービスという部品を組み合わせて構築 SOA ← これが正解
業務体系・データ体系・適用処理体系・技術体系の4つ EA(エンタープライズアーキテクチャ) 組織全体の業務とシステムを4つの体系で見直す枠組み
**データフローダイアグラム(DFD)**でモデル作成 構造化分析 データの流れを図にして分析する手法
連接・選択・反復の3つの構造 構造化プログラミング プログラムを3つの基本構造だけで書く考え方
営業活動に IT を活用 SFA(営業支援システム) 営業の効率化
コア以外の業務を外部に委託 アウトソーシング 外注
ビジネスプロセスをデザインし直す BPR(業務改革) 業務の流れを根本から作り直す
Web サービスのインタフェースやプロトコルを規定 SOAP/WSDL Web サービスを呼ぶ手順・窓口の定義
XML で Web サービスを検索する仕組み UDDI Web サービスの電話帳
サービスの要求水準を合意 SLA(サービスレベル合意書) 品質の約束ごと

特に SOAP・UDDI・SLA は名前に「サービス」が絡むので紛らわしいですが、どれも**「組み合わせて構築する考え方」ではなく、通信の決まり・検索の仕組み・契約**です。

マイクロサービス:独立した小さなサービスの連携

マイクロサービスアーキテクチャは、ソフトウェアを互いに独立した単一機能の小さなサービスに分け、それらを連携させて全体の機能を実現する構成です。ある機能を変更しても、ほかのサービスに影響が及びにくいのが特長です。

反対の構成がモノリシック(一枚岩)で、全機能が1つのソフトウェアにまとまっているため、一部を変えると全体を作り直す必要があります。出題は少ないので、下の表で周辺用語との区別だけ押さえれば十分です。

選択肢の説明 正体
独立した単一機能に分割し連結、変更が他に影響しない マイクロサービス
全機能が1つに連結、変更時は全体を作り直す モノリシック
アプリと実行環境をまとめ1つの OS 上で動かす、高速に起動 コンテナ
仮想サーバを実行したまま別の物理サーバへ移動 ライブマイグレーション
モノリシックマイクロサービス機能A機能B(変更)機能C機能A機能B(変更)機能C一部を変えても全体を作り直す変えた所だけ他は影響なし
機能Bを変更したとき、モノリシックは全体を作り直すが、マイクロサービスは変えたサービスだけで済み他に影響しない。

マッシュアップ:公開サービスを組み合わせて新サービス

マッシュアップは、公開されている複数のサービス(Web API など)を組み合わせて、新たなサービスを提供することです。典型例は「お店の案内ページに、他社の地図検索機能を埋め込んで表示する」ものです。

ポイントは**「公開されている」「他のサービス」**を使うこと。自社の既存プログラムを部品化して再利用するのとは区別されます。

選択肢の説明 正体
公開されている複数のサービスを利用して新サービス マッシュアップ
既存プログラムから仕様を導き出す リバースエンジニアリング
既存プログラムを部品化して組み合わせ新規開発 部品化再利用(コンポーネント再利用)
クラスライブラリを利用して新規開発 ライブラリの利用
ページ全体でなく一部だけを読み直して表示を更新 Ajax(非同期通信)
プラグインを組み込んで動画を表示 プラグイン
他社ページへのリンクを表示するだけ ただのリンク(機能を利用していない)

マッシュアップの2分類:ロジックかプレゼンテーションか

マッシュアップは、組み合わせ方で2つに分かれます。見分けの決め手は**「1つ目のサービスの出力が、2つ目のサービスの入力になっているか」**です。

種類 何を組み合わせるか 例
ロジックマッシュアップ 処理の入出力を連結する(Aの結果をBに渡して処理させる) 予算内の宿のリストを取得 →そのリストを別サービスに渡して空室状況を取得
プレゼンテーションマッシュアップ 画面上で表示を並べる・重ねる 店舗ページに他社の地図を埋め込む/複数サービスから取ったデータを1つのグラフにして表示

たとえるなら、ロジックはバケツリレー(前の人の出したものを次の人が受け取って作業する)、プレゼンテーションはお弁当の盛り合わせ(別々に作ったおかずを1つの箱に並べる)です。

「複数のサービスからデータを取ってグラフにする」は一見処理っぽいですが、サービス同士はつながっておらず、取ったものを表示用に加工しているだけなのでロジックではありません。

ロジック:出力を次の入力に予算内の宿リストを取得空室状況を取得リストを渡すプレゼンテーション:表示を並べる店舗の情報他社の地図店舗ページ店舗の情報地図2つのサービス同士はつながっていない
ロジックマッシュアップはAの出力をBの入力に渡し、プレゼンテーションマッシュアップはつながっていないAとBを1つの画面に並べる。

IaC:インフラの設定をコードにして一括適用

IaC(Infrastructure as Code)は、サーバやネットワークの構成・設定をコード(設定ファイル)として書き、ツールで自動的に適用する手法です。手作業の設定ミスが減り、何台でも同じ設定にできます。

だから効果が出るのは**「同じ構成の多数のサーバの OS やミドルウェアを、新しい設定に一括更新する」**ような作業です。逆に、データ移行・設定方法の勉強・機器の廃棄といった「設定を繰り返し適用する」作業でないものには効きません。

設定をコードに書き、ツールで一括適用設定ファイル(コード)ツールサーバ1サーバ2サーバ3サーバ4同一構成・多数・一括手作業の設定ミスが減り、何台でも同じ設定
IaC では設定をコードに書き、ツールが同じ構成の多数のサーバへ一括で適用する。

試験での問われ方

  • 「〇〇の説明はどれか」型がほぼ全部。4つの選択肢のうち3つは別の用語の説明なので、比較表の「決め手のことば」で消していく
  • SOA では EA・DFD・構造化プログラミング(設計手法系)か SFA・アウトソーシング・BPR(経営系)か SOAP・UDDI・SLA(Webサービス周辺)のセットで並ぶことが多い
  • マッシュアップの分類問題は「出力を次の入力に使っているか」だけを見る。地図の埋め込み・グラフ化は表示の合成、一部だけ読み直すのは Ajax
  • IaC は「どの作業が楽になるか」を問う。同一構成・多数・一括の3語がそろった選択肢が正解

要点(試験直前に読む)

  • SOA = 業務機能を「サービス」という部品にして組み合わせ、システムを構築する考え方。変化に強い。
  • マイクロサービス = 独立した小さなサービスに分けて連携。ある機能の変更が他に影響しにくい(反対はモノリシック)。
  • マッシュアップ = 公開されている複数のサービス(Web API)を組み合わせて新サービスを作ること。
  • ロジック = 出力を次のサービスの入力に渡す(バケツリレー)。プレゼンテーション = 画面上で並べる・重ねる(地図埋め込み・グラフ表示)。
  • IaC = インフラ設定をコード化して自動適用。効くのは「同一構成の多数のサーバを一括更新」。

ひっかけ

  • SOA の選択肢に EA(4つの体系)・DFD・構造化プログラミング(連接・選択・反復)が並ぶ。決め手のことばで消す。
  • SFA・BPR・アウトソーシングは経営用語。「営業」「デザインし直す」「外部に委託」が出たら SOA ではない。
  • SOAP/WSDL(インタフェース・プロトコルの規定)、UDDI(検索)、SLA(要求水準の合意)は「サービス」絡みでも SOA ではない。
  • マッシュアップで「一部だけ読み直してスクロール」は Ajax、「プラグインで動画」「リンクを表示」は該当しない。「複数サービスのデータをグラフ化」はプレゼンテーションであってロジックではない。
  • IaC の効果を問われたら、データ移行・新しい OS の勉強・機器の廃棄はコード化に向かないので消す。

用語(15)

SOA Service Oriented Architecture(サービス指向アーキテクチャ)
業務機能を「サービス」という部品とみなし、それを組み合わせてシステムを構築する考え方。
⚠ SOAP(Web サービスの通信手順)や SLA(品質の合意)と名前が似ている。「組み合わせて構築する考え方」なら SOA。
マイクロサービスアーキテクチャ Microservice Architecture
ソフトウェアを独立した小さな単一機能のサービスに分け、連携させて全体を実現する構成。
⚠ モノリシックは全機能が一体で変更時に全体を作り直す。コンテナは実行環境をまとめる技術で、構成の考え方ではない。
モノリシック Monolithic(一枚岩)
全機能を1つのソフトウェアとしてまとめた構成で、一部の変更でも全体の作り直しが必要になる。
⚠ マイクロサービスの反対。「変更が他に影響しない」と書いてあればマイクロサービス。
マッシュアップ Mashup
公開されている複数のサービスや Web API を組み合わせて、新しいサービスを提供すること。
⚠ 自社の既存プログラムを部品化して再利用するのはコンポーネント再利用。「公開されている」「他のサービス」が決め手。
ロジックマッシュアップ Logic Mashup
あるサービスの出力を別のサービスの入力に渡し、処理を連結して新しいサービスを作るマッシュアップ。
⚠ プレゼンテーションマッシュアップは表示を並べるだけ。サービス同士がデータを受け渡しているかで見分ける。
プレゼンテーションマッシュアップ Presentation Mashup
複数のサービスから得た情報や機能を、画面上に並べたり重ねたりして見せるマッシュアップ。
⚠ 地図の埋め込みや取得データのグラフ化はこちら。出力を次の入力に使っていればロジック。
Web API Web Application Programming Interface
Web 経由で他のプログラムから機能やデータを呼び出せるようにした窓口。
IaC Infrastructure as Code
サーバなどのインフラの構成・設定をコードとして書き、ツールで自動的に適用する手法。
⚠ データ移行や機器廃棄の効率化ではない。「同一構成の多数のサーバに一括適用」が効果。
EA Enterprise Architecture(エンタープライズアーキテクチャ)
組織全体の業務とシステムを、業務・データ・適用処理・技術の4つの体系で整理して最適化する枠組み。
⚠ 「4つの体系」が出たら EA で、SOA ではない。
SFA Sales Force Automation(営業支援システム)
営業活動に IT を使って、営業の効率と品質を高める仕組み。
⚠ SOA と略語が似ている。「営業」が出たら SFA。
BPR Business Process Reengineering(業務改革)
コスト・品質・スピードを大きく改善するため、業務の流れを根本から設計し直すこと。
⚠ 「プロセスをデザインし直す」は BPR。SOA はシステムの作り方。
SOAP Simple Object Access Protocol
Web サービス同士が XML でメッセージをやり取りするための通信手順。
⚠ WSDL(窓口の定義)とともに「インタフェースやプロトコルを規定」と出る。SOA そのものではない。
UDDI Universal Description, Discovery and Integration
インターネット上の Web サービスを XML で登録・検索できる仕組み。
⚠ 「Web サービスを検索」と出たら UDDI。
SLA Service Level Agreement(サービスレベル合意書)
サービスの内容・範囲・品質の要求水準を、提供者と顧客があらかじめ合意しておく取り決め。
⚠ 「要求水準を明確にして合意」は SLA。システムの作り方ではなく契約。
コンテナ Container
アプリとその実行環境をひとまとめにし、1つの OS 上で軽く速く動かす仮想化技術。
⚠ マイクロサービスの選択肢で混ぜられる。「高速に起動」「オーバーヘッドが少ない」はコンテナ。

このレッスンの過去問

このレッスンで稽古する