システムアーキテクチャとは

システムアーキテクチャについて

システムアーキテクチャ(System Architecture)とは

システムアーキテクチャとは、システムを構成する要素とその要素間の関係を定義した、システム全体の構造を示す概念的なモデルです。
言い換えれば、システムの構成要素として何があり、構成要素は相互にどのように連携して機能しているか、という仕組みや取り決めを示す「概略設計図」を意味します。

優れたシステムアーキテクチャ設計は、システムの保守性と拡張性を向上させ、システムの安定稼働や長期的な運用コストの削減を実現します。
また、開発段階において、チーム間での共通認識を形成し、コミュニケーションを円滑にして、開発効率の向上を実現することにも寄与します。
逆に、不適切なシステムアーキテクチャ設計は、システムが不安定化したり、保守性が低く変更や拡張が困難となるなど様々な問題を引き起こします。


ITにおけるアーキテクチャ(Architecture)とは

IEEE 1471(ISO/IEC 42010)では、アーキテクチャという言葉を以下のように定義しています。


アーキテクチャとは、コンポーネント、コンポーネント間および環境との関係、またその設計と進化の指針となる原理に体現されたシステムの基本構造である

なお、IEEE 1471(ISO/IEC 42010)では、システムは以下のように定義されています。


特定の機能もしくは機能セット実現のために組織化されたコンポーネントの集合である。

つまり、アーキテクチャとはシステムの基本的構造であることを意味します。
そして、システムアーキテクチャを検討するには、コンポーネントの責務、コンポーネント間の関係を定義する必要があるということになります。


システムアーキテクト(Systems Architect)とは

システムアーキテクトとは、システムアーキテクチャを設計するエンジニアのことです。
情報システムのグランドデザイン担当し、システムの全体像を把握する役割を担います。
上級システムエンジニアと呼ばれることもあります。


アーキテクチャ記述言語について

アーキテクチャ記述言語(ADL:Architecture Description Language)とは

アーキテクチャ記述言語とは、アーキテクチャを形式的に表現するためのモデリング言語のことです。
ADLによってアーキテクチャを定義することは、システム開発者間の共通理解を深め、一貫性と整合性のあるシステム開発を進めることに繋がります。
代表的なADLとして、SysMLやAADLなどがあります。


SysML(Systems Modeling Language)について

SysMLとは、OMG(Object Management Group)によって策定された、システムアーキテクチャを定義するためのモデリング言語です。
このモデリング言語は、自由度が高く汎用的であり、様々なシステムを定義することが可能です。
また、SysMLは標準言語であり、記述方式が統一されているため、国や組織に依らず使用できるメリットがあります。

SysMLは、UML(Unified Modeling Language)の言語仕様を拡張して作成されており、システムレベルの設計に特化した言語仕様となっています。
UMLと共通仕様のダイアグラムを含めて、計9種類のダイアグラムが用意されており、各種システムの仕様記述、分析、設計、検証、評価に使うことができます。



その他のアーキテクチャ記述言語

ADLは、組み込みシステム、リアルタイムシステム向け、製造ライン向け、動的システム向けなど多種多様に作成されています。

言語の名称 説明
AADL(Architecture Analysis & Design Language) 自動車・飛行機等の技術者協会である SAE Internationalの委員会 AS-2 が言語仕様を策定したADLです。
非機能的側面に適した特徴があります。
AUTOSAR(Automotive Open System Architecture) 欧州の自動車メーカーを中心に標準規格として策定したADLです。
車載ソフトウエアの規模増加に対して再利用性を高めることを目的として広く利用されました。
EAST-ADL(Electronics Architecture and Software Technology - Architecture Description Language) 欧州の複数の研究プロジェクトで開発された自動車組み込みシステム向けのADLです。
SysMLのアイデアを採用してAUTOSARを高い抽象レベルで補完するドメイン固有モデリング言語となっています。
C4 model ソフトウェアアーキテクトのサイモン・ブラウン氏が、「UML」と「4+1アーキテクチャビューモデル」をベースとして、2006年から2011年にかけて作成したADLです。


システムアーキテクチャの例

(前提)システムアーキテクチャとソフトウェアアーキテクチャの違いについて

システムアーキテクチャとソフトウェアアーキテクチャは、その意味合いがしばしば混合され、そのアーキテクチャパターンや方法論も混合して記述されることがあります。例えば、「クライアントサーバシステム」というアーキテクチャは、システムアーキテクチャとソフトウェアアーキテクチャのどちらに属するのか?と考えてみてください。一見すると、クライアントサーバシステムは、ソフトウェアだけでなくハードウェアとネットワークにもかかわる設計を検討する必要があるので、システムアーキテクチャなのではないかと思えます。しかし、文献やWEBサイトによってはソフトウェアアーキテクチャの設計パターンとして紹介されていたりします。これには非常に混乱してしまいます。
この点についての根本的な問題は、概念が広すぎることだと思います。そして、システムとソフトウェアの両者は密接に関係しており、簡単に分離できないこともあります。両者を明確に区分することや別物として扱うことは困難です。例えば、有名なソフトウェアアーキテクチャの設計パターンがソフトウェアだけでなくシステムレベルの設計を含んで説明している様子からも、概念の広さを伺えます。

そこで、ここでは次のようにアーキテクチャの概念を定義した上で、アーキテクチャ設計の例を挙げたいと思います。
まず、システムアーキテクチャとは、ソフトウェアだけでなく、ハードウェア、データベースとデータ設計、ネットワークなどのインフラ設計、といったシステム全体の構造と設計を指します。つまり、システムアーキテクチャはソフトウェアアーキテクチャを内包する関係ということです。
一方、ソフトウェアアーキテクチャは、システムにおけるソフトウェアの設計と構造を指します。具体的には、ソフトウェアのコンポーネントやモジュールの関係性、データの流れ、アプリケーションの機能やパフォーマンス、セキュリティなどを設計することです。ここには、システム内でのソフトウェアコンポーネントの配置やインターフェースについての設計も含まれるものと考えます。


モノリシックアーキテクチャ(Monolithic Architecture)

モノリシックアーキテクチャとは、システム全体を単一の大規模なアプリケーションとして構築するシステムアーキテクチャです。
モノリス(monolith)とは言葉は、「一枚岩」という意味の英単語であり、ソフトウェア開発においてはすべての機能やコンポーネントが一体化していることを意味します。

モノリシックアーキテクチャは、開発が容易で、単一のデプロイユニットとして管理することができ、リソースの管理がシンプルなるメリットがあります。
しかし、システム規模が大きくなるにつれて、変更の影響範囲が広くなり、変更や修正、スケールアップが困難になるデメリットがあります。


階層化アーキテクチャ(Layered Architecture)

階層化アーキテクチャとは、システムを複数の階層(レイヤー)に分割して、各層が特定の役割を担うように設計するシステムアーキテクチャです。
階層化構造としては、ユーザインターフェース、アプリケーション、ミドルウェア、ハードウェア、インフラなどの役割カテゴリーに分解することが一般的です。
階層化アーキテクチャは階層ごとに独立しているため、拡張性が高く、メンテナンスしやすいというメリットがあります。

なお、階層化アーキテクチャは、ソフトウェアアーキテクチャパターンとしても代表的な手法です。
これはソフトウェアを役割と責任に応じて複数の論理的な水平階層に構造化するアーキテクチャであり、N層アーキテクチャとも呼ばれます。


サービス指向アーキテクチャ(SOA:Service Oriented Architecture)

サービス指向アーキテクチャとは、情報システムを「サービスの集合体(部品の集まり)」と見なして設計するシステムアーキテクチャです。
つまり、システムまたはソフトウェアの機能をサービスという部品と見なして、そのサービスを組み合わせることでシステムを構築するという概念です。
利用者視点で各業務システムの機能を幾つかの独立した部品に分けることによって、業務プロセスとの対応付けや他のソフトウェアとの連携を容易にします。


ネットワークシステム系アーキテクチャ

名前 説明
クライアントサーバアーキテクチャ サービスを利用する側(クライアント)と サービスやデータを提供する側(サーバ)が、 ネットワーク通信よって動作するシステムモデルです。
クライアントサーバアーキテクチャ(3層アーキテクチャ) クライアントにユーザーインターフェースの「プレゼンテーション層」、サーバーにデータの加工・処理を実行する「ファンクション層」、データベースにアクセスする「データ層」の3層で分割したシステムモデルです。
2層アーキテクチャよりもシステム性能の向上や、開発・保守効率の向上を図ることが可能となります。
P2P(Peer to Peer)アーキテクチャ P2P(Peer to Peer)とは、対等な動作をするコンピュータによる主従関係がないシステムモデルです。
サービス提供者となるサーバは存在せずに、対等な役割として各ピアが状況に応じてサービスの提供者と利用者になります。
サーバーレスアーキテクチャ クラウドサービスを利用することでインフラ管理を必要せず、アプリケーション開発に注力してサービスを稼働させるシステムモデルです。
サービスに必要な分だけサーバを稼働させるなど、スケーリングの自由さも確保できます。

【備考】エンタープライズアーキテクチャについて

エンタープライズアーキテクチャ(EA:Enterprise Architecture)とは

エンタープライズアーキテクチャとは、企業における情報システムの全体像デザインのことです。
各業務と情報システムを、ビジネス・データ・アプリケーション・テクノロジの四つの体系で分析し、全体最適化の観点から見直す技法として用いられます。

EAでは、業務手順や情報システムなどの標準化を図り、効率的な事業や経営の運営、全体を最適化を試みます。
現状の業務とシステムを分析して「現状モデル(As-Is)」を整理し、目標とする「理想モデル(To-Be)」の実現を目指して業務およびシステムの改善を図ります。
既存の業務と情報システムの全体像及び将来の目標を明示することによって、ITガバナンスを強化し、経営の視点からIT投資効果を高めることができます。

4つの階層

エンタープライズアーキテクチャでは、業務およびシステムを4つの階層に区分しています。

指定 説明
ビジネスアーキテクチャ ビジネス戦略に必要な業務プロセスや情報の流れを体系的に示したもの。
成果物は、業務説明書、機能構成図、機能情報関連図(DFD)、業務流れ図となります。
データアーキテクチャ 業務に必要なデータの内容,データ間の関連や構造などを体系的に示したもの。
成果物は、情報体系整理図、情報分析図、実態関連ダイアグラム、データ定義表となります。
アプリケーションアーキテクチャ 業務プロセスを支援するシステムの機能や構成などを体系的に示したもの。
成果物は、情報システム関連図、情報システム機能関連図となります。
テクノロジーアーキテクチャ 情報システムの構築・運用に必要な技術的構成要素を体系的に示したもの。
成果物は、ネットワーク構成図、ソフトウェア構成図、ハードウェア構成図となります。

関連ページ