• このエントリーをはてなブックマークに追加

事例つき!マイクロサービスとは?基礎知識からメリットとデメリットまでを解説

マイクロサービスは複数の小さなサービスをAPIによって連携させるアーキテクチャのことです。
単位ごとの修正や変更が容易でスピーディな運用がメリットで、AmazonやLINE、グノシーなどの大企業が導入していることで注目が集まっています。

今回はマイクロサービスの基礎知識や、メリット・デメリットを解説、事例までご紹介いたします。

【目次】

マイクロサービスとは?

マイクロサービスは、小さなサービス単位を互いに連携させるアーキテクチャです
この記事では、サービスをどのように分割しているか、メリット、デメリットなどをご紹介します。すでにマイクロサービスを導入している企業についても、事例を掲載しています。

マイクロサービスアーキテクチャとは

マイクロサービス(Microservices)は、個々に開発された複数の小さな(マイクロ)サービスを連携させて管理、運営をおこなっていくソフトウェアのアーキテクチャです。。
ソフトウェアのエンジニアであるマーチン・ファウラー氏らによって書かれた2014年の記事に登場して以来、一種のバズワードとして知られるようになりました。

・Microservices - James Lewis, Martin Fowler
https://martinfowler.com/articles/microservices.html

マイクロサービスは、小さなサービス単位をHTTP経由のAPIといった軽量な通信で連携することによって、従来ネックとされていた処理速度の向上を実現しています。

マイクロサービスの設計手法

マイクロサービスは、1サービスを1プロセスとして稼働させる仕組みをとっています。
サービス同士はAPIによって最小限の連携をもつのみで、基本的にはそれぞれ独立しています。そのため、設計にあたってはそれぞれのサービスに特化した手法をとることができます。
また、障害が起きた時は1つのサービスごとに影響をチェック可能です。

マイクロサービス関連知識「API」

マイクロサービスを理解する上で知っておきたい知識に、まず「API」があります。
API(Application Programming Interface)は、プログラムとプログラムの呼出仕様のことです。

REST API

クラウド環境上のマイクロサービスに適したものとして知られるのが「REST API」で、そのシンプルさから多くの場面で用いられています。
サービス同士が物理的に離れた場所にあっても、それらを連携させて大きなサービスとして運用することができるなど、実用的な特徴があります。

認証情報を保持するGateway(ゲートウェイ)

APIのひとつにAPI Gatewayというものがあります。
これは、マイクロサービスの特定のグループに対して単一のエントリポイントを提供するというサービスです。BFF(backend for frontend)と呼ばれる場合もあります。
つまり、ニーズを考えながらビルドするためにクライアントアプリとマイクロサービスの間を取り持つ役割を果たしています。

  • 認証
  • SSL終了
  • キャッシュ

などの機能を提供することも可能です。

マイクロサービス関連知識「コンテナ」

仮想化技術の一つであり、プロセスの区画整備をするのがコンテナです。

マイクロサービスの基盤技術「コンテナ」

クラウド環境で稼働するマイクロサービスの基盤的な技術として主流になりつつあるのが「コンテナ」です。
コンテナは、仮想化技術の一つで、OS上にそれぞれのアプリケーションの専用区画を作成します。プロセスごとにコンテナが用意され、プロセス間の連携をAPIでおこなっていくイメージです。コンテナ単位での入れ替えができるので、機能変更もスピーディにおこなえるというメリットがあります。

コンテナの主流「Docker」

現在コンテナの技術で主流となっているのは、Linux由来であるDocker(ドッカー)です。
Dockerは、2013年にオープンソースのプロジェクトとして公開されました。導入や運用の手軽さや豊富なプレビルドイメージの提供により、さまざまなシーンで普及しています。

Dockerコンテナの運用ツール「Kubernetes」

Kubernetes(クーベルネティス)は、複数台のホストによって構成される実行環境を1台のように取り扱うことができるDockerコンテナの運用ツールの一つです。
クラスタのどこにコンテナを配置するかをスケジューリングしてくれる上、CPUやメモリの足りない場合もノード(再配布ポイント)を増やすだけで拡張することができます。
Dockerは、ホストの外とのやりとりや連携が煩雑になるという課題がありました。「Kubernetes」は、それを解決するためのツールといえます。

マイクロサービス関連知識「トランザクション」

トランザクションは、システムにおける永続的なデータへの不可分処理のことです。
マイクロサービスのデータベースにおいて課題となるのがトランザクションで、複数のデータベースにまたがる分散トランザクションなどは、管理が困難になる問題点の一つとしてよく知られています。
全体を一つのシステム構造とするモノリシックアーキテクチャでは容易ですが、細分化された個々が連携しているマイクロサービスにおいては、共有や結合といった関係性が弱いため、こうした課題がうまれます。
もっともこの課題は、一連の処理を1つのワークフローとして再実装することで解決できます。

マイクロサービス関連知識「フレームワーク」

マイクロサービスフレームワークは、マイクロサービスの開発に使うことができるフレームワークです。アーキテクチャを支える文字通り「骨組み」、「枠組み」であり、各言語に存在します。

マイクロサービスフレームワーク「Lumen」

PHPのマイクロフレームワークが「Lumen」です。
Laravelがベースとなっているため、Laravelにコードをコンバート可能です。

画像出典:Lumen
https://lumen.laravel.com/

マイクロサービスフレームワーク「Slim」

「Slim」もPHPのマイクロサービスフレームワークです。
アプリケーションやAPIを描きやすいシンプルなフレームワークとして定評があります。

画像出典:Slim
https://www.slimframework.com/

マイクロサービスフレームワーク「Lagom

Javaのマイクロサービスフレームワーク「Lagom」は、「マイクロ(小さな)」という言葉にこだわらず「適切なサイズ」のサービス作成を念頭においています。
ネーミングはスウェーデン語で「十分な」を意味しています。

画像出典:Lagom
https://www.lightbend.com/lagom-framework

マイクロサービスフレームワーク「Bottle」

「Bottle」は、Pythonのフレームワークです。単一ファイルモジュールとして配布されました。
シンプルで軽いことを特徴としています。

画像出典:Bottle
http://bottlepy.org/docs/dev/index.html

マイクロサービスフレームワーク「Pyramid」

Pythonのマイクロサービスフレームワーク「Pyramid」は、「小さく、早く、堅実」がキャッチフレーズ。簡単なセットアップが可能なので、サンプルスクリプトの確認も容易です。

画像出典:Pyramid
https://docs.pylonsproject.org/projects/pyramid/en/latest/

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

モノリシックアーキテクチャと大きく異なるマイクロサービス。
そのメリットとデメリットはどのようなものなのでしょうか。

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

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

  • リソースを有効活用できる
  • 局所化によって障害や影響の与えるリスクを抑えられる
  • 新技術の採用が容易である
  • 新規機能の追加、高頻度の軽微な変更が容易
  • 更改が容易

という点が挙げられます。
1プロセスで1サービスというマイクロサービスの特性は、サービス同士の依存関係が薄く、特異性、独自性を一定程度保持することができます。
そのため、障害が起きても局所にとどめて影響を少なくすることができ、なおかつ新たな技術を取り入れたい場合、一部分の変更をしたい場合も身軽に動けます。

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

マイクロサービスのデメリットには、

  • サービスを的確に分割して設計するのが難しい
  • 一貫性に欠けるため、運用業務の負担が増加する

という点が挙げられます。
そもそもサービスをどのように分割するべきかという問題については、慎重に検討がなされるべきです。自社だけでの検討が不安ということであれば、外部のコンサルタントに相談するなどして、全体の細分化および設計について熟慮することをオススメします。
2つめの運用業務については、1つのシステムを個々のサービスに分けるというマイクロサービスは、サービスごとの管理業務が必要になるということです。統合的に管理するシステムづくりによって、新たにコストが発生する可能性もあります。

マイクロサービスの事例5選

では、ここで企業の導入例をみてみましょう。

マイクロサービス事例1. クックパッド

クックパッドは当初の「レシピ投稿・検索」から事業領域を広げ、「直を中心とした生活のインフラ」としてさまざまなサービスを提供しています。
これにともなってクックパッドはソフトウェアアーキテクチャを見直し、拡大した事業を運営しやすいかたちに転換をはかりました。
モノリシックアーキテクチャからマイクロサービスへの転換によって、独立性の高い個々のチームがスピーディに「価値」を創出し、ユーザーへ届けることによって成長を遂げています。

画像出典:クックパッド株式会社「cookpad」
https://cookpad.com/

マイクロサービス事例2. Amazon

巨大化したモノリシックアーキテクチャに限界を感じたAmazonは、早いうちからHTTPSのAPIのみで連携させるシステム作りに大きく舵を切っています。
Amazonには開発当時「Two-pizza teams」、2枚のピザで満腹にならないような規模のチームは作るな、というルールがうまれたといわれています。

画像出典:Amazon
https://www.amazon.co.jp/

マイクロサービス事例3. LINE

LINEは、Twitter社が開発したオープンソース「Zipkin(分散トレーシングシステム)」を活用して、リクエスト単位でAPIのコールパスを可視化して分析。マイクロサービス導入時のリスクとして考えられる、パフォーマンスの低下に対して対策しています。

画像出典:LINE株式会社「LINE」
https://linecorp.com/ja/

マイクロサービス事例4. Netflix

AWSの先進ユーザーとしても知られる米国のストリーミング配信事業会社Netflix(ネットフリックス)は、数千のマイクロサービスから構成されたシステムを開発することで、機能変更の期間を大幅に短縮することに成功しています。エラー発生時に全体に影響が及ばないようにすることで、ユーザーの信頼を損なわないシステム運営が可能になっています。

画像出典:Netflix
https://media.netflix.com/ja/about-netflix

マイクロサービス事例5. Gunosy

グノシーは、iOSアプリでのニュース配信時に急激な負荷がかかりすぎ、APIの応答が遅くなったという経緯から、マイクロサービス指向の開発へ切り替えています。
小さな単位は、使わなくなったAPIはメンテナンスをせずに削除できる点でも利便性が高いとしています。

画像出典:株式会社Gunosy(グノシー)
https://gunosy.co.jp/

まとめ

マイクロサービスは、小回りの効いた設計によって日々スピードを増すデジタルテクノロジーに対応しています。
とはいえ、どのようにサービスを分割するかについては専門的な知識やノウハウが不可欠です。そもそも自社のシステムをモノリシックアーキテクチャからマイクロサービスへ転換する必要があるかなどは、外部への相談も含め、慎重な検討が必要といえるでしょう。

PR:ECサイト構築パッケージ「EC-ORANGE」ではお客様にECサイト開発のノウハウをお伝えしています

関連記事

エスキュービズムニュースレター!
記事に関連するサービス
  • EC-ORANGE
Orange EC 導入事例
エスキュービズムのオウンドメディア構築/運用
体験させて購買に結びつける「売れる」デジタルプロモーション x Commerce(クロスコマース)
MA・DMPツール 導入/運用支援
貴社のオムニチャネル化は完了していますか?その答えをエスキュービズムが持っています。激動の小売業界で生き抜くための真のオムニチャネル化を実現します。
TIG commerce(ティグコマース):触れる動画でリテール業界の次世代デジタルマーケを実現
EC用語集
お役立ち資料ダウンロード

アーカイブ

ページ上部へ戻る