Effective DevOpsを読んだ。
その中で4つの要素が必要なものと書いてあり、そのうちのツールについて勉強しようと思いたって積読になっていたInfrastructure as Codeを読んだ。
インフラをコードで管理することができる。コードで管理できればソフトウェア開発のプラクティスをインフラにも適用できる。プラクティスとは以下のもの。
- ヴァージョン管理
- テストの導入
- CI/CDの導入
クラウドやオートメーションツールの普及によりインフラに変更を加えることが簡単になったため、コンピュータリソースのテンプレートや設定ファイルでインフラを管理するようになった。ツールを使うことで手作業を減らしミスを減らしていく。
また、マイクロサービスのような新しいアーキテクチャが標準になってきたことにより、必要なサーバ構成も変わっていく。アプリケーションの変更に付随してインフラも変更を余儀なくされることが多々ある。
- 大きく変更させるのではなく小さい変更を適度に繰り返す
- モニタリングの設定、確認
- 高速なフィードバックに対する対応
- 継続的なテスト
強く納得したのは以上のことだった。これらは、アプリケーション開発では当たり前の事のように言われていることだなと感じた。(できているかはともかく…
まとめ
Infrastructure as Codeとはインフラ、アプリケーションと関係なくリードタイムを短くすることを目的とした手法を考えて実行していくこと、またそのようなことができるチームを作っていくことなのだと思った。
今後どのようなアーキテクチャやツールが標準になっていくかは分からないが、すぐに対応できるようにインフラもアプリケーションも細々と勉強し続けようと思う。
おまけ
ちょうど本を読み出す前に監訳の@gosukenatorさんの書斎についての記事を読んだ。その中でブックストッパーが紹介されており、本を開きながら書く際にとても役に立った。便利便利。