SA.01: はじめに

全体を通した目当て

このセクションでは、システムアーキテクチャの設計方法について、

具体的には、次の3つのポイントについて説明します

  1. システムの構成方法
  2. 各タスクに適したシステム設計
  3. 柔軟で拡張性のある設計とはどのようなものか

アーキテクチャの設計原則の目当て(SA.01.1)

まず、システムアーキテクチャ全体の基本的な考え方を説明します。システムの配置や分け方、同期や非同期といった考え方についても解説します。配置方法では集中型システムと分散型システムが、分け方としてはLayer構造とTier構造が挙げられます。

システム設計では、サブシステムをどのように配置し、どのように連携させるか、さらにそれらの間でどうやって情報をやり取りするかを決める必要があります。組織の指揮系統や連絡方法を決めることに似てますね。

システムの構造には、パイプライン、オーケストレーション、コレオグラフィといった方法があります。それぞれ異なる目的や特性があり、システムの目的に応じて使い分けます。

また、サブシステム同士の連携方法も重要です。例えば、TCC(トランザクション補償)やSagaといった方法があります。これらは、複数のシステムが連携して動くときに使われる設計パターンです。また、システムを信頼性の高いものにするために、データのレプリケーション(非同期でのデータコピー)についても理解しておく必要があります。

このように、選ぶ設計によってシステムアーキテクチャは大きく変わります。それぞれの方法にはメリットとデメリットがあるので、目的や条件に応じて適切に選ぶことが大切です。

柔軟性を高めるアーキテクチャパターン

柔軟性の高いアーキテクチャとしてはマイクロサービスが最も代表的なものです。SA.01.1で選ぶと分散型・Tier構造なアーキテクチャがマイクロサービスと呼ばれます。

まず、マイクロサービスとは何か、その強みと、それを最大限に活かせるユースケースについて説明します。全体的な概念を理解すれば大丈夫です。

次に、マイクロサービスが直面する4つの主要な課題(トラフィック管理、障害の連鎖、認証、トレーサビリティ)について議論します。また、これらの課題を解決するためのアーキテクチャである「サービスメッシュ」について、内部構造とその実現方法を解説します。

最後に、マイクロサービスを実現する方法の一つである「Functions as a Service (FaaS)」についても説明し、SA.01の内容をまとめます。