コードによるインフラ構成管理はなぜ必要? 今さら聞けない「Infrastructure as Code」
インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築 第1回
本連載は、IT業界に入ったばかりの新米業務アプリケーション開発者や、IT業界を目指す学生さんを対象とした、インフラ構成管理ツールを使ってコードでインフラを構築するための講座です。また、インフラエンジニア/システムオペレータで、物理環境でのインフラ構築/運用管理は経験があるけど、プログラミングが苦手という方にも読み進めていただけるように、文法などの解説を入れながら説明します。本連載では、Vagrant/Chef/Dockerをつかって簡単なインフラを構築していきます。
はじめに
本連載では、インフラの構成をコードで管理するための便利なツールを使って、インフラを構築するための手順をご紹介します。今回は、Vagrantというツールを使って、ローカルマシンに仮想環境でWebアプリケーションの開発環境を作って、開発チーム内で統一した開発環境を構築する方法について説明します。
対象読者
本記事は、次の方を対象にしています。
- コードを使ってインフラの構成管理をしたい人
- ネットワークやLinuxの基礎知識がある人
- Webシステムの開発環境を構築したことがある人
なぜ、コードでインフラの構成管理をするの?
業務アプリケーション開発者のみなさんは、前任者が作った既存システムにバグがあり、それを修正することき、「設計書の内容と、ソースコードの中身が違う!?!」というシーンに出くわすことはありませんか? Excelの設計書とソースコードを交互ににらめっこしながら、関係者に仕様を再確認しつつ、コードを修正する作業は、あまり楽しい仕事ではないでしょう。
実はインフラ構築の現場でも、同じようなことが起こっています。本番稼働しているインフラの設計書やサーバのパラメータシートが、実際の設定値と異なって、いざ環境を構成変更しようとしたときにうまく動かないことがよくあります。
一般的なインフラ構築の場合、環境構築手順を作成してインストールやセットアップを行います。しかし台数が多くなると、人間が手作業で行うのは限界があります。そこで、インフラ構築するときは手順書をもとに構築するのではなく、「コードに書かれたとおりの内容を自動で設定する」しくみを導入すれば、だれがそのプログラムを実行しても「同じ状態」のインフラ環境が構築できます。
また、本番運用中に構成変更があったときに、サーバの状態をきちんと管理しておかないと、インフラ全体がブラックボックス化してしまい、たちまち手に負えなくなります。コードで管理してさえいれば、アプリケーション開発におけるソースコードの管理とおなじように、Gitなどのバージョン管理ソフトで履歴を管理することが可能になります。
このように、インフラの構成をコードで管理していくことは「Infrastructure as Code」と呼ばれています。
コードによるインフラ構築が求められる背景
ここで、コードによるインフラ構築が広く行われている背景について整理しておきます。従来のオンプレミス環境におけるインフラ構築は、ハードウエアを自社で調達し、その保守期限が切れるまで使うため、一度構築したものを、手入れしながら長く使うというのが一般的なやりかたでした。そのため、OS/ミドルウエアのバージョンアップだけでなく、本番運用時のトラフィックに合わせてパフォーマンスチューニングなどを行い、さまざまなインフラ構成要素を変更しながら運用管理をしていました。そのため、インフラの構成管理の負荷が増大してきました。つまり、「常に変化するインフラ」でした。
しかしながら、クラウドシステムの登場で、インフラ構築の手法が大きく変わってきました。クラウドは仮想環境をもとにしていますので、インフラ構築から物理的な制約がなくなります。そのため、これまでのオンプレミスでは難しかった、サーバやネットワークを簡単に構築したり、一旦構築したものをすぐに破棄したり出来るようになりました。そのため、一度構築したインフラは変更を加えることなく破棄して、新しいものを構築してしまえばよく、これまで負荷の大きかったインフラの変更履歴を管理する必要がなくなりました。
このようなインフラは「Immutable Infrastructure(不変のインフラ)」と呼ばれています。そして、インフラの変更履歴を管理するのではなく、動作している「インフラの状態」を管理する必要性が出てきました。
このような背景から、インフラの状態を適切に管理できる「構成管理ツール」が広く使われるようになりました
この記事は参考になりましたか?
- インフラ構成管理ツールを使いこなす!コードではじめるサーバ構築連載記事一覧
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 阿佐 志保(アサ シホ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア



