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 2022/12/03 @suchi SOFTWARE ARCHITECTURE: THE HARD PARTS Modern Trade-Off

    Analyses for Distributed Architectures
  2. hamait2022 The Hard Parts 2

  3. hamait2022 The Hard Parts まとめ Modern Trade-Off Analyses for Distributed

    Architectures 3
  4. hamait2022 The Hard Parts と思ったら 4 • 3日前に翻訳の島田さんがForkwellイベント で発表していた(→SpeakerDeck) •

    わかりやすい! これを読めばOK 終了
  5. hamait2022 The Hard Parts まとめ 5 • 今風のソフトウェアアーキテクチャ構築方 法を知る •

    普遍的なハードパーツ(難題)に取り組む方 法を知る
  6. hamait2022 The Hard Parts Hard Parts 6 • 飲み込みにくい言葉 •

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

    • 最新のトレンドを把握し続ける • 決定の順守を徹底する • 多様なものに触れ、経験している • 事業ドメインの知識を持っている • 対人スキルを持っている • 政治を理解し、かじ取りする
  8. hamait2022 The Hard Parts ソフトウェアアーキテクチャの法則 8 • 第一法則 • ソフトウェアアーキテクチャはトレードオフが

    すべて • 第二法則 • 「どうやって」よりも「なぜ」の方がずっと重 要
  9. hamait2022 The Hard Parts Why? 正解は存在しない 9 • 絶対的な正解はなく、さまざまな妥協から 選択するハードパーツ(難題)が山ほどある

    • 「最善な選択を見つける」よりも「最悪な 選択をしない」 CC-BY-NC 2.0 peter-rabbit
  10. hamait2022 The Hard Parts 全体構成 10 •第一部 分割する •第二部 結びつける

  11. hamait2022 The Hard Parts I. 分割する 11 • 結合の見分け方 •

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

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

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

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

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

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

  18. hamait2022 The Hard Parts 翻訳は安心の島田印 19 • 日本Rubyの会理事/Ruby札幌 • 浜松Ruby会議オープニングセッション

  19. hamait2022 The Hard Parts まとめ Modern Trade-Off Analyses for Distributed

    Architectures 20
  20. hamait2022 The Hard Parts まとめ 21 • 分散システムのアーキテクチャ構築を知る • 普遍的なハードパーツ(難題)へ取り組む方

    法を知る
  21. hamait2022 2022/12/03 @suchi SOFTWARE ARCHITECTURE: THE HARD PARTS Modern Trade-Off

    Analyses for Distributed Architectures