マイクロサービスとは?メリットとデメリットを簡単解説

マイクロサービスとは、複数の独立した小規模なサービスを組み合わせて、一つの大きなアプリケーションを構築する開発手法のことです。マイクロサービスで構築されたアプリケーションの構成は、マイクロカーネルアーキテクチャと呼ばれます。
マイクロサービスは、それまでのアプリケーション開発で主流だったモノリシックカーネルの欠点をカバーし、アジャイル開発に向くため、近年注目を集めています。
本コラムでは、マイクロサービスの概要とメリット、デメリットをご紹介いたします。


イントラマートをすべて知れる資料はこちら
ローコード開発・業務プロセスのデジタル化で豊富な実績を持つintra-martが、お客様のビジネスにどのような効果をもたらすのか、製品コンセプト・特長・導入効果などをまとめています。
1. マイクロサービスとは?
マイクロサービスとは、複数の独立した小規模なサービスを組み合わせて、一つの大きなアプリケーションを構築する開発手法のことです。マイクロサービスで構築されたアプリケーションの構成は、マイクロカーネルアーキテクチャと呼ばれます。
従来のアプリケーション開発で主流だったモノリシックカーネルの欠点をカバーでき、アジャイル開発にも向くため、近年注目を集めています。
海外ではAmazonやNetflix、Uber、国内では全日本空輸(ANA)や三越伊勢丹、みんなの銀行などがマイクロサービスを採用してアプリケーションやシステムを開発しています。
モノリシックサービスとは?
モノリシック(monolithic)とは、「一枚岩(モノリス)のような」という意味で、その名の通り、すべての機能、パーツを一つの大きな塊として開発する手法です。
モノリシックサービスでは、機能同士が密接に関わり合っており不可分なため、一つの機能のみに変更を加えたい場合も全体への影響を調査したりテストしたりする必要があります。このため、システムやアプリケーションが大きくなればなるほど、変更や新機能の追加などの対応をスピーディに行うことが困難になります。
また、デプロイする際は、多くの場合、システムを停止しなければなりません。
マイクロサービスは、個々のサービスが独立している
マイクロサービスは、複数の独立した小規模なサービスを組み合わせて、一つの大きなアプリケーションを構築する開発手法のことですが、その個々のサービス(コンポーネント)もまた「マイクロサービス」と呼ばれます。このマイクロサービス間は、APIやメッセージ・ブローカーなどを介して通信します。
個々のマイクロサービスは互いに独立しており、それぞれの関連性が低い点が大きな特徴です。この特徴がさまざまなメリットを生みます。たとえば、ある機能(サービス)で障害が起きても、ほかの機能がその影響を受けにくいなどです。
2. マイクロサービスのメリット
アプリケーション開発においてマイクロサービスを採用する主なメリットは、次の7点です。
一つのシステムに異なる技術を採用できる
マイクロサービス同士が独立しており疎結合であるため、開発言語などの技術を機能ごとに変えることもできます。このため、それぞれの機能に最適な技術を採用することができます。
柔軟性・拡張性が高い
繰り返しになりますが、マイクロサービス同士が独立しており疎結合であるため、変更を加えたい場合の影響範囲は該当部分のみになります。このため、モノリシックとは異なり、システムやアプリケーションが大きくなっても機能追加や変更がしやすいという点がメリットです。
また、ある機能(サービス)を拡張したい場合は、該当のマイクロサービスにのみ変更を加えることが可能なため、拡張性が高く、デプロイまでがスピーディーに行えます。
負荷を分散できる
同様の理由で、ある機能に負荷がかかった場合は、システム全体ではなく、特定の機能のみスケールすることで対応できます。このように、負荷を分散できる点もメリットです。
開発期間を短縮できる
マイクロサービスでは、小規模な機能単位に分けて開発を進めるため、開発期間が短くて済みます。このため、開発チームの人数も小人数となり、コミュニケーションや進捗の把握などもしやすくなります。
アジャイル開発に向いている
ここまでに説明してきたように、マイクロサービスは、柔軟で軽量な開発手法です。
このため、柔軟性が高く、迅速性に富んだ開発手法であるアジャイル開発と親和性が高いのもメリットです。
【関連記事】
アジャイル開発のメリットやデメリットから進める方法まで徹底解説
デプロイの際にシステムを止める必要がない
モノリシックサービスでは、デプロイの際にシステムを停止させる必要があるケースがほとんどですが、マイクロサービスではほかの機能部分は停止させずに一部の機能のみをデプロイできます。
このため、一日に複数回のデプロイも可能です。
コードを再利用できる
マイクロサービスでは機能を細分化して構築するため、似たような機能を作る際に、コードを再利用できます。
そのため、類似機能で一からコードを記述する無駄が省けます。
3. マイクロサービスのデメリットと注意
一方、マイクロサービスにはメリットばかりではなく、デメリットもあります。
マイクロサービスでは、個々の機能は小さく独立していますが、構成が複雑になる可能性があります。さらに、これらが一つのシステムやアプリケーションとして動作するためには、それぞれがAPIなどを介して通信を行う必要があります。
このことが、マイクロサービスの抱える次のようなデメリットにつながっています。
設計やプロジェクトの統括に高いスキルが求められる
マイクロサービスのメリットとして「一つのシステムに異なる技術を採用できる」がありますが、その裏返しとして、システムやアプリケーション全体の設計の難易度が上がります。特に、最初に分割した機能単位は後から変更できないため、設計時に慎重に検討する必要があります。
このため、設計担当者やプロジェクトを統括するリーダーには、幅広く高いスキルが求められます。
データの一貫性を担保しづらい
マイクロサービスでは、機能ごとに使用するデータストアも分割します。さらに、機能ごとに同期せずにデータ処理を行うこともあります。
このため、機能間でデータの一貫性を担保しづらい面があります。
デバッグや統合テストの難易度が高い
個々の機能単位は独立しているものの、エンドユーザーへ提供する際は、これらが連携して一つのシステムやアプリケーションとして動作します。そこで、エンドユーザーへ完成したサービスとして提供するに当たり、デバッグや統合テストが必要となりますが、エラーが出た場合に、どの機能が原因なのかをたどる作業の難易度が高いです。
API管理の難易度が高い
それぞれの機能は、APIなどを通じて通信し、一つシステムやアプリケーションに多くのAPIが使われます。機能側に変更がなくても、APIを変更すれば、そのAPIを利用しているすべての機能に影響するため、APIを適切に管理する必要があります。
4. まとめ
マイクロサービスは、モノリシックサービスをクラウド化したい場合や、柔軟性・拡張性の求められるシステムやアプリケーションの開発に向いた手法です。
開発期間の短縮や、各機能に最適な技術をそれぞれ採用できるなど、メリットは多いですが、デメリットや注意点もあります。
開発したいシステムやアプリケーションの特性に合わせて、マイクロサービスかモノシリックサービスか、最適な方法を選択してください。
Concept Book
ローコード開発・業務プロセスのデジタル化で豊富な実績を持つintra-martが、お客様のビジネスにどのような効果をもたらすのか、特長や導入効果など製品コンセプトを詳しくご紹介しています。

お困りごとがありましたら、お気軽にご相談頂ければと思います。