SA.01:システムアーキテクチャ

SA.01.1 アーキテクチャの設計原則と主要パターン

重要度:☆☆☆☆(4)

概要

  • 複数ノード間の業務機能の分割、制御、連携集約の方式に着目してアーキテクチャパターンを比較できる。
  • 主要なアーキテクチャパターンの特徴や制約、適するユースケースを網羅的に理解し、アーキテクチャ設計時の判断材料にできる。

詳細

  • アーキテクチャの設計原則となる観点を理解し比較できる。
    • システムの配置: 集約型、分散型
    • システムの分割方法: layer 構造、tier 構造
    • サブシステム間・コンポーネント間の機能制御・連携集約の方式
    • 業務とデータの関係、ノード間のデータ共有/非共有の方式
    • サブシステム呼び出しやデータ共有のタイミング: 同期、非同期
  • サブシステム間・コンポーネント間の機能制御・連携集約に関する具体的なアーキテクチャパターンについて、その特徴、主従関係、適するユースケースなどを理解している。
    • パイプライン (パイプ/フィルター)
    • コーディネーション、オーケストレーション
    • イベント駆動、コレオグラフィ
    • メディエーター、ブローカーによる仲介: メッセージングキュー、Pub/Sub パターン
  • サブシステム間のデータ連携や整合に関する具体的なアーキクチャパターンについて、その特徴や設計上の重要な観点、適するユースケースなどを理解している。
    • 分散トランザクションとエラーハンドリングのパターン: TCC、Saga
    • レプリケーション (非同期データ複製)

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

重要度:☆☆☆☆☆(5)

概要

  • システムの複雑化を避け、要素ごとの独立した変更や拡張がしやすく柔軟性の高いシステムを実現するアーキテクチャパターンや通信プロトコル、設計技術を理解している。

詳細

  • マイクロサービスアーキテクチャを用いた際のメリット・デメリットを理解し、具体的な設計シーンで導入可否判断ができる。
    • サービス毎に独立した技術選択、スケーリング、デプロイ
  • マイクロサービスで良く用いられるサービス間通信の基本構成を理解している。
    • 同期通信: REST (OpenAPI)、GraphQL、gRPC/Protocol Buffer
    • 非同期通信、キュー、ストリーム、トピック
  • アプリケーション実装からシステム制御機能を分離する設計パターンを理解している。また、分離される主な機能とその効果を理解している。
    • サービスプロキシ、サイドカーパターン
    • コントロールプレーンとデータプレーンの分離
    • サービスメッシュ
    • API ゲートウェイ
    • 分離される主な機能: トラフィック制御、通信障害の回復、認証、トレーシング
  • イベント駆動とリソース動的確保を組み合わせたデザインパターンを理解している。
    • FaaS (Serverless)