Software Architecture: The Hard Parts
2022/12/03の浜松IT技術者忘年会2022でオライリーの「ソフトウェアアーキテクチャ・ハードパーツ」を5分で薦めるLTをしました。
が5分では無理がありました
#hamait https://hamamatsu-it.connpass.com/event/264985/
hamait20222022/12/03 @suchiSOFTWAREARCHITECTURE:THE HARD PARTS Modern Trade-Off Analysesfor Distributed Architectures
View Slide
hamait2022The Hard Parts 2
hamait2022The Hard Partsまとめ Modern Trade-OffAnalyses forDistributedArchitectures3
hamait2022The Hard Partsと思ったら4• 3日前に翻訳の島田さんがForkwellイベントで発表していた(→SpeakerDeck)• わかりやすい! これを読めばOK終了
hamait2022The Hard Partsまとめ5• 今風のソフトウェアアーキテクチャ構築方法を知る• 普遍的なハードパーツ(難題)に取り組む方法を知る
hamait2022The Hard PartsHard Parts6• 飲み込みにくい言葉• 「難題」くらいに読み替える• 変更困難(Hard:堅い←→Soft)• 難しい(Hard:キツい←→Easy)
hamait2022The Hard Partsソフトウェアアーキテクトの役割7• アーキテクチャ決定を下す• アーキテクチャを継続的に分析する• 最新のトレンドを把握し続ける• 決定の順守を徹底する• 多様なものに触れ、経験している• 事業ドメインの知識を持っている• 対人スキルを持っている• 政治を理解し、かじ取りする
hamait2022The Hard Partsソフトウェアアーキテクチャの法則8• 第一法則• ソフトウェアアーキテクチャはトレードオフがすべて• 第二法則• 「どうやって」よりも「なぜ」の方がずっと重要
hamait2022The Hard PartsWhy? 正解は存在しない9• 絶対的な正解はなく、さまざまな妥協から選択するハードパーツ(難題)が山ほどある• 「最善な選択を見つける」よりも「最悪な選択をしない」CC-BY-NC 2.0 peter-rabbit
hamait2022The Hard Parts全体構成10•第一部 分割する•第二部 結びつける
hamait2022The Hard PartsI. 分割する11• 結合の見分け方• アーキテクチャのモジュール化• アーキテクチャの分解• コンポーネントベース分解パターン• 運用データの分解• サービスの粒度
hamait2022The Hard PartsII. 結びつける12• 再利用パターン• データの所有権と分散トランザクション• 分散データアクセス• 分散ワークフローの管理• トランザクショナルサーガ• コントラクト• 分析データの管理
hamait2022The Hard Parts重要なのはトレードオフ分析13• これらのすべての節で• 特性を定義→候補を論理的に分類/パターン• それぞれのトレードオフを特性に沿って整理• トレードオフの表が43もある• プロジェクトSysops Squadという物語(Saga)• 課題と選択の例
hamait2022The Hard Parts例: サービスの粒度15分解要因ドライバー ドライバーを適用する理由サービスの範囲と機能 密な凝集を持った単一目的のサービスコード変動率 アジリティ(テスト範囲とデプロイリスクの低減)スケーラビリティとスループット コスト削減と迅速な対応耐障害性 全体的な稼働率の向上セキュリティアクセス 特定の機能へのセキュリティアクセス制御の向上拡張性 アジリティ(新機能の追加の容易さ)統合要因ドライバー ドライバーを適用する理由データベーストランザクション データの整合性と正確性ワークフロー 耐障害性、パフォーマンス、信頼性共有コード 保守容易性データ関係 データの整合性と正確性
hamait2022The Hard Parts例: トランザクショナルサーガパターン16パターン名 通信 整合性 調整エピックサーガ(sao) 同期 アトミック オーケストレーション伝言ゲームサーガ(sac) 同期 アトミック コレオグラフィおとぎ話サーガ(seo) 同期 結果 オーケストレーション時間旅行サーガ(sec) 同期 結果 コレオグラフィファンタジーサーガ(aao) 非同期 アトミック オーケストレーションホラーストーリーサーガ(aac) 非同期 アトミック コレオグラフィパラレルサーガ(aeo) 非同期 結果 オーケストレーションアナロジーサーガ(aec) 非同期 結果 コレオグラフィ
hamait2022The Hard Parts独自のトレードオフ分析構築17• 新たなハードパーツに立ち向かう方法• 関心事の整理• それぞれにMECEなリストを作り• トレードオフを分析する• アーキテクチャに限らないのでは?• →普遍的な難題(ハードパーツ)への対処方法が学べる
hamait2022The Hard PartsO’REILLYアーキテクチャ入門本18
hamait2022The Hard Parts翻訳は安心の島田印19• 日本Rubyの会理事/Ruby札幌• 浜松Ruby会議オープニングセッション
hamait2022The Hard Partsまとめ Modern Trade-OffAnalyses forDistributedArchitectures20
hamait2022The Hard Partsまとめ21• 分散システムのアーキテクチャ構築を知る• 普遍的なハードパーツ(難題)へ取り組む方法を知る