インターネットの普及により、ビジネス環境が劇的に変化しました。急激な変化に伴い、システムの開発期間は短くなる傾向にあります。
そこでマイクロサービスというソフトウェア構造が、近年注目されています。マイクロサービスに関する歴史や事例をまとめ、その将来性について考えます。
マイクロサービスの定義と歴史
マイクロサービスの定義
マイクロサービスとはソフトウェア構造の名称です。個別に開発された小さなサービスを、API(Application Programming Interface)により組み合わせ、ひとつのサービスとして提供することを可能にしています。
APIとは、異なるソフトウェア間で機能共有を可能にするために、ソフトウェアの一部を公開したものを指します。
マイクロサービスの歴史
マイクロサービスのはじまりは2012年のアメリカ。ソフトウェアエンジニアであるジェームズ・ルイス氏により考案されました。
その2年後、別のソフトウェアエンジニアのマーティン・ファウラー氏が再びマイクロサービスを取り上げたことで、世界各国の開発者に認知されるようになりました。
従来のソフトウェア構造として「モノリシック(一枚岩)型」があります。しかし、これは軽微な仕様変更や機能追加であってもシステム全体へ影響を与えるため、システムの開発に時間が必要でした。そこでマイクロサービスとAPIを導入することにより、開発速度の飛躍的な上昇を達成したのです。
マイクロサービスのメリットとデメリット
マイクロサービスのメリットには、システム開発の高速化とメンテナンス性の向上があります。
マイクロサービスは複数の小さなサービスを組み合わせていることから、仕様変更の際にはシステム全体ではなくサービスごとに変更が可能です。
また、モノリシックでは障害が発生するたびにシステム全体のチェックが必要になるため、原因究明に時間がかかります。一方、マイクロサービスではサービスごとにチェックが可能です。
さらに、サービス単位で開発を進めることにより、開発効率を上げることができます。
しかし、先に紹介したファウラー氏は、マイクロサービスを早期に導入する必要はないと以下のように述べています。
「システムがそこまで複雑でないうちにマイクロサービスを導入すると、かえって生産性が落ちてしまいます。そのため、システムが複雑でない場合はモノリシックの方が適切です。しかし次第に複雑になってくると、ある段階で急激にモノリシックの生産性が悪くなります。そのため、システムがある程度の複雑さを持ち始めた時にマイクロサービスを導入するべきです。」(Martin Fowler, ”MicroservicePremium", MARTINFOWLER.COM, 2015-05-13)
マイクロサービスの事例紹介
インターネットの近年の進化により、商業構造に大きな変化が現れました。
日々起きている急激な変化に対応するためには、より早くサービスを開発する必要があります。そこで開発速度とメンテナンス性の優れたマイクロサービスに注目が集まっているのです。
ここでは、実際にマイクロサービスを導入して成功を収めた企業の事例を紹介します。
クックパッド(日本)
クックパッドのシステムは当初、巨大なコードベースを持つモノリシックでした。しかしビジネス環境の変化に対応するため、迅速なシステム開発が必要となったのです。そこで、マイクロサービスへの移行を開始。その結果、サービスごとにシステムを独立させ、チームごとのシステム開発を可能にしました。こうして、開発速度とメンテナンス性の向上に成功したのです。
ウォルマートカナダ
ウォルマートカナダでは2005年にオンラインショッピングシステムを導入。例年大きな売上げを達成できるブラックフライデー(感謝祭の翌日にあたる、11月の第4金曜日)での、さらなる売上高の更新を計画していました。導入の結果、1分間のアクセス数は6億PVとなりましたが、開発したシステムがアクセス数に耐えることができずシステムダウンを起こしました。それが原因で売上げを得られず、ホリデーシーズンに見込んでいた多額の売上げを2年連続で逃したのです。
その経験を踏まえ、ショッピングシステムの開発にマイクロサービスを導入しました。その結果、導入年のブラックフライデーにはシステムダウンは起こりませんでした。仮にサービスが部分的にダウンすることはあっても、全体としてダウンすることなく、安定した稼働と迅速な対応を可能にしたのです。こうして開発コストの削減と売上げを伸ばすことに成功しています。
Netflix(アメリカ)
Netflixもモノリシックからマイクロサービスへ移行して成功を収めました。もともとはDVDの宅配サービスを提供していましたが、ストリーミングメディアへと転換し、大手へと成長しました。その際にいくつかの根本的改革が必要だと考えられたのです。そのひとつがマイクロサービス移行による、アプリの小規模モジュラプロセスへの分割でした。改革には反対意見も多数ありましたが、企業文化の変革を進め、最終的に改革を成し遂げています。
その結果、先に述べたマイクロサービスの利点である開発の高速化とメンテナンス性の向上のほか、セキュリティの改善にも成功しています。
マイクロサービスの将来性
今回紹介した事例のほかにも、マイクロサービスの導入はLINEやAmazonなどのウェブ系の企業を中心に進んでいます。歴史はまだ浅いですが、既に世界中で普及がはじまっています。マイクロサービスはその仕様と実例を見ても、今後より導入が進むことが予想されます。今はウェブ系の企業が中心となっていますが、近い将来マイクロサービスの利用が当たり前となる日が来るでしょう。
参考:
- 「マイクロサービス」のメリットをざっくり言うと「変化に対応しやすい」こと──ただしファウラー氏は“使い過ぎ”を警告|さくらのナレッジ
- いまさら聞けない!APIとは何か?〜基礎の基礎を学ぼう〜|侍エンジニア塾ブログ
- マイクロサービスとは?注目されるマイクロサービス・アーキテクチャについて知っておきたいコレだけの事|DX LEADERS
- マイクロサービスとは何か? デジタル変革の時代を生き残るための、テクノロジー入門 |Customer Success
- MicroservicePremium|MARTINFOWLER.COM
- 数千のマイクロサービスで期間短縮、知られざるNetflixのシステム開発体制|日経xTECH ACTIVE