マイクロサービスアーキテクチャがなぜ注目を集めているのか?
今、マイクロサービスアーキテクチャが注目を集めています。
マイクロサービスアーキテクチャは2014年にマーチン・ファウラーとジェームス・ルイスが提唱したソフトウェア開発手法の1つです。AmazonをはじめとしたWebサービス企業を中心にマイクロサービスアーキテクチャが取り入れられ、注目を集めるようになりました。
この記事ではマイクロサービスアーキテクチャの概念やメリット、注目を集めている理由を紹介します。
マイクロサービス(マイクロサービスアーキテクチャ)とは何か?
マイクロサービスとはそれぞれ個別に開発した小さなサービスを組み合わせて連携し、1つのアプリケーションを開発ソフトウェア開発手法の1つです。2014年にソフトウェアエンジニアであるマーチン・ファウラー氏らによって発表されて以来、注目を集めています。
マイクロサービスでは、1つのサービスを1つのプロセスとして稼働させます。このため、それぞれ1つのプロセスを独立したサービスとして設計することができます。そして、マイクロサービスを実現する・運用を行いやすくする基盤技術の一例としてコンテナがあります。
コンテナとは個々のアプリケーションが動作する空間を生み出す仮想化技術の1つです。最近ではDockerが主流となっています。マイクロサービスでは、作成した1つのサービスをコンテナ上で実行させます。
そして、各サービスはAPIを通じて最小限の連携を行います。そのとき用いられるのがREST APIです。
REST APIとはWeb標準技術に準拠しており、サービスのリクエストをURLで表現できるのが特徴です。マイクロサービスではREST APIを用いることで離れた場所でも連携しながらサービスを提供することができます。
このようにマイクロサービスでは、様々な注目を集めている技術を活用しながら実現しています。
マイクロサービスアーキテクチャとモノリシックアーキテクチャの違い
マイクロサービスアーキテクチャとよく対比されるのがモノリシックアーキテクチャです。
モノリシックアーキテクチャとは複数の大きな機能を蜜結合させ、一つの塊のように作られるソフトウェアのアーキテクチャです。しかし、モノリシックアーキテクチャで作成されたソフトウェアでは、以下のような欠点があります。
- ちょっとした改修が変更や他の機能に影響を及ぼしやすく、機能拡張に対応しにくい
- 柔軟に機能追加や機能変更が行えない
- 1つのコンポーネントの障害がシステム停止につながる可能性がある
一方、マイクロサービスアーキテクチャでは、各コンポーネントがそれぞれ独立したサービスとして実行されるため、機能追加や更新がモノリシックサービスアーキテクチャよりも柔軟に対応できます。また、サービス単位での分散開発が行いやすいメリットもあります。
マイクロサービスアーキテクチャとSOAの違い
SOA(サービス指向アーキテクチャ)とは、部品化したソフトウェアを結合してシステムを構築するソフトウェア開発手法です。多くのシステム間連携が必要とする大規模で複雑なアプリケーションの開発に向いています。システム間のインターフェースではSOAPやXMLなどのデータ形式やプロトロルを使われます。
SOAでは主に以下の4種類のサービスを提供します。
- 機能的なサービス:業務で使用する一般的なサービス
- エンタープライズサービス:機能を具体的に実装するためのサービス
- アプリケーションサービス:アプリケーションを開発するためのサービス
- インフラストラクチャーサービス:非機能を目的で使用するサービス
SOAとマイクロサービスアーキテクチャは類似のサービスです。しかし、アーキテクチャには違いがあります。SOAは比較的大規模のモジュール型サービスです。このため、リソースを最大限に共有するように設計しています。
また、ESBをはじめとしたコンポーネントの共有も頻繁に行われています。このためESBに接続したサービスに障害が起こると、他のサービスに影響が出る場合があります。
一方、マイクロサービスアーキテクチャはサービスが互いに独立して動作するため、サービスリソースの共有を最小化するように設計されています。また、コンポーネントの共有も最小限しか行われていないため、耐障害性に優れています。
マイクロサービスが注目を集めている理由
では、マイクロサービスが今なぜ注目を集めているのでしょうか?それは今、ビジネスニーズにいち早く応えることができるシステム開発のプロセスや運用方法が求められているからです。
特にWebサービスの登場により、サービスの新規開発、本番環境へのリリース回数、小さな機能改修が頻発して発生すると、それに対応する開発手法が求められるようになりました。そのような要望に対して登場したのがDevOpsです。
DevOpsは開発部門と運用部門が連携しながら迅速に開発・テスト・リリースを行う開発手法です。特にスマートフォンが一般的になってから企業も顧客のニーズに応えるために、頻繁なバージョンアップやリリースに対応する必要が出てきました。
とはいえバージョンアップに伴い不具合が発生したら意味がありません。このため、柔軟な機能拡張に対応でき、品質やメンテナンス性の維持に必要なアーキテクチャが求められるようになりました。
マイクロサービスアーキテクチャはこうした要望に応える形で登場し、開発スピードや開発の柔軟性に加え、品質やメンテナンス性の維持に優れていることから注目を集めるようになりました。
まとめ
この記事ではマイクロサービスアーキテクチャの概念やメリット、注目を集めている理由を紹介しました。
マイクロサービスアーキテクチャはシステム開発や機能追加の迅速化や頻繁なリリースが求められる中で、柔軟な機能拡張に対応でき、品質やメンテナンス性の維持に必要なアーキテクチャとして注目を集めています。
「マイクロサービスアーキテクチャの導入を考えているが、どのように導入すればよいか分からない」など、マイクロサービスアーキテクチャに関するご相談があればぜひ弊社にお問い合わせください。
>>マイクロサービス実現に必要なAWSのサービスとは?