Close

マイクロサービスと Web サービス:その違い


マイクロサービスと Web サービスはさまざまな点で異なります。マイクロサービスは一連の小さなサービスからアプリを構築するアプローチですが、Web サービスはインターネットをパイプとして相互に通信する、プログラム可能なコンポーネントです。類似点はありますが、目的と実装方法が異なります。

このガイドでは、マイクロサービスと Web サービスのメリット、短所、および違いについて説明します。これにより、ビジネスに適したアーキテクチャのアプローチを選択し、Compass がアプリに適している理由を理解できます。

ロゴ: Compass。

Compass を無料で試す

開発者のエクスペリエンスを向上させ、すべてのサービスをカタログ化し、ソフトウェアの健全性を高めましょう。

マイクロサービスとは?


マイクロサービス、またはマイクロサービス・アーキテクチャでは、1 つのアプリを小さな独立したサービスのコレクションに分割して構築します。各サービスは独自のプロセスを実行するため、マイクロサービスを同時に実行する他のサービスやアプリ全体とは関係なく、そのマイクロサービスを構築、デプロイ、拡張できます。

マイクロサービス・アーキテクチャは、アプリを構築する従来のモノリシック・アーキテクチャに対応するものとして始まりました。従来のアーキテクチャでは、アプリで処理するものすべてのコード・ベースは 1 つだけであり、その一部を変更するにはアプリ全体をデプロイする必要があります。

マイクロサービスのメリット


マイクロサービスは軽量かつ柔軟性に富んでいるため、アプリ構築に使用すると大きなメリットがあります。マイクロサービスのメリットは次のとおりです。

  • スケーラビリティ:各サービスは需要に応じて個別に拡張できます。つまり、他のサービスやアプリのパフォーマンスに悪影響を及ぼすことなく、増大した負荷を処理できます。
  • モジュール性:各サービスが特定のビジネス機能(製品、ユーザー、チェックアウト、ショッピング・カートなど)を示すものであれば、システムはモジュール化されています。自律的なチームが変更を迅速に繰り返し、各サービスを個別に維持および開発できます。
  • メンテナンスの容易さ:各サービスが独立しているため、1 つのサービスを保守または更新しても、アプリ全体のコード・ベースを変更する必要はありません。
  • レジリエンシー:マイクロサービスは自律的であるため、サービス障害が 1 つ発生しても、アプリ全体に大きな影響はありません。
  • デプロイのスピード:このスタイルのアーキテクチャでは、大規模かつ複雑なアプリの継続的インテグレーションと継続的デプロイを実現でき、市場投入までの期間が短縮されます。
管理者クラウドのアイコン
関連資料

サービスとしてのインフラストラクチャ

アイコン: 3 つの輪
ソリューションを見る

Compass による DevEx の向上

マイクロサービスの短所


マイクロサービスにはさまざまなメリットがありますが、マイクロサービス・アーキテクチャの使用には次のような課題も考えられます。

  • 複雑さ:アプリをより小さく独立したマイクロサービスに分割すると、最終的には分散型システムになるため、他のサービスと連携させ、データの処理に一貫性を持たせる必要があります。適切なツールがなければ、このソフトウェアのスプロール化を管理できなくなります。
  • テスト:サービス間の分散性と相互依存性は、ユニット・テスト、統合テスト、およびエンドツーエンド・テストがはるかに複雑になることを意味し、テストに専用のマイクロサービス・ツールと技術が必要になります。
  • セキュリティ:サービスと通信チャネルの数が増えており、攻撃を受ける可能性も高まっています。つまり、各サービスを個別に保護し、サービス間の安全な通信を確保するには、特別な注意が必要です。
  • デプロイ:マイクロサービスをデプロイするには、Open DevOpsCompass などのツールと、デプロイを自動化してフォールト・トレランスを確保するための連携の手法が必要になることがあります。

Web サービスとは


Web サービスとは、インターネット経由でアクセスできるアプリやプログラム可能なコンポーネントであり、ネットワークを介したデバイス間の通信を可能にします。Web サービスは特定の機能セットを実行することを目的としています。

そのために、クライアント・アプリとサーバー・アプリの間でメッセージを送受信しています。Web サービスは、データの取得や複雑なビジネス・プロセスの実装など、さまざまな目的に利用されます。

Web サービスの長所

Web サービスは、インターネットまたはイントラネットを介してアプリ間の通信を可能にしながら、次のような明確なメリットを提供します。

  • 相互運用性:企業は複雑なルールを必要とせず、Web サービスを介して通信できます。Web サービスでは、HTTP や AMQP などの標準化された Web プロトコルにより、言語を問わずあらゆるソフトウェア・システムと通信できます。
  • 統合のしやすさ:Web サービスは、さまざまなアプリ、システム、および Web サイトでの通信が可能なため、複数のソースからデータを接続する必要がある場合に非常に便利です。
  • コスト:インターネット・プロトコルによって安価に通信できるため、手頃な価格の通信環境を構築できます。

Web サービスの短所

Web サービスには、次のような独自の課題もあります。

  • セキュリティ:Web サービスは、バッファ・オーバーフロー・インジェクションやセッション・ハイジャックなどセキュリティ上の課題を抱えている可能性があり、これがデータの破損、悪意のあるコードの実行、データの盗難などにつながることがあります。
  • パフォーマンスのボトルネック:Web サービスが追加のオーバーヘッドを招き、軽量な通信メカニズムに比べてパフォーマンスが低下する可能性があります。
  • 複雑さ:Web サービスは、直接的なプログラミング・アプローチよりも複雑なインタラクションとデータ交換を伴います。その複雑さが Web サービスの開発、デバッグ、および保守を難しくする可能性があります。

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


では、マイクロサービスと Web サービスの違いは何でしょうか?どちらがアプリに適しているか判断できるように、両方のサービス・タイプを以下のようにいくつかの側面から調べて判断しましょう。

アーキテクチャ

マイクロサービスは、その構築という点では、独立した疎結合サービスでアプリを構成する分散型アーキテクチャです。Web サービスは、システム間で相互運用可能な通信を可能にする、標準化されたアーキテクチャに基づいています。

スコープ

マイクロサービスのスコープは比較的小さく、各サービスは特定のビジネス機能に焦点を当てています(たとえば、あるサービスはショッピング・カートを中心とし、別のサービスはユーザー生成コンテンツを中心とするなどです)。一方、Web サービスのスコープは大きく、そのほとんどが比較的大きい機能コンポーネントを表します。

通信プロトコル

マイクロサービスの通信には、HTTP、AMQP、gRPC などのさまざまなプロトコルが使用されますが、Web サービスの他のシステムとの通信には、SOAP、REST、XML-RPC などの標準化されたプロトコルが使用されます。

デプロイ

開発では、マイクロサービスは独立してデプロイされます。その場合にはデプロイ・プロセスを容易にするため、コンテナー化によって他のサービスから分離することがよくあります。一方、Web サービスは通常、モノリシック・アプリ内の単一のユニット、またはサービスのコレクションとしてデプロイされます。

複雑さ

どちらのサービスもかなり複雑ですが、マイクロサービスはその分散型の性質から、アーキテクチャの面でより複雑です。このことから、相互に依存する部分すべてを管理する必要があることは明らかです。

Web サービスは通常、アプローチの標準化と集中管理により、それほど複雑にはなりません。ただし、特定の基準に準拠する場合は複雑になることがあります。

ユースケース

Web サービスとマイクロサービスのどちらを使うかを判断するには、次の 3 つのユース・ケースをご覧ください。それぞれに最適なオプションを説明します。

  • e コマース・プラットフォーム:大規模かつ複雑なアプリであり、信頼性の高いさまざまな部分(カタログ、ウィッシュ・リスト、支払いシステム、ショッピング・カートなど)と連携させる必要があります。マイクロサービスによって、各機能がそれぞれ安定し、他の機能との相互作用もスムーズであることが保証されます。
  • 旅行予約アプリ:従来のシステムと通信するにはアーキテクチャが必要です。標準化されたプロトコルに基づく Web サービスでは、このアーキテクチャによって旅行アプリが各種プラットフォームや従来のアプリと円滑に通信できます。
  • フィンテック・サービス:このアプリは複雑であるため、頻繁な変更に対処できる安定性と信頼性が必要です。マイクロサービスは更新や必要に応じたロールバックが容易なため、最適な選択肢と言えるでしょう。

自社に適しているのはどちらか


企業がマイクロサービスと Web サービスのどちらを選ぶかを決定するには、次の重要点を考慮することが不可欠です。

アプリが大規模かつ複雑になる場合、頻繁な変更がある場合、高可用性が求められる場合、あるいはリソースを大量に消費する場合は、マイクロサービスを選択します。

アプリを従来のシステムと統合する必要がある場合、要件が単純な場合、またはリソースが限られている場合は、Web サービスを選択します。

Compass によるスケーラビリティと効率性の実現


ビジネスにマイクロサービスを使用する準備が整っていれば、分散型の疎結合アーキテクチャの複雑な管理を簡素化するツールが 1 つあります。それが Compass です。

Compass は、分散型ソフトウェア・アーキテクチャとコラボレーション・チームを 1 つの統合された場所にまとめます。Compass を使用してマイクロサービスを管理すれば、効率が向上し、アプリで次のことが可能になります。

  • チームが構築し、依存しているすべてのコンポーネントを確認することによって、ソフトウェアの無秩序な拡大を抑えます。
  • 開発者にソフトウェア・コンポーネントの包括的なカタログを積極的に提供することによって、生産性が向上します。
  • コンポーネントとその依存関係から、リアルタイムのアクティビティ更新によってサービスの健全性を監視します。

Compass の詳細

マイクロサービスと Web サービス:よくある質問


マイクロサービスと Web サービスは併用できますか?

はい、マイクロサービスと Web サービスは併用が可能です。Web サービスを使用しながらマイクロサービスを適用し、Web サービスを使用してマイクロサービス間で通信できます。

マイクロサービスと Web サービスを 1 つのアプリで組み合わせることには、主に 3 つのメリットがあります。マイクロサービスはそれぞれが独立してスケーラブルであるため、デプロイがより柔軟になります。そして Web サービスを使用しながらこれを実装すると、HTTP や AMQP などのプロトコルを使用して相互に通信できるようになります。Web サービスを使用すれば、マイクロサービス・アプリ用のパブリック API を提供することもできます。一般的に、マイクロサービスと Web サービスという強力な組み合わせを 1 つのアプリで使用すると、スケーラブルかつ柔軟、堅牢なアプリが完成します。

マイクロサービスと Web サービスのどちらを選んだらいいでしょうか?

マイクロサービスと Web サービスのどちらを選択するかは、すべてアプリのニーズによって決まります。次の質問に回答してみましょう:

  • アプリはどのくらい複雑ですか?マイクロサービスは、柔軟性、スケーラビリティ、信頼性が求められる複雑なアプリに適しており、Web サービスは、柔軟性をそれほど必要としない単純なアプリに適しています。
  • アプリで必要なスケーラビリティはどの程度ですか?マイクロサービスはモノリシック・アーキテクチャ上に構築されていないため、それぞれが個別にスケーラブルです。ニーズの変動に応じて拡張または縮小できます。Web サービスはそれほどスケーラブルではありませんが、ある程度は拡張または縮小できます。
  • アプリに必要とされる相互運用性はどの程度ですか?アプリを他のシステムと相互運用させる必要がある場合は、SOAP や REST などの標準化されたプロトコルを使用する Web サービスの方が適しています。これにより、マイクロサービス以外のアプリとの統合が容易になります。

マイクロサービスと Web サービスはセキュリティ上の懸念にどのように対処しますか?

マイクロサービスを実装するとサービスの数も増えるため、「攻撃対象領域」が拡大しますが、このような課題は、HTTPS、暗号化、認証トークン、安全なコンテナーと API ゲートウェイを使用することで軽減できます。最終的には、マイクロサービスへのすべてのアクセスを保護し、このアクセスを定期的に監査してセキュリティを確保する必要があります。

Web サービスはオープン・スタンダードとプロトコルに依存しているため、独自のセキュリティ上の脆弱性があります。しかし暗号化、認証、承認などのセキュリティ対策を慎重に実施すれば、攻撃から保護できます。


この記事を共有する

おすすめコンテンツ

次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。

DevOps のイラスト

Compass コミュニティ

イラスト: 障害の克服

チュートリアル: コンポーネントを作成する

マップのイラスト

Compass を無料で始める

DevOps ニュースレター購読

Thank you for signing up