$30 off During Our Annual Pro Sale. View Details »

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

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

    View Slide

  2. hamait2022
    The Hard Parts 2

    View Slide

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

    View Slide

  4. hamait2022
    The Hard Parts
    と思ったら
    4
    • 3日前に翻訳の島田さんがForkwellイベント
    で発表していた(→SpeakerDeck)
    • わかりやすい! これを読めばOK
    終了

    View Slide

  5. hamait2022
    The Hard Parts
    まとめ
    5
    • 今風のソフトウェアアーキテクチャ構築方
    法を知る
    • 普遍的なハードパーツ(難題)に取り組む方
    法を知る

    View Slide

  6. hamait2022
    The Hard Parts
    Hard Parts
    6
    • 飲み込みにくい言葉
    • 「難題」くらいに読み替える
    • 変更困難(Hard:堅い←→Soft)
    • 難しい(Hard:キツい←→Easy)

    View Slide

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

    View Slide

  8. hamait2022
    The Hard Parts
    ソフトウェアアーキテクチャの法則
    8
    • 第一法則
    • ソフトウェアアーキテクチャはトレードオフが
    すべて
    • 第二法則
    • 「どうやって」よりも「なぜ」の方がずっと重

    View Slide

  9. hamait2022
    The Hard Parts
    Why? 正解は存在しない
    9
    • 絶対的な正解はなく、さまざまな妥協から
    選択するハードパーツ(難題)が山ほどある
    • 「最善な選択を見つける」よりも「最悪な
    選択をしない」
    CC-BY-NC 2.0 peter-rabbit

    View Slide

  10. hamait2022
    The Hard Parts
    全体構成
    10
    •第一部 分割する
    •第二部 結びつける

    View Slide

  11. hamait2022
    The Hard Parts
    I. 分割する
    11
    • 結合の見分け方
    • アーキテクチャのモジュール化
    • アーキテクチャの分解
    • コンポーネントベース分解パターン
    • 運用データの分解
    • サービスの粒度

    View Slide

  12. hamait2022
    The Hard Parts
    II. 結びつける
    12
    • 再利用パターン
    • データの所有権と分散トランザクション
    • 分散データアクセス
    • 分散ワークフローの管理
    • トランザクショナルサーガ
    • コントラクト
    • 分析データの管理

    View Slide

  13. hamait2022
    The Hard Parts
    重要なのはトレードオフ分析
    13
    • これらのすべての節で
    • 特性を定義→候補を論理的に分類/パターン
    • それぞれのトレードオフを特性に沿って整理
    • トレードオフの表が43もある
    • プロジェクトSysops Squadという物語(Saga)
    • 課題と選択の例

    View Slide

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

    View Slide

  15. hamait2022
    The Hard Parts
    例: トランザクショナルサーガパターン
    16
    パターン名 通信 整合性 調整
    エピックサーガ(sao) 同期 アトミック オーケストレーション
    伝言ゲームサーガ(sac) 同期 アトミック コレオグラフィ
    おとぎ話サーガ(seo) 同期 結果 オーケストレーション
    時間旅行サーガ(sec) 同期 結果 コレオグラフィ
    ファンタジーサーガ(aao) 非同期 アトミック オーケストレーション
    ホラーストーリーサーガ(aac) 非同期 アトミック コレオグラフィ
    パラレルサーガ(aeo) 非同期 結果 オーケストレーション
    アナロジーサーガ(aec) 非同期 結果 コレオグラフィ

    View Slide

  16. hamait2022
    The Hard Parts
    独自のトレードオフ分析構築
    17
    • 新たなハードパーツに立ち向かう方法
    • 関心事の整理
    • それぞれにMECEなリストを作り
    • トレードオフを分析する
    • アーキテクチャに限らないのでは?
    • →普遍的な難題(ハードパーツ)への対処方法が学べる

    View Slide

  17. hamait2022
    The Hard Parts
    O’REILLYアーキテクチャ入門本
    18

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. hamait2022
    2022/12/03 @suchi
    SOFTWARE
    ARCHITECTURE:
    THE HARD PARTS Modern Trade-Off Analyses
    for Distributed Architectures

    View Slide