Tocyukiのブログ

ギターと柔術とプログラミングが好き!

「AWSクラウドネイティブデザインパターン」を読んだ ⛅

というわけで読了したので気づきや感想やらなんやらをつらつらと📝

目次

  • 第1部:運用を効率化する
    • 第1章:責任共有モデルを意識してアーキテクチャを選択する
      • 責任共有モデルとは
      • 責任範囲を最小化するようクラウドサービスを選択する
      • 利用者の責任範囲をサポートするサービスに習熟する
      • 責任共有モデルを意識したアーキテクチャパターン
    • 第2章:テスト容易性を高める
      • ユニットテストを阻害する複雑な依存関係
      • 開発者に夜信頼性の高いテスト
      • 独立した組織によるテスト
      • テストピラミッドとCI/CD
      • テスト容易性をたかめるためのアーキテクチャパターン
    • 第3章:小規模かつ可逆的な変更を頻繁に行う
      • 継続的インテグレーション
      • トランクベース開発
      • 継続的インテグレーションに必要なプラクティス
      • 継続的デリバリー
      • 進化的なアーキテクチャ
      • 小規模かつ可逆的な変更を頻繁に行うためのアーキテクチャパターン
    • 第4章:セキュリティを作り込む
      • 責任共有モデルとクラウドのセキュリティ
      • 疎結合なアプリケーションセキュリティ
      • 脅威モデリング
      • DFD (Data Flow Diagram) によるモデリング
      • STRIDEフレームワークによる脅威のリストアップ
      • 脅威への対策
      • セキュリティを高めるためのアーキテクチャパターン
    • 第5章:DevOpsとプラットフォームエンジニアリング
      • 運用と開発のコラボレーション
      • クラウドネイティブなチームモデル
      • プラットフォームエンジニアリング
      • アーキテクチャパターン
  • 第2部:回復力を高める
    • 第6章:スケーラブルなアーキテクチャを実装する
      • オートスケーリングを前提としたアプリケーションの構造
      • 非同期アーキテクチャによるスケーラビリティ
      • 制限をコントロールする
      • アーキテクチャパターン
    • 第7章:障害からの自動的な復旧を実現する
      • リカバリ目標を定義する
      • フェイルオーバーを実装する
      • タイムアウト、リトライを実装する
      • 安全なデプロイメント
      • アーキテクチャパターン
    • 第8章:回復力をテストする
      • スケーラビリティをテストする
      • 障害復旧のテストを行う
      • Game Day を実施する
      • アーキテクチャパターン
  • 第3部:可観測性を高める
    • 第9章:可観測性を実装し運用する
      • 可観測性の3本柱
      • SLI、SLO、SLAとエラーバジェット
      • トリアージ
      • ビジネスの観点でメトリクスを収集する
      • FinOps
      • アーキテクチャパターン
    • 第10章:AWSのサービスを活用してテレメトリを収集する
      • OpenTelemetryとADOT
      • AWS X-Rayによる分散トレーシング
      • 抽象化レイヤのメトリクスを収集する
      • ログ出力先を抽象化する
      • アーキテクチャパターン
      • OSS、3rd Party製品の活用

関連リンク

gihyo.jp

余談だが、公式ページに記載されている目次とだいぶ違いがあったので報告したらすぐに修正してくれた。

著者

※敬称略

  • 林政利(はやしまさとし)
    • https://twitter.com/literalice
    • アマゾン ウェブ サービス ジャパン合同会社
      • サービススペシャリスト統括本部
        • アプリケーション開発技術本部
          • コンテナスペシャリスト
  • 根本裕規(ねもとゆうき)
    • https://twitter.com/rr250r_smr
    • アマゾン ウェブ サービス ジャパン合同会社
      • 技術統括本部
        • フィナンシャルサービスインダストリ技術本部
          • シニアソリューションアーキテクト
  • 吉澤稔(よしざわみのる)
    • アマゾン ウェブ サービス ジャパン合同会社
      • 技術統括本部
        • フィナンシャルサービスインダストリ技術本部
          • シニアソリューションアーキテクト

気づきと感想

  • ECSのローリングアップデート機能、AWS AppConfigでベイクタイムを設定しCloudWatchアラームをロールバックする仕組みが設けられているというのは知らなかった
  • AppConfigをあまり使ったことがなかったので機能フラグを実装する際に便利なマネージドサービスということを認識できた
  • STOP(Standby Takes Over Primary)というパターンも知らなかった
  • 継続的インテグレーション、トランクベース開発について、なかなか実現するのは難しそうな手法、プラクティスだなと感じたが、実現できる仕組みを整理できたらデリバリープロセスの劇的な向上を実現できそう

まとめ

「AWSクラウドネイティブデザインパターン」を読んだ ⛅

クラウドネイティブな開発、運用を実現するためのアイディアやプラクティスが様々な観点で記載されていてとても参考になった!

DevOpsやPlatform Engineeringに関連してチームトポロジーについての言及もあり、クラウドネイティブな開発を行うためのチームモデルについても説明されていた。

AWSのサービスでここまでできるようになったのかという気付きも多くあり、AWSでクラウドネイティブなソフトウェア開発を行っているエンジニアにはとても参考になる一冊になると思うのでオススメです!