アーキテクチャとWebサービス
システム構成技術
システムの設計パターンを知ろう!2層・3層アーキテクチャからREST・マイクロサービスまで、現代のWeb技術の基本だよ!
アーキテクチャとWebサービス
簡単にいうと
システムの設計パターンを知ろう!2層・3層アーキテクチャからREST・マイクロサービスまで、現代のWeb技術の基本だよ!
① 2層アーキテクチャと3層アーキテクチャ
クライアントサーバシステムの内部構造は、処理をどのように層(レイヤー)に分割するかによって分類されます。
2層アーキテクチャは、クライアントとサーバの2層で構成されます。クライアント側にアプリケーションの業務ロジック(計算処理や判定処理など)が組み込まれるため、クライアントPCに高い処理能力が求められます。このような高機能なクライアントをファットクライアントと呼びます。業務ロジックを変更するたびに全クライアントPCのソフトウェアを更新する必要があり、保守コストが高くなるという課題があります。
3層アーキテクチャは、以下の3つの層に処理を分離します。
| 層 | 名称 | 役割 |
|---|---|---|
| 第1層 | プレゼンテーション層 | ユーザーインターフェース(画面表示・入力受付) |
| 第2層 | ファンクション層(アプリケーション層) | 業務ロジックの実行(計算・判定・データ加工) |
| 第3層 | データベース層(DB層) | データの永続化・検索・更新 |
3層構成では業務ロジックがサーバ側のファンクション層に集約されるため、クライアント側は画面表示に特化した軽量な構成で済みます。このような軽量クライアントをシンクライアントと呼び、Webブラウザだけで動作するWebアプリケーションがその典型例です。業務ロジックの変更もサーバ側だけで完結するため、保守性が大幅に向上します。
| 項目 | 2層アーキテクチャ | 3層アーキテクチャ |
|---|---|---|
| クライアント | ファットクライアント(業務ロジック内蔵) | シンクライアント(画面表示のみ) |
| ロジック配置 | クライアント側 | サーバ側(ファンクション層) |
| 保守性 | 低い(全PC更新必要) | 高い(サーバ側のみ変更) |
| 代表例 | 業務用デスクトップアプリ | Webアプリケーション |
② SOA(サービス指向アーキテクチャ)
SOA(Service-Oriented Architecture)は、システムの機能を独立した「サービス」という部品に分解し、それらを組み合わせて大きなシステムを構築する設計思想です。
たとえば「顧客管理サービス」「在庫管理サービス」「決済サービス」をそれぞれ独立した部品として開発しておけば、新しい業務システムを構築する際に既存のサービスを再利用できます。レゴブロックのように部品を組み替えることで、変化するビジネス要件に柔軟かつ迅速に対応できるのがSOAの強みです。
③ Webサービスの通信プロトコル
異なるシステム間でデータをやり取りするための標準的な仕組みがWebサービスです。主に2つの方式があります。
SOAP(Simple Object Access Protocol)は、XML形式のメッセージをHTTPやSMTPなどのプロトコル上でやり取りする通信規約です。WSDL(Web Services Description Language)というXML文書でサービスの仕様(どんな機能があり、どのようなデータ形式でやり取りするか)を記述します。厳密な型定義と豊富なセキュリティ機能を備えていますが、XMLの記述が冗長になりがちで、処理のオーバーヘッドも大きいという欠点があります。
REST(Representational State Transfer)は、HTTPメソッド(GET/POST/PUT/DELETEなど)を使ってリソース(データ)を操作するシンプルな設計原則です。データ形式にはJSON(JavaScript Object Notation)が主に使用され、XMLに比べてデータ量が少なく、人間にも読みやすいという特長があります。現在のWebアプリケーションやモバイルアプリのAPIでは、RESTが圧倒的に主流です。
| 項目 | SOAP | REST |
|---|---|---|
| データ形式 | XML | JSON(主流)、XMLも可 |
| 通信プロトコル | HTTP、SMTP等 | HTTP |
| 仕様記述 | WSDL | 特に標準なし(OpenAPI等) |
| データ量 | 大きい(XMLタグが冗長) | 小さい(JSONが軽量) |
| 複雑さ | 高い(厳密な仕様) | 低い(シンプルな設計) |
| 現在の主流度 | 金融・エンタープライズ向き | Web・モバイルAPIで主流 |
④ マイクロサービスとモノリシック
アプリケーションの内部構造をどう設計するかという観点で、2つの対照的なアプローチがあります。
モノリシックアーキテクチャは、すべての機能を1つの大きなアプリケーションとして構築する伝統的な方式です。コードベースが一体化しているため、小規模なシステムでは開発・テスト・デプロイがシンプルですが、規模が大きくなると機能間の依存関係が複雑化し、一部の変更がシステム全体に影響を及ぼすリスクが高まります。
マイクロサービスアーキテクチャは、システムを小さな独立したサービス群に分割し、各サービスがAPI(主にREST API)を通じて疎結合に連携する設計です。各サービスは独立してデプロイ(配備)・スケーリング(拡張)が可能で、異なるプログラミング言語やデータベースを使い分けることもできます。障害の影響範囲が限定されるため、大規模システムの運用に適しています。一方で、サービス間の通信管理やデータ整合性の確保が複雑になるという課題もあり、小規模なシステムではモノリシックの方が適切な場合もあります。
具体例
3層アーキテクチャの動作を、オンラインショッピングの注文画面で追ってみましょう。
あなたがWebブラウザで商品を検索し、「カートに入れる」ボタンを押す場面です。
まずプレゼンテーション層(Webブラウザ)が商品一覧の画面を表示し、あなたのクリック操作を受け付けます。ブラウザ自体は計算や在庫確認を行いません。
次に、クリック情報がサーバのファンクション層に送られます。ここで「在庫が残っているか」「この顧客の購入限度額内か」「割引が適用できるか」といった業務ロジックが実行されます。
ファンクション層は必要に応じてデータベース層に問い合わせ、在庫数や顧客情報を取得・更新します。処理結果はファンクション層を経由してプレゼンテーション層に戻り、ブラウザ上に「カートに追加しました」と表示されます。
このように3つの層が明確に分離されているため、たとえば割引ルールを変更する場合でもファンクション層だけを修正すればよく、ブラウザ側のアップデートは不要です。
試験のポイント
- ・要は「3層=DB層+ファンクション層+プレゼンテーション層でシンクライアント実現
- ・REST=JSON+HTTP(主流)、SOAP=XML+HTTP」
- ・ファットクライアント=2層、シンクライアント=3層と対応づけて覚える
- ・マイクロサービス=疎結合・独立デプロイ、モノリシック=一体型も押さえる
独学で診断士合格を目指すなら
過去問演習・AI添削・テキストPDFまで
すべて揃ったプレミアムプランで合格を掴む!
予備校代の1/10以下で、独学の不安をまるごと解決
- 📝1次試験 過去問演習(全7科目・年度別)無制限プレミアム限定
- 🤖2次試験 AI添削(事例I〜IV・無制限)最適なフィードバックで実力アッププレミアム限定
- 📄科目別テキストPDFダウンロード。印刷して好きな使い方で学習できるプレミアム限定
- 🔖ブックマーク機能で苦手分野・何度も確認したい部分を管理プレミアム限定
- 📊学習記録・成績管理で自分の進捗を可視化プレミアム限定
プレミアムプラン
¥9,800(税込)
自動更新なし / 1年間有効
決済は Stripe(PCI-DSS準拠)で安全に処理されます。カード情報は当サービスに保存されません。