Everything-as-Code

全てをコードとして保存する - 設定、インフラストラクチャ、パイプライン
Contributed by

Donal Spring

Marcos Entenza

Published August 15, 2018
Collection
1

概要

Everything as Codeとは、システムのすべての要素をコードとして扱うことです。つまり、ソースコードと一緒に設定をgitやsvnなどのリポジトリに格納することです。下位レイヤーから上位レイヤーまでの構成(NWスイッチ、ベアメタルサーバー、OS、ビルド設定、アプリケーションのプロパティ、デプロイ設定など)をコードとして保存することは、それらが追跡可能で、ボタンをクリックするだけで再作成できることを意味します。

Everything as Codeにはシステム設計も含まれ、これもコードとして保存されます。旧来のITでは、インフラには専門的な技術が必要で、物理的なハードウェアやケーブルの設置が必要でした。システムが高価であったり、それを作った人がもうその会社にいなかったりなどの理由で、頻繁に触ったり更新することはありませんでした。しかし、クラウドコンピューティングとクラウドネイティブアプリケーションの登場により、仮想インフラを安価で簡単に構築できるようになりました。仮想環境の設定をコードとして保存しておけば、必要なときにいつでもライフサイクルとして再作成することができます。

メリット

  1. トレーサビリティ - 設定を git に保存することで、誰が、なぜ、設定を変更したかを追跡するためのコントロールが可能となります。変更は、適用したり戻したりすることができ、変更を行った一人のユーザーまで追跡することができます。
  2. 繰り返し利用可能 - モダンなアプリケーション開発では、あるクラウドプロバイダーから別のプロバイダーへの移動は簡単であるべきです。デプロイメント先を選ぶのは、その週のベストプライスを探すショッピングのようなものであるべきです。すべてのものをコードとして保存することで、さまざまなプロバイダーでシステムを瞬時に再作成することができます。
  3. テスト済み - インフラとコードは、期待通りの動作をすることを確信してから、本番環境にロールアウトし、検証し、プロモートすることができます。
  4. フェニックス サーバー - サーバーの設定にずれが生じる心配はもうありません。パッチの適用が必要になっても、ランダムにサーバーが死んでも大丈夫です。保存された設定から再度作成するだけです。
  5. 理解の共有 - 機能横断的なチームが、一緒に開発している製品のすべての部分を記述するために「Everything as Code」を使用している場合、開発者と運用者の間の理解の共有に役立ち、そのプロダクトの状態を記述するために同じ言語で話し、目標を達成するために同じフレームワークを使用できます。

実施方法

  • Martin Fowler on Infra as Code.
  • Ansible は、巨大なエンタープライズ・オープンソース・テクノロジーを提供するRed Hatが開発したインフラ自動化ツールです。

実施例

参考

Everything-as-Code をチームや顧客、ステークホルダーと実施するにあたりより詳細にお知りになりたい場合は、以下のリンクを参照してください。


Except where noted, content on this site is licensed under a Creative Commons Attribution 4.0 International license. This site is graciously hosted by Netlify