業務システムリアーキテクチャとは?|考え方/特徴/仕組み/目的を解説

業務システムリアーキテクチャとは、外部から見える機能や画面をむやみに変えず、モノリス化した内部構造をドメイン単位・サービス単位に組み替える技術的な再設計です。

長年運用してきた基幹システムでは、一つの機能を直しただけで想定外の箇所に不具合が波及し、変更に時間がかかりがちです。

  • 分割:モノリスとマイクロサービスの責務の切り分け
  • 設計:ドメイン、API、イベントの境界
  • 判断:目的とトレードオフの比較

この取り組みの全体像は、下の完全ガイドにまとめています。

▼全体ガイドの記事
・業務システムリアーキテクチャの完全ガイド

業務システムリアーキテクチャの位置づけ

業務システムリアーキテクチャの位置づけを整理するアーキテクト

「システムを作り替える」と一口に言っても、何を起点にするかによって取り組みの中身は大きく異なります。

業務システムリアーキテクチャは、その中でも「アーキテクチャそのものの構造」を起点にした技術専門の取り組みです。経営判断や契約更新のタイミングとは別の観点で語られる言葉です。

モダナイゼーションのなかでリファクタリング・リビルドを掘り下げた位置づけ

業務システムのモダナイゼーションは、リホストからリプレースまで、複数の手法を並列に扱う総論です。業務システムリアーキテクチャは、このうちリファクタリングとリビルドをさらに掘り下げ、モノリスからマイクロサービスへの分解やドメイン駆動設計など、構造の設計に絞って扱う技術専門の領域です。

インフラをそのまま移すリホストや、稼働環境だけを変えるリプラットフォームとは異なり、アプリケーションの内部構造そのものに手を入れる点が特徴です。そのため検討の中心は、部門長や経営層よりも技術部門・アーキテクト・エンジニアになります。

予算の確保や現場の合意形成が主眼になる進め方とは違い、境界設計や通信方式といった技術的な意思決定が成否を左右します。

刷新・更改・リニューアルとの、起点となる問題意識の違い

業務システム刷新は、部門長の予算確保や稟議、現場の合意形成といった経営判断が起点です。また、業務システム更改は、保守契約の満了やサポート終了(EOS・EOL)という外圧から始まります。業務システムリニューアルは、現場の操作体験や画面デザインといったUI・UXに関わる問題から始まります。

これに対して業務システムリアーキテクチャは、密結合になったモノリス構造そのもの、いわゆる技術的負債が起点です。画面の見た目には言及せず、画面の裏側にある構造の疎結合化やAPI化に特化します。

実務では、これらが互いに重なって進むことも少なくありません。たとえば、刷新プロジェクトの一環として技術タスクに組み込まれたり、更改の時期に構造の見直しを合わせて行われたりします。ただし、意思決定の起点と評価の観点が異なるため、プロジェクトの目的をどちらに置くかを最初に明確にしておくと、途中で議論が噛み合わなくなる事態を避けやすくなります。

モノリスとマイクロサービスの構造的な違い

モノリスとマイクロサービスの構造の違いを比較する図

リアーキテクチャの議論でまず押さえたいのは、現状のモノリスがどのような構造で、目指す先のマイクロサービスとどこが違うのかという点です。

どちらが適しているかは、規模やチーム体制によって変わります。

モノリスの利点と、規模拡大で生じる密結合の弊害

モノリスは、業務ロジック、データアクセス、画面表示までを一つのアプリケーションとしてまとめて開発・デプロイする構造です。立ち上げ当初は一つのコードベースで完結するため開発しやすく、デプロイの手順もシンプルという利点があります。その立ち上げやすさが理由で、多くの基幹システムは最初にモノリスとして構築されます。

ただし、機能追加が積み重なり、モジュール間の依存関係が整理されないまま拡大すると、一部分の修正が別の機能へ予期せぬ影響を与えるようになります。さらに、デプロイのたびにシステム全体をテストし直す必要が生じ、機能ごとに異なるチームが並行して開発しようとしても、コードの競合や結合テストの待ち時間がボトルネックになります。

この状態こそ、いわゆる技術的負債としてリアーキテクチャの検討対象になる典型例です。

サービス単位で独立した開発・デプロイと、増えることで生じる複雑さ

マイクロサービスは、業務ドメインごとにアプリケーションを分割し、それぞれが独自のデータベースを持ち、API経由で連携する構造です。サービスごとに開発・テスト・デプロイのサイクルを独立させられるため、チームが並行して機能を追加しても、コードの競合が起きにくくなります。

特定の機能だけを個別にスケールさせ、アクセスが集中する部分にだけリソースを増やすといった柔軟な運用も可能になります。一方で、サービスが増えるほど、サービス間の通信、データの整合性、障害発生時の影響範囲の特定は複雑になります。

単純にモジュールを切り出すだけでは、メリットは得られません。そのため、後述するドメイン駆動設計による境界の設計と、通信・整合性を支える仕組みをあわせて用意する必要があります。マイクロサービス化は、「技術を導入すること」自体が目的ではなく、境界設計とセットで初めて機能する取り組みです。

ポイント

モノリスで、変更のたびに影響範囲の確認が増えているなら、分割を検討する理由があります。ただし、マイクロサービスは境界設計とセットでなければ効果が出ません。

ドメイン駆動設計とBounded Contextによる境界設計

ドメイン駆動設計でBounded Contextを検討するワークショップ

マイクロサービス化の成否を分けるのは、技術選定そのものよりも「どこで業務を区切るか」という境界設計です。

ドメイン駆動設計(DDD)は、この境界を業務の言葉から導き出す考え方で、リアーキテクチャの初期工程で中心的な役割を果たします。

EventStormingによるユビキタス言語と業務境界の洗い出し

境界設計の代表的な進め方がEventStormingです。ドメイン専門家、業務担当者、エンジニアが一堂に会し、業務上で起きる出来事を時系列で洗い出しながら、部門や画面の区切りではなく、業務としてまとまりのある単位(Bounded Context)を特定していきます。

このワークショップを通じて、部署ごとに異なる呼び方をしていた同じ概念を一つの言葉(ユビキタス言語)に統一します。そのため、以降の設計・実装でも共通の語彙として使えるようになります。

AIによるコード解析を組み合わせ、既存のモノリスのどのモジュールがどの業務概念に対応しているかを機械的に洗い出す方法も広がっています。さらに、人手による業務ヒアリングだけに頼らず、コードの依存関係を一覧にすることで、技術的負債が集中している箇所を早く特定できます。

分散型モノリスに陥るリスク

境界の切り方を誤ると、見た目はサービスごとに分かれていても、実際にはサービス間が密結合のままという「分散型モノリス」に陥ります。この状態では、一つのサービスを変更するたびに関連サービスも同時に修正・リリースが必要になり、モノリスのときより調整のコストがかえって増えかねません。

この状態を避けるには、業務上の変更頻度や責任範囲が近いものを一つの境界にまとめます。そのうえで、境界をまたぐやり取りは、必要最小限のAPIやイベントに絞り込む設計判断が欠かせません。

境界設計は一度決めて終わりとは限らず、実装を進める中で見直しが必要になることも珍しくありません。そのため、最初の数か月は境界の妥当性を検証する期間として位置づけておくのが現実的です。

ポイント

境界設計は、技術選定より先に、どこで業務を区切るかを決める工程です。業務の言葉をそろえ、区切りを検証してから分割を進めると、分散型モノリスになるのを防げます。

API-first設計とイベント駆動アーキテクチャの仕組み

API-first設計とイベント駆動アーキテクチャの構成図

境界を切り分けたら、次はサービス同士をどう連携させるかを決めます。業務システムリアーキテクチャでは、同期的なAPI連携と非同期的なイベント連携を組み合わせることが一般的です。

APIを先に定義して並行開発する進め方

API-first設計は、実装に着手する前にOpenAPIなどの仕様でAPIの入出力を確定させる進め方です。仕様さえ固まれば、フロントエンド側は、実装が完了していないバックエンドに対しても、仕様から生成したモックサーバーを使って並行して開発を進められます。

API-firstは、単に「仕様書を先に書く」という作業手順ではありません。サービス間の契約を明文化することで、あるサービスの内部実装を変更しても、契約を守っている限り他のサービスには影響しないという独立性が担保されます。

コンシューマ駆動契約テストを組み合わせておくと、後からバックエンドの実装内容が変わった際に、API利用側への影響を自動テストで早期に検知できます。この独立性こそが、マイクロサービス化によって開発速度を高められる根拠になります。

Kafka・RabbitMQとSagaパターンによる分散トランザクションの扱い

マイクロサービスでは「サービスごとに専用のデータベースを持つ」構成が基本になるため、複数サービスにまたがる一連の処理を一つのデータベーストランザクションでまとめて確定させることができません。

この課題に対応するのがSagaパターンです。一連の処理を複数のローカルトランザクションに分割し、途中で失敗した場合は、それまでに実行した処理を打ち消す補償トランザクションを順番に実行して整合性を保ちます。Sagaパターンの実装には、Kafkaのようなイベントストリーミング基盤や、RabbitMQのようなメッセージキューを使うのが一般的です。

即時性が求められる業務では、イベントを都度発行するPush型の構成が向きます。一方、多少の遅延が許容される業務では、一定間隔で状態を照合するPull型の構成の方がシンプルに実装できる場合があります。どちらの方式でも、イベントの取りこぼしに備えたリトライ機構や、処理できなかったメッセージを退避させるデッドレターキューの設計が欠かせません。

ポイント

連携方式は、即時性が求められるか、多少の遅延を許容できるかで選ぶのが基本です。API仕様を先に確定させれば、フロントとバックエンドを並行して進められます。

クラウドネイティブパターンと段階的な移行の仕組み

ストラングラーフィグパターンによる段階的な移行のイメージ

境界設計と通信方式が決まっても、実行基盤と移行の進め方が伴わなければ、リアーキテクチャは前に進みません。

マイクロサービスを支えるクラウドネイティブパターンと、既存システムを止めずに移行する代表的な進め方を取り上げます。

サービスメッシュとKubernetesによる実行基盤

サービス数が増えると、通信の暗号化、リトライ、負荷分散、可観測性といった横断的な関心事を、各サービスの実装に個別に組み込むのは非効率になります。サービスメッシュは、こうした通信まわりの機能をサイドカーというかたちでアプリケーションから切り離し、共通の仕組みとして提供する技術です。

あわせて、コンテナ化したサービス群のデプロイ・スケーリング・自己修復を担うKubernetesが、実行基盤の標準として使われることが多くなっています。ただし、サービスメッシュやコンテナオーケストレーションの導入自体が、新たな運用対象になる点には注意が必要です。

さらに、分散トレーシングやログ集約の基盤もあわせて整備しなければ、障害が起きたときに原因のサービスを特定するまで時間がかかります。その結果、マイクロサービス化で得たいはずの俊敏性がかえって損なわれかねません。

段階移行と、ビッグバン方式との違い

リアーキテクチャの移行方式として広く使われるのが、既存のモノリスを稼働させたまま、周囲に新しいマイクロサービスを構築し、トラフィックを少しずつ新サービスへ切り替えていくストラングラーフィグパターンです。名前の由来になった植物のように、新しい構造が既存の構造を覆っていく様子から名付けられています。

APIゲートウェイでリクエストの振り分けを制御し、問題があれば旧来のコードへすぐに切り戻せる状態を保ちながら進める点が特徴です。この方式では、まず重要度の高い一つの業務ドメインを対象に、抽出から本番稼働までを通しで経験することが優先されます。

カナリアリリースやフィーチャートグルを使って一部の利用者だけに新サービスを公開し、問題がないことを確認しながら対象範囲を広げていく進め方が現実的です。一方、全体をまとめて切り替えるビッグバン方式は、失敗した際の影響範囲が大きく、業務システムのように止められない基幹処理では避けるべき進め方とされています。

導入目的と得られるメリット・トレードオフ

リアーキテクチャの目的とトレードオフを検討する会議

業務システムリアーキテクチャの目的は、変更に強い構造を手に入れることにあります。見た目や機能を変えること自体が目的ではありません。

業務システムリアーキテクチャの効果は無条件には得られず、相応の代償を伴う判断であることも理解しておく必要があります。

技術的負債の解消と変更スピードの回復

密結合のモノリスでは、一つの機能追加のために関係しそうな箇所を広く調査し、影響範囲を確認してからでないと安心してリリースできません。一方、境界が整理されたマイクロサービスであれば、担当チームは自分たちのサービスの範囲内で変更を完結させやすくなります。他チームの作業を待つ時間や、全体テストにかかる時間も減らせます。

特定の機能だけを個別にスケールできることも、アクセス集中への対応力を高める要素になります。ただし、こうした効果は境界設計の精度と組織体制が伴って初めて現れるものであり、サービスを分割しただけでは自動的には得られません。

関係者間では、目的がマイクロサービス化そのものではなく、変更のたびの確認・調整コストを構造面から下げることだという前提を共有しておくことが大切です。

運用オーバーヘッドの増加という代償

サービスの数が増えれば、監視対象、ログの出力元、デプロイパイプラインも同じ数だけ増えます。さらに、サービスメッシュやイベント基盤といった新しい仕組みを維持する運用負荷、分散システムに精通したアーキテクトやSRE人材の確保といった課題も同時に発生します。

Amazonは、動画配信サービスの運用チームが、過度に分散させた構成をあえてモジュラーモノリスへ統合し直し、インフラコストを大幅に削減した事例を公表しています。こうした事例もあり、分散させること自体を目的化する危うさが業界でも指摘されています。

短期的には、サービスごとのインフラ費用が積み上がりやすく、投資対効果がすぐには表れにくい期間が続くことも珍しくありません。だからこそ、次の見出しで確認する組織規模や体制の目安をあらかじめ踏まえたうえで、どこまで分割するかを決めることが欠かせません。

ポイント

導入の目的は、マイクロサービス化そのものではなく、変更に強い構造を手に入れることに置きます。効果と引き換えに増える運用の負担も含めて判断します。

業務システムリアーキテクチャ導入前に確認しておきたいポイント

リアーキテクチャ導入前に確認しておきたいポイントを整理する担当者

マイクロサービス化を伴うリアーキテクチャは、すべての企業・すべてのシステムに一律に向いているわけではありません。

着手前に、組織規模やトラフィック量、体制面から自社の位置を確認しておくと、過剰投資や中途半端な分散を防げます。

組織規模とリクエスト量の目安

マイクロサービス化の運用を支えるには、相応の開発体制が必要になります。目安として、開発エンジニアの人数が少なく、システムへのアクセス量もそれほど多くない段階では、分散システムを運用する負担の方がメリットを上回りやすいとされています。

反対に、開発組織の規模が大きく、日々のリクエスト量も膨大になった段階でようやく、マイクロサービス化によるメリットが運用コストを上回ります。そのため、自社の開発チーム規模とシステムへのアクセス量を、この目安と照らし合わせて確認しておくことが最初の一歩です。

モジュラーモノリスという中間の選択肢

一つのアプリケーションの中でモジュール間の境界だけを明確に整理する「モジュラーモノリス」は、マイクロサービスとモノリスの中間にある現実的な選択肢です。デプロイやインフラは一つにまとめたまま、コード上の依存関係だけをドメインごとに整理しておけば、将来サービスとして切り出す際の見通しが立ちます。

特に、組織や体制がまだ十分に整っていない段階では、いきなりマイクロサービスへ踏み切るのではなく、まずモジュラーモノリスとして構造を整理するところから始める進め方も検討に値します。

SRE・プラットフォームエンジニアの体制の確保

分散システムの障害モードを理解し、Kubernetesのオーケストレーションやサービスメッシュを日常的に運用できるSREやプラットフォームエンジニアは、社内に十分な人数がいないことも珍しくありません。こうした人材を採用・育成する見込みが立たないまま移行を進めると、せっかく構築した基盤を使いこなせず、かえって障害対応が長期化する恐れがあります。

具体的な進め方や評価の観点は、業務システムリアーキテクチャの選定ポイント・選び方・種類で整理しています。着手前の判断材料として、あわせてご確認ください。

ポイント

開発体制とリクエスト量が目安に届くか、SREやプラットフォームエンジニアを確保できるかを見て決めます。届かない段階では、モジュラーモノリスも候補になります。

まとめ

業務システムリアーキテクチャの要点をまとめるアーキテクト

業務システムリアーキテクチャは、モダナイゼーションの中でもリファクタリング・リビルドをさらに掘り下げ、モノリスからマイクロサービスへの構造そのものを組み替える技術専門の取り組みです。

ドメイン駆動設計による境界設計と、API-first設計・イベント駆動アーキテクチャによる連携が中核になります。そこに、サービスメッシュやKubernetesといったクラウドネイティブパターンと、ストラングラーフィグパターンによる段階移行が組み合わさって、初めて成立します。

組織規模と体制を踏まえた判断の前提

マイクロサービス化は、開発速度と柔軟性を高める一方で、監視・運用・人材確保という新たなコストを生み出します。

目的は「分散させること」ではなく「変更に強い構造を手に入れること」だという原点に立ち返り、モジュラーモノリスという中間形態も含めて、自社の規模と体制に見合った着地点を見極めることが重要です。

現状のモノリスの依存関係の洗い出し

まずは、現在のシステムのどこに変更しにくい密結合があるかを一覧にし、どの業務ドメインを最初のBounded Contextとして切り出せそうかを洗い出すところから始めてください。

境界設計、API・イベント基盤の技術選定、段階移行の計画は、既存システムの事情を踏まえたオーダーメイドの判断が求められる領域です。そのため、riplaはフルスクラッチ開発の立場から、既存の基幹システムの構造分析、境界設計、段階的な移行計画の策定から実装までを一貫して支援しています。

▼全体ガイドの記事
・業務システムリアーキテクチャの完全ガイド

会社紹介

株式会社riplaでは、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを、構想策定・要件定義から開発・改善まで一気通貫で支援。事業会社でIT・DXを経験したプロフェッショナルによる高い要件定義力・システム設計力を活かし、事業成果の最大化に伴走します。

また、当社独自の開発テンプレート「Boxシリーズ」による標準機能の高速開発と、AI駆動開発の独自フレームワーク「GoDD」による独自機能のAI実装を組み合わせることで、低コスト・短期間で開発を実現いたします。

もし、システム開発やプロダクト開発に関するご要望がございましたら、お気軽にお問い合わせください。

・サービス概要資料のURLはこちら >>>
・お問合せページのURLはこちら >>>
・お役立ち資料のURLはこちら >>>

執筆者プロフィール
張田谷凌央
張田谷凌央

株式会社ripla 代表取締役CEOとして、システムパッケージ活用、システム開発、データ分析、生成AI活用、SaaS開発、アプリ開発、EC構築など、幅広い領域で企業のDX推進と事業成長を支援している。事業会社でIT・DXを経験したプロフェッショナルが集う株式会社riplaにおいて、お客様の事業・ユーザー・業務に最適化したオーダーメイド型システムを構想策定・要件定義から開発・改善まで一気通貫で支援し、単なるシステム納品にとどまらず、クライアントと同じ目線で事業成果の最大化に向けた伴走支援を行う。早稲田大学卒業後、ラクスル株式会社、LINEヤフー株式会社にて事業開発やDX推進などに従事した後、株式会社riplaを創業。