完全理解.FM

「ソフトウェアアーキテクチャの基礎」イントロ レビュー Part1

今回は「ソフトウェアアーキテクチャの基礎」という本のイントロをレビューついでにざっくり話しています

00:00: OP
00:30: 雑談
01:15: テーマ
03:48: ソフトウェアアーキテクチャの定義
10:48: ソフトウェアアーキテクトに求められる素養
16:29: 逆T字人財・I字人財・Individual Contributor
26:27: ソフトウェアアーキテクトに求められる素養の考察
29:19: 前半の締めと次回予告

- ソフトウェアアーキテクチャの基礎
  - O'Reillyから出ている技術本
  - 想定読者はおそらくテックリード以上のある程度ビジネスを含めた観点でソフトウェアエンジニアを全うしている人
  - 本の構成として第一部で基礎的な概念を把握し、第二部で具体的なアーキテクチャスタイル(レイヤードやマイクロサービス)を知り、第三部でADRなどのテクニックや交渉・リーダーシップと言った人としてのソフトスキルを学ぶ流れ
  - 今回のpodcastではその前段にあるイントロダクションをざっくり舐めていく
イントロ
- ソフトウェアアーキテクトのキャリアパスは曖昧
  - ソフトウェアアーキテクチャの定義が曖昧
    - ソフトウェアアーキテクチャと言ったらどういうものをイメージする?
  - ソフトウェアアーキテクチャの責務は広い
    - CI/CD
    - ソフトスキル (ライテクングスキルやマネジメント・プレゼン)
    - スタイル (分散・モノリス、ドメイン固有)
    etc..
  - ソフトウェア開発エコシステムの進化でソフトウェアアーキテクチャが常に変化する対象になっている
- ソフトウェアアーキテクチャの定義 [本書における]
  - 1. (システムの)構造
    - システムを実装するアーキテクチャのスタイル
    - レイヤードやマイクロサービス etc...
  - 2. アーキテクチャ特性
    - システムの成功基準のようなもので一般的には非機能要件というニュアンスもここに含まれる
    - 可用性・信頼性、テスト容易性、セキュリティ・耐障害性、スケーラビリティ・弾力性・回復性、パフォーマンス・デプロイ容易性・学習容易性
  - 3. アーキテクチャ決定
    - どのように構築すべきかのルール
    - 共通コンポーネントに切り出すルールやintefaceを仲介させるなど
  - 4. 設計指針
    - システムのガイドライン(not rule)
    - 「非同期メッセージングを利用してパフォーマンスを向上させるべきである」etc..
- ソフトウェアアーキテクトに期待される8つの素養
  ● アーキテクチャ決定を下す
  ● アーキテクチャを継続的に分析する
  ● 最新のトレンドを把握し続ける
  ● 決定の順守を徹底する
  ● 多様なものに触れ、経験している
  ● 事業ドメインの知識を持っている
  ● 対人スキルを持っている
  ● 政治を理解し、かじ取りをする