ビジネスサイドのための IT 用語集/システム構成

マイクロサービスとは

まいくろさーびす / Microservices / マイクロサービスアーキテクチャ

1つのシステムを機能ごとに独立して開発・リリースできる小さなサービスの集まりとして構築する設計の考え方です。多くの会社ではまだ不要で、まず1つのシステムで構築するほうがよいです。

マイクロサービス

マイクロサービスとは

1つのシステムを受注、在庫、決済といった業務の単位で小さなサービスに分け、それぞれを独立して開発・リリースできるようにする設計の考え方です。サービス同士はネットワーク越しにAPI(Application Programming Interface)による呼び出しや、メッセージによる通知で連携します。対になるのはすべての機能を1つのシステムとしてまとめて構築する形で、モノリスと呼びます。

たとえるなら1つの大きな店舗を、テナントごとに鍵と営業時間を持つショッピングモールに作り替えるようなものです。各テナントは他の店を閉めずに改装できますが、モール全体の管理の手間は増えます。

なぜ必要か

システムが大規模になり、関わる開発者が増えると、1つのシステムを全員で変更することになります。ある機能の小さな修正でも他チームの変更と一緒にテストし、まとめてリリースしなければなりません。リリース日の調整やテスト待ちが増え、開発者を増やしても開発の速度が向上しなくなります。

マイクロサービスはこの状態を解消する考え方で、業務の単位でシステムを分割し、分割したサービスごとに担当チームを決めます。これにより各チームは他チームの作業の完了とは関係なくリリースできます。

システムの分け方はチームの分け方と対応させる必要があります。チームが1つしかない会社では分ける理由がほとんどありません。

効果

  • チームごとに独立してリリースでき、リリースの頻度と速度を維持できる
  • 1つのサービスの障害が作りによっては全体の停止にならない
  • 負荷の高い機能だけを増強でき、インフラ費をかける対象を限定できる
  • サービス単位で技術を入れ替えられ、全体をまとめて作り直さずに済む
  • 担当範囲が明確になり、新規メンバーの把握すべき範囲が限定される

コストとリスク

  • 監視、ログ収集、リリース自動化の仕組みが必須になり、初期構築と継続的な運用に人と費用がかかる
  • 障害の原因がサービス間のどこにあるかを特定する調査が困難になる
  • 複数サービスにまたがる機能の変更は1つのシステムより調整が増える
  • サービスごとにデータを持つため、データの整合を取る設計が複雑になる。分析用にデータを収集する手間も増える
  • サーバーやネットワークの費用は多くの場合1つのシステムより増える
  • 複数のサービスにまたがる障害を調査して修正できる人材が必要で、採用と育成のコストがかかる
  • 分け方を誤ると影響が大きくなる
    • データベースの共有や呼び出しの連鎖のせいで、結局まとめてリリースしないと動作しなくなる。分散モノリスと呼ばれる状態で、運用の負担だけが増えた1つのシステムより悪い形になる
    • 後から分け方を変えるのが1つのシステム内の整理よりはるかに手間がかかる

よくある誤解

マイクロサービスにすれば開発が速くなる

開発チームが2つまでの規模ではサービス間の連携や運用の手間が増えるぶん、むしろ遅くなることが多いです。

大量のアクセスを処理するにはマイクロサービスが必要

アクセス量への対応は1つのシステムのままでもサーバーを増やすことで多くの場合まかなえます。大規模なサービスでも1つのシステムのまま運用を続けている例はあります。EC(Electronic Commerce)プラットフォームのShopifyはマイクロサービスへ移行せず、1つのコードベースの中を業務単位で区切る構成を選択しました。その経緯を2019年に公表した記事で説明しています。

細かく分けるほど良い設計になる

サービスの数が増えるほど連携と運用の負担も増えます。サービスの数はチームの数に合わせて決定するもので、細かさそのものに価値はありません。どのサービスにも責任を持つチームが1つ決まっていることが前提になります。担当の決まらないサービスが出る分け方は、管理しきれないシステムの典型的な形です。

マイクロサービスは最新の考え方なので新規開発では採用すべき

新規開発はまず1つのシステムとして作り、規模が拡大してから分割する進め方が広く推奨されています。最初から分けるべきという反論もあります。事業の初期は業務の区切り自体が変化しやすく、早期に分割すると分け方の引き直しに多くの工数がかかります。新規開発はまず1つのシステムで構築するほうが安全です。

判断の問い

うちもマイクロサービスにすべきか?

多くの会社ではまだ不要です。確認すべきはチーム数と、リリースのたびに他チームの変更待ちが発生しているかどうかです。人数は補助的な目安にとどめます。

目安として開発チームが2つまでなら1つのシステムの中を機能ごとに区切って作るほうが短期間かつ安価に進むことが多いです。チームが3つ以上に増え、毎回のリリースでチーム間の調整待ちが発生しているなら検討の余地があります。1チームを5〜8人とすると開発者数では20人前後が境目の目安になります。開発を外部に委託している場合は、担当が何チームに分かれているか、1回のリリースで何チームの作業を待つかを開発会社に確認すれば同じ基準で判定できます。

もう1つの前提は運用の仕組みがすでに整っていることです。判定の条件は2つあります。1つはリリースを手作業の手順書に頼らず毎週何度も実施できていることです。もう1つは障害が発生したとき利用者より先に担当者が気づけることです。満たさないうちに分割すると得られる効果より先に運用の負担が増えます。

開発会社からマイクロサービスでの構築を提案された。妥当かどうか、どう見極めればよいか?

なぜ分けるのかをチーム体制と変更の頻度で説明できるかを確認します。説明が「将来の拡張性のため」「最新の構成だから」だけなら、過剰な設計の可能性が高いです。

あわせて次の4点を質問すると見極めやすくなります。サービスはいくつに分ける想定で、それぞれをどのチームが担当しますか。各サービスは他のサービスのリリースと関係なく単独でリリースでき、データベースを他のサービスと共有していませんか。リリース後の監視と障害対応を誰がどの体制で行いますか。運用費は1つのシステムで構築する場合と比較して何がいくら増えますか。

サービス数は1チームが担当するのは目安として数個までという点からチーム数に見合っているかを確認します。運用費は監視やログ収集の基盤の月額と、運用担当が何人増えるかの内訳で示してもらいます。内訳を提示できない提案は運用まで見積もっていない可能性があります。

新規事業や立ち上げ期のシステムで数十のサービスに分ける提案なら再検討したほうがよいです。まず1つのシステムの中を業務単位で区切って作る順序なら無理がありません。チームが増えて調整待ちが発生した時点でその区切りに沿って外に切り出します。

古くなった既存システムを刷新するときマイクロサービスに作り直すべきか?

一度に全体を作り直すのは推奨しません。既存システムを稼働させたまま、変更が多く他と切り離しやすい機能から1つずつ外に切り出す進め方が安全になります。ストラングラーフィグパターンと呼ばれる進め方で、開発会社との会話でもこの名前で通じます。

既存システムでは業務の区切りがすでに明確なため、新規開発よりは分割の線を引きやすい面があります。それでも全面的な作り直しは目安として数年単位になりやすく、その間は新旧の二重運用になります。1つの機能を切り出すのにかかる期間の目安は数か月です。

切り出すたびに効果を測定し、効果が出なくなった時点で中止すればよいです。数個のサービスを切り出して残りは1つのシステムのまま、という着地も十分に合理的です。

公開日
2026.10.21
更新日
2026.10.21

お問合せ

事業の課題や技術的な悩みなどどんなことでもお聞かせください

お問合せ