Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアアーキテクチャ・ハードパーツ

suchi
December 03, 2022

 ソフトウェアアーキテクチャ・ハードパーツ

Software Architecture: The Hard Parts

2022/12/03の浜松IT技術者忘年会2022でオライリーの「ソフトウェアアーキテクチャ・ハードパーツ」を5分で薦めるLTをしました。

が5分では無理がありました

#hamait
https://hamamatsu-it.connpass.com/event/264985/

suchi

December 03, 2022
Tweet

More Decks by suchi

Other Decks in Technology

Transcript

  1. hamait2022 The Hard Parts Hard Parts 6 • 飲み込みにくい言葉 •

    「難題」くらいに読み替える • 変更困難(Hard:堅い←→Soft) • 難しい(Hard:キツい←→Easy)
  2. hamait2022 The Hard Parts ソフトウェアアーキテクトの役割 7 • アーキテクチャ決定を下す • アーキテクチャを継続的に分析する

    • 最新のトレンドを把握し続ける • 決定の順守を徹底する • 多様なものに触れ、経験している • 事業ドメインの知識を持っている • 対人スキルを持っている • 政治を理解し、かじ取りする
  3. hamait2022 The Hard Parts I. 分割する 11 • 結合の見分け方 •

    アーキテクチャのモジュール化 • アーキテクチャの分解 • コンポーネントベース分解パターン • 運用データの分解 • サービスの粒度
  4. hamait2022 The Hard Parts II. 結びつける 12 • 再利用パターン •

    データの所有権と分散トランザクション • 分散データアクセス • 分散ワークフローの管理 • トランザクショナルサーガ • コントラクト • 分析データの管理
  5. hamait2022 The Hard Parts 重要なのはトレードオフ分析 13 • これらのすべての節で • 特性を定義→候補を論理的に分類/パターン

    • それぞれのトレードオフを特性に沿って整理 • トレードオフの表が43もある • プロジェクトSysops Squadという物語(Saga) • 課題と選択の例
  6. hamait2022 The Hard Parts 例: サービスの粒度 15 分解要因ドライバー ドライバーを適用する理由 サービスの範囲と機能

    密な凝集を持った単一目的のサービス コード変動率 アジリティ(テスト範囲とデプロイリスクの低減) スケーラビリティとスループット コスト削減と迅速な対応 耐障害性 全体的な稼働率の向上 セキュリティアクセス 特定の機能へのセキュリティアクセス制御の向上 拡張性 アジリティ(新機能の追加の容易さ) 統合要因ドライバー ドライバーを適用する理由 データベーストランザクション データの整合性と正確性 ワークフロー 耐障害性、パフォーマンス、信頼性 共有コード 保守容易性 データ関係 データの整合性と正確性
  7. hamait2022 The Hard Parts 例: トランザクショナルサーガパターン 16 パターン名 通信 整合性

    調整 エピックサーガ(sao) 同期 アトミック オーケストレーション 伝言ゲームサーガ(sac) 同期 アトミック コレオグラフィ おとぎ話サーガ(seo) 同期 結果 オーケストレーション 時間旅行サーガ(sec) 同期 結果 コレオグラフィ ファンタジーサーガ(aao) 非同期 アトミック オーケストレーション ホラーストーリーサーガ(aac) 非同期 アトミック コレオグラフィ パラレルサーガ(aeo) 非同期 結果 オーケストレーション アナロジーサーガ(aec) 非同期 結果 コレオグラフィ
  8. hamait2022 The Hard Parts 独自のトレードオフ分析構築 17 • 新たなハードパーツに立ち向かう方法 • 関心事の整理

    • それぞれにMECEなリストを作り • トレードオフを分析する • アーキテクチャに限らないのでは? • →普遍的な難題(ハードパーツ)への対処方法が学べる