モノリスとマイクロサービス、どちらで始めますか

小さいチームや初期はモノリスで始め、中のモジュールの境界をきれいに保ち、要るようになった部分だけ切り出す、と答える問い。分ける運用の重さと、分けるべき条件まで話します。

答えてみる

面接官に「モノリスとマイクロサービス、どちらで始めますか」と聞かれたつもりで、答えを見る前に自分の言葉で答えます。

声に出して答えた人は「書かずに答えを見る」で開けます。

解説を読む

聞かれ方から関連するコースまで、この問いの解説を全部ここに置いています。

こう聞かれます

  • 「モノリスとマイクロサービス、どちらで始めますか」
  • 「新しいサービスを 3 人で作ります。最初から機能ごとにサービスを分けますか」
  • 「今のモノリスが大きくなってきました。どこから分けますか」

面接官が見ている点

  • 流行りの作りを選ぶのではなく、チームの大きさとビジネスの段階に合わせて選べるか
  • 分けると何が重くなるか (運用、通信の失敗、データの食い違い) を知っているか
  • 1 つにまとめても、中の境界は保つ、という考えを持っているか
  • 分ける判断の条件を、自分の言葉で言えるか

短い答え

  • 小さいチームで始めるときは、1 つのアプリにまとめたモノリスで始めます。
  • サービスを分けると、配備、監視、サービス間の通信の失敗への手当てなど、運用の手間が大きく増えるからです。
  • そのかわり、中のモジュールの境界をきれいに保っておき、要るようになった部分だけを切り出します。

少し詳しい答え

言葉の整理

  • モノリス 1 つのアプリに全部の機能が入っていて、まとめて配備する作り
  • マイクロサービス機能ごとに小さなサービスに分け、それぞれ別に配備し、ネットワーク越しに呼び合う作り

初期にモノリスを選ぶ理由

初期のサービスは、何が当たるか分からず、作りを頻繁に変えます。モノリスなら、関数を呼ぶだけで機能どうしがつながり、1 つのデータベースのトランザクションで正しさを守れます。マイクロサービスにすると、サービスの数だけ配備と監視が要り、通信が途中で失敗したときの手当てや、データベースが分かれたときの食い違いへの手当ても要ります。少人数では、その手間が機能を作る時間を食います。

境界をきれいに保つ

モノリスでも、中を機能ごとのモジュールに分け、ほかのモジュールの表を直接読まない、決まった入り口だけを呼ぶ、と決めておきます。境界が保たれていれば、あとで 1 つを切り出すのは、呼び方をネットワーク越しに変える作業で済みます。

分けるのはどんなとき

  • 一部の機能だけ負荷がとても大きく、別に台数を増やしたい
  • チームが増え、同じコードを触る人が多すぎて、配備の待ちが詰まっている
  • 一部だけ別の言語や仕組みが要る (重い計算、別の更新の速さ)

トレードオフ

モノリスは、大きくなると配備 1 回の影響範囲が広がり、一部の不具合が全体を止めることがあります。テストや配備にかかる時間も延びます。最初から複数のチームが別々に動く大きな組織や、機能ごとに求められる速さや安全さが大きく違う場合は、最初からある程度分ける判断もあります。

よくある間違い

  • 大きな会社がやっているから、と最初から分ける少人数では運用の手間が勝ち、作る速さが落ちます
  • モノリスの中をぐちゃぐちゃにする境界が無いと、あとで切り出せなくなります
  • 分けたのにデータベースを共有する 結局どれか 1 つを変えると全部に響き、分けた意味が薄れます

深掘りの問い

  • 「切り出す最初の 1 つは、どう選びますか」負荷や変更の頻度がほかと違い、ほかとのつながりが少ない所から、と答えます
  • 「サービスどうしの通信が失敗したら」時間切れと再試行を決め、同じ要求が 2 回来ても結果が変わらないようにする、と答えます
  • 「サービスをまたぐ更新の正しさは」 1 つのトランザクションにできないので、順に処理して失敗したら取り消す流れを作る、と答えます

確認日 2026年10月24日

技術面接問題の一覧へ戻る