kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Infrastructure as Code, 3rd Edition を読んだ / クラウド時代における Infrastructure as Code 関連のトピックを網羅的に学べる一冊

2025年3月に出版された「Infrastructure as Code, 3rd Edition」を読んだ📕

2016年頃に Infrastructure as Code(日本語版)を読んで今でも本棚に置いてあって,2021年に出版された Infrastructure as Code, 2nd Edition は日本語版が出版されたら読もうかな〜思いつつ結局読まなかった(出版もされなかった)という経緯がある.1st Edition と比較すると 3rd Edition は大きく変化していて,クラウド時代における Infrastructure as Code のトピックが網羅的に解説されていて最高の一冊だった❗️

英語だし,そこそこページ数も多くすべてのページを読むのは大変だったけど読んで良かった〜と思う.個人的な「毎日10分間読書」という習慣化時間でコツコツ読んでいて,途中別の本を読んだ日もあったけど1ヶ月ぐらいかかってしまった💨

普段から Thoughtworks ポッドキャストを聴いているんだけど,Infrastructure as code in 2025 というエピソードで「Infrastructure as Code, 3rd Edition」が出版されることを知って,すぐ読むことにした.それまでは 3rd Edition が出版されることを知らなくて嬉しい発見だった😀

www.thoughtworks.com

目次

目次から Infrastructure as Code に関連する幅広いトピックが解説されていることがわかると思う❗️

  • I: Foundations
    • 1: What Is Infrastructure as Code?
    • 2: Principles of Cloud Infrastructure
    • 3: Infrastructure Platforms
    • 4: Infrastructure as Code Tools and Languages
  • II: Design
    • 5: Design Principles for Infrastructure as Code
    • 6: Infrastructure Components
    • 7: Designing Deployable Infrastructure Stacks
    • 8: Configuring Infrastructure Stack Instances
    • 9: Integrating Infrastructure Stacks
    • 10: Designing Infrastructure Code Libraries
    • 11: Building Servers as Code
    • 12: Designing Environments
    • 13: Providing Application Runtime Infrastructure
  • III: Delivery
    • 14: Core Infrastructure Delivery Workflows
    • 15: Building and Distributing Infrastructure as Code
    • 16: Implementing Infrastructure Delivery with Pipelines
    • 17: Infrastructure Code Testing Strategy
    • 18: Infrastructure Code Testing Implementation
    • 19: Deploying Infrastructure
    • 20: Changing Existing Infrastructure
    • 21: Governance

www.oreilly.com

X ポスト

読みながら読書メモもたくさん取ったけど,特に印象に残ったところは X にコツコツとポストした❗️

特に良かった Chapter

どの Chapter も良くて,参考になったところや仕事で引用できそうな解説も多かったけど,特に良かった Chapter は以下かな〜と.

  • 1: What Is Infrastructure as Code?
  • 8: Configuring Infrastructure Stack Instances
  • 14: Core Infrastructure Delivery Workflows
  • 17: Infrastructure Code Testing Strategy

1: What Is Infrastructure as Code?

Infrastructure as Code における「誤解」が良かった.普段から Infrastructure as Code を実践していればこういう誤解を感じることはないはずだけど,比較的レガシーなチームを支援していると本当にこういう誤解があって,今後は Infrastructure as Code, 3rd Edition を紹介したり,輪読会をするという選択肢もあるな〜という気づきになった💡

  • Myth: Infrastructure Doesn’t Change Very Often(インフラは頻繁に変更しないという誤解)
  • Myth: We Can Build the Infrastructure First and Automate It Later(インフラ構築を後から自動化できるという誤解)
  • Myth: Speed and Quality Are Trade-Offs(スピードと品質はトレードオフだという誤解)

誤解シリーズで言うと Effective DevOps の「5章 devops に対する誤解とアンチパターン」も良くて,思い出すために5章を読み直したりもした📕

8: Configuring Infrastructure Stack Instances

Patterns for Configuring Stacks(スタックを設定するパターン)というテーマで解説されてて良かった.技術顧問をしているとよく相談を受ける話だな〜と思いながら読んでいた.

  • Configuration in Code
  • Manual Stack Parameters
  • Stack Environment Variables
  • Scripted Parameters
  • Stack Configuration Files
  • Deployment Wrapper Stack
  • Pipeline Stack Parameters
  • Stack Parameter Registry

14: Core Infrastructure Delivery Workflows

Continuous Delivery Principles for Infrastructure as Code(Infrastructure as Code の継続的デリバリー原則)が載っていて良かった.どの原則も当たり前なものではあるけど,Infrastructure as Code に悩んだときは原則に立ち戻るのが良いんだろうな〜と思った.

  • Assume that systems are unreliable.(システムは信頼できないものだと想定する)
  • Make everything reproducible.(すべてを再現可能にする)
  • Avoid snowflake systems.(スノーフレークシステムを避ける)
  • Create disposable things.(リソースを使い捨てる)
  • Minimize variation.(バリエーションを最低限に抑える)
  • Ensure that you can repeat any procedure.(あらゆる手順を繰り返し実行できるようにする)
  • Apply software design principles to your infrastructure code.(インフラストラクチャコードにソフトウェア設計の原則を適用する)

17: Infrastructure Code Testing Strategy

Infrastructure as Code のテストって「何をどこまで」やれば良いの?という相談はよく受けるけど,そういう疑問のアンサーになるような内容になっていて良かった.

たとえば「サブネットの CIDR レンジがあっている?」というテストにはほとんど価値がないという話など,わかるな〜と思いながら読んでいた.他には Swiss Cheese Testing Model という表現は知らなくて参考になった.簡単に言うと,テストの観点が1つだと気付かずすり抜けてしまうけど,複数段階でテストをすれば気付けるはずという感じ(多層防御的な!).

A suite of low-level tests of declarative code can become a bookkeeping exercise.(宣言的コードに対する低レベルテストは単なる記録作業のようになってしまう)。

en.wikipedia.org

読書メモ抜粋

  • スノーフレークシステム(1st Edition では "スノーフレークサーバ" という表現だった)
  • ClickOps
  • CUPID 原則
  • Infrastructure as Code とチームトポロジー

dannorth.net

まとめ

「Infrastructure as Code, 3rd Edition」を読んで本当に良かった❗️定期的に読み直したい一冊だ〜📕

Infrastructure as Code: Designing and Delivering Dynamic Systems for the Cloud Age (English Edition)