O’REILLY Learning「ソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析」8章〜15章

https://learning.oreilly.com/library/view/-/9784814400065/

8章 再利用パターン

分散アーキテクチャにおけるコードの再利用を管理する7つのテクニック
・コードレプリケーション
 一度書かれたらそれっきりのクラスであったり、不具合や機能変更のために変更される可能性が低いコードであったりする、単純な静的コードがある場合に適したアプローチ
・共有ライブラリ
 同じ言語を採用している共有コードの変更が少ないか中程度の環境に適したアプローチ
・共有サービス
 複数の言語やプラットフォームを使用する環境や、共有機能が頻繁に変更される場合に適したテクニック
・サイドカーとサービスメッシュ
 ある種の横断的な関心事を分散アーキテクチャの中で扱うための巧みな方法

ある状況下でトレードオフを適切に評価できないアーキテクトは多い。
しかし、これは必ずしも、そのアーキテクトに非があるわけではない。
トレードオフとは、多くの場合、事後的に明らかになるものだからだ。

9章 データの所有権と分散トランザクション

データの所有権をサービスに割り当てる際に遭遇する3つのシナリオ
・単独所有
・全体共有
・共同所有

10章 分散データアクセス

所有していないデータにサービスが読み取りアクセスを行うための、さまざまな方法
・サービス間通信パターン
・列スキーマレプリケーションパターン
・レプリケーションキャッシュパターン
・データドメインパターン

11章 分散ワークフローの管理

分散アーキテクチャ内の相互作用を考える上で考慮しなくてはならない要素
・通信
・整合性
・調整
「調整」の章

オーケストレーション通信スタイル
コレオグラフィ通信スタイル

12章 トランザクショナルサーガ

トランザクショナルサーガパターン
・エピックサーガ(sao)
・伝言ゲームサーガ(sac)
・おとぎ話サーガ(seo)
・時間旅行サーガ(sec)
・ファンタジーサーガ(aao)
・ラーストーリーサーガ(aac)
・パラレルサーガ(aeo)
・アンソロジーサーガ(aec)

13章 コントラクト

アーキテクトの意思決定のほぼすべての側面に影響を与える、ソフトウェアアーキテクチャにおける不変の要素の1つに、コントラクトがある。
コントラクトとは、広義には、アーキテクチャの異質な部分がどのように相互に接続されるかを指す。

厳格なコントラクト
メリット
・コントラクトの忠実性の保証
・バージョニング
・ビルド時の検証が容易
・優れたドキュメンテーション
デメリット
・密結合
・バージョニング

緩いコントラクト
メリット
・高度な分離
・進化しやすさ
デメリット
・コントラクトの管理
・適応度関数を必要とする

コンシューマー駆動コントラクト(Consumer-Driven Contract:CDC)
メリット
・コントラクトによるサービス間の緩い結合が可能
・厳格さにばらつきを持てる
・進化可能
デメリット
・成熟したエンジニアリングが必要
・1つではなく2つの仕組みの組み合わせ

スタンプ結合
https://wiki.c2.com/?StampCoupling
分散アーキテクチャでよく見られるパターンであり、時にはアンチパターンでもある

14章 分析データの管理

データウェアハウスパターン
データレイクパターン
データメッシュパターン

データメッシュとは、分析データを非中央集権的なやり方で共有、アクセス、管理するためのソシオテクニカルなアプローチ。
データメッシュの4つの原則
・ドメイン主導のデータ所有権
・プロダクトとしてのデータ
・セルフサービス型のデータプラットフォーム
・コンピュテーショナルな連携型の統制

データプロダクト量子(Data Product Quantun:DPQ)
・ソースアラインド(ネイティブ)DPQ
・集約DPQ
・目的特化DPQ

15章 独自のトレードオフ分析を構築する

memoO'REILLY Learning

Posted by shi-n