マイクロサービスとは
マイクロサービスアーキテクチャ(以下マイクロサービス)は、世界最大のECサイトであるAmazonがモノリシックアーキテクチャ(以降モノリシック)から舵を切って採用したことで俄然注目を浴びています。
マイクロサービスは、DX時代のITエンジニアとしてはぜひ押さえておきたい開発手法の1つです。ここでは、マイクロサービスについて理解を深めるという視点から、モノリシックとの対比を交えて解説していきます。
「マイクロサービス」を簡単に説明すると
「マイクロサービス」は開発手法の1つです。一言で定義するならば、「複数の独立したサービス(機能)を組み合わせることで、1つとなったサービスを実現するアーキテクチャ」であると言えます。この対極にあるのが、伝統的なアーキテクチャとも言うべきモノリシックです。
マイクロサービスとは、直訳すれば小さなサービスです。マイクロサービスは規模の小さなサービスを幾つも組み合わせて、その集合したものを1つのアプリケーションとして利用する方式のことです。
従来は、あらゆる機能を1つにまとめてソフトウェアを設計する方式が一般的でしたが、マイクロサービスでは機能ごとに小さなサービスとしてソフトウェアを作り、それらを組み合わせるこで1つの大きなソフトウェアとして構成します。
マイクロサービスではそれぞれのサービスは独立しており、OSやハードが異なっていても構いません。それぞれはネットワークによって結びつき、互いに他のサービスにネットワーク経由でサービスを提供します。
政府が提唱するマイクロサービスの活用
欧米や新興国に後れを取る日本のDXですが、経済産業省が「2025年の崖」と称して警鐘を鳴らしている同省公開の「DXレポート」では、日本企業がDX実現に向けて採用すべきアーキテクチャとして「クラウド」と共に「マイクロサービス」を挙げています。
このように、DX実現に向けた取り組みにおいて、「マイクロサービス」が大きく注目される所以です。
マイクロサービスの導入例
Amazonはマイクロサービスアーキテクチャを導入している企業の代表例です。
AmazonのECサイトでは「商品情報を扱うシステム」「買い物カートを管理するサービス」「利用者にメールを配信するサービス」など複数のサービスが連携しあって、Amazonという大きなサービスが提供されています。
他、 ZOZOTOWN や動画配信サービスのNetflixやLINEなど、身近なサービスにもマイクロサービスが採用されているのです。
モノリシックとは
マイクロサービスの対極にある、モノリシックについて触れておきましょう。モノリシックは「一枚岩」のことで、同じOS上で作成され1つのモジュールで構成されているアプリケーション構造になっています。
ソフトウェア設計の際、モノリシック構造では部分的に分割をせず、全てを同一のモジュールとして作り上げるという特徴を持っています。
モノリシックとマイクロサービスの違い
モノリシックは一枚岩ですが、あくまでもそれはイメージで、実際には一般的なWebシステムであれば、ユーザーインターフェースや実際の処理部分、データベースなどの役割によって分けられた構造になっています。
モノリシックは実際には機能ごとにプログラムは分かれていますが、それらは同一OS、同一のマシン内にあり、他のOSや他のマシンに分割することはできません。モノリシックはあくまで「一括りの大きな機能」なのです。
これに対して、マイクロサービスを構成している各機能は別々のOSや別のマシンに分散しており、ネットワークによって相互に連携しあっています。
マイクロサービスのメリットとデメリット
ここまでマイクロサービスの特徴や、モノリシックとの違いについて述べてきましたが、さらにマイクロサービスへの理解を深めるために、マイクロサービスの持つメリット・デメリットについて、モノリシックとの比較で挙げていきます。
マイクロサービスのメリット
マイクロサービスはモノリシックの弱点を無くし、さらにメリットを得られるような技法になっています。マイクロサービスを利用することで得られる代表的なメリットを挙げていきましょう。
■全体の開発期間短縮とコスト抑制
それぞれが小さく、特定の機能に特化したサービスの単位であり、しかも少人数のチーム単位でアプリケーションの開発を行うため、効率的かつ俊敏な対応が行え、結果として「全体の開発期間の短縮」のコスト削減が可能です。
■障害の影響範囲を狭められる
1つ1つのサービスが小さいため、障害が起きても、特定のサービスだけの影響で済ませることが可能です。また、マイクロサービスは個々の状況の把握や管理がしやすく、問題が生じてもサービス単位での対応が可能であり、かつ迅速な対応が行えます。
■柔軟性に優れている
サービスが小さく、それぞれが独立しているため、個々にシステム変更や改修が行いやすいのと、最新技術などの採用がしやすいという柔軟性が強みです。
■さまざまな組合せが可能
機能が細分化されていることで、必要な機能だけを取り出して組み合わせる、あるいは再利用するといったことが柔軟に行えます。そのため、新たなビジネスに移行する際にも、今ある機能を組み合わせて使えるため、1から新たに機能を開発する必要性がありません。
マイクロサービスのデメリット
さまざまなメリットを得られるマイクロサービスですが、残念ながらデメリットもあります。そのデメリットを理解した上で、マイクロサービスを正しく利用することが求められます。
■専門技術者が不足している
マイクロサービスはまだ歴史の浅い技術のため、マイクロサービスの利用経験者や専門のエンジニアが不足しています。こうしたエンジニアの確保をできずに導入すると、挫折や失敗する可能性があります。
■チーム間の連携が成否の鍵となる
マイクロサービスは必ず他のサービスとの連携が不可欠であり、それぞれのチーム同士の連携がプロジェクトの成否に関わります。そのためチーム間のホウレンソウ(報告・連絡・相談)と情報共有を密に行う必要があります。これを効率的に行うには共通のルールが新たに必要です。
■セキュリティ対策のハードルが上がる
サービスが分散しているマイクロサービスは、1つにまとまっている「モノリシック」と比較して、どうしても構造的にセキュリティ面が脆弱になりがちです。
それは、異なるOS、異なるマシンで稼働するそれぞれのサービス単位でセキュリティを確保しなければならないからです。マイクロサービスに最適かつ効率的、効果的なセキュリティノウハウが新たに求められます。
■全体のモニタリング機能が必要
マイクロサービスでは個々のサービス毎のモニタリングは容易ですが、システム全体の状況を把握し、管理する負荷はモノリシック以上に大きくなります。
個々のサービスに障害が発生した際の対応では、他サービスや全体への影響を考慮する必要があるため、全体をコントロールする機能や役割が必要になるのと、そのノウハウの獲得が新たに求められます。
マイクロサービスの利用で留意すること
マイクロサービスは優れた技法ですが、弱点や苦手な部分もあります。それらを認識した上で初めから対策を講じておくことです。先ずは想定される問題やリスクを洗い出し、メンバーで共有しながら課題の解決を図っておくことが重要です。
以下、課題となり得る問題について、1つの例として挙げておきましょう。
ネットワークが弱点
マイクロサービスはモノリシックと比較すると、パフォーマンス面が弱点になることがあります。それは、異なるOSや異なるマシン、あるいは他の拠点に配置された機能をネットワークを利用して組み合わせる形態を取るため、通信がボトルネックになる場合があります。
例えば、ECサイトの決済処理などで遅延や通信エラーによる処理停止が起きると、大きな問題を生じかねません。
こうした事への対応として、全てをマイクロサービスに依存させるのではなく、例えば決済系のアプリはモノリシックを利用するなど、ハイブリッド型での利用を検討するなどの対策が考えられます。硬直的に捉えず、それぞれの良さを発揮できる組み合わせを選択するのも手です。
異文化の同居
マイクロサービスは、機能ごとに分かれたサービスを連携させあって、1つのアプリとして動くことが特徴ですが、それぞれのサービスについてはOSやマシン、言語などの制約がないため、場合によっては1つのシステムに異文化が同居することになります。
それぞれの開発チームはプラットフォームが異なり、開発手法やドキュメントが異なるといったケースもあり得ます。これが極端になると、他民族国家と同様の弊害が表に出てきます。憲法・共通言語・ルールなどを取り決め、全員が共有できる環境を整えることが求められます。
マイクロサービスを学び、DX推進の一員に
マイクロサービスはDX推進の1つの手法として、政府が提唱しています。他にはクラウド技術・アジャイル開発・AIの活用などがありますが、いずれにしてもDX人材を目指すエンジニアには、マイクロサービスに関するスキルは欠かせません。
マイクロサービスでDX推進
なぜDX推進で「マイクロサービス」が着目されているのでしょうか?
マイクロサービスは顧客や利用者から見た機能ごとにシステムの機能を分割して、それぞれが連携してシステムの目的を果たしています。
例えば、皆さんが利用しているLINEアプリも、メッセージ機能以外に、タイムライン・ニュース・ウォレットなどの機能ごとに分かれて作られています。
仮にニュース機能で障害が起きても、メッセージ機能への影響は基本的にありません。非常にフレキシブルな構造になっています。また、機能の追加や改廃も比較的容易です。
つまり、マイクロサービスはDXの推進を阻害する要因となっている硬直的、ブラックボックス化したモノリシックの弊害や弱点を克服し、次世代のITへと進化・成長する可能性を秘めている技術であり、DX推進の切り札的存在となっているのです。
AWSでマイクロサービスに強くなる
マイクロサービスは確率された技術ではありませんし、まだまだ手探りの部分もあります。エンジニアの皆さんは待っていても、なかなかその技術を身に付けることは難しいでしょう。
そこで、マイクロサービスの先駆者ともいうべきAWSを皆さん自身が利用してみることで、マイクロサービスに強いエンジニアを目指す方法が考えられます。以下に、AWSが公表しているマイクロサービスに関する参考資料を紹介しておきます。
他、AWSのマイクロサービスに関連する認定資格として、
■「AWS 認定 ソリューションアーキテクト – アソシエイト」がありますので、ぜひ資格取得にチャレンジしてみてください。
エンジニアの皆さんがマイクロサービスに強いDX人材として益々活躍されることを祈念しています。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから