
家のリフォームを考えてみてください。古い壁紙を張り替える代わりに、壁ごと新しいものに取り替えるようなイメージです。不変インフラとは、サーバーの設定を少し変えるのではなく、設定済みの新しいサーバーをまるごと用意して置き換える考え方。変更を加えるたびに、新しいものを作るから、予期せぬトラブルを防げるんです。
面接官:不変インフラについて説明してください。
私:不変インフラとは、サーバーやネットワーク機器などのインフラ構成要素を、変更を加えるのではなく、常に新しいものと置き換えることで、一貫性と再現性を高める運用手法です。
以前のプロジェクトで、構成管理ツールで管理されたサーバーの設定が、担当者によって微妙に異なり、環境差異によるバグが頻発していました。そこで、不変インフラの考え方を導入し、Immutable Infrastructure as Code (IaC) を実現するため、packer を使用して AMI (Amazon Machine Image) を構築し、Terraform でインフラを構築するように変更しました。
これにより、環境間の差異が解消され、デプロイの安定性が大幅に向上しました。また、サーバーの設定変更履歴が AMI に集約されるため、監査が容易になりました。
現役エンジニアによる深掘り解説
メリット
環境差異の解消: 設定変更ではなく置き換えのため、環境間の差異を最小限に抑えられます。これにより、開発環境、テスト環境、本番環境での挙動の違いによる問題を減らすことができます。
ロールバックの容易性: 変更前の状態に戻す場合、古いバージョンのイメージに戻すだけで済みます。迅速な復旧が可能になり、システムの可用性を高めることができます。
監査の容易性: すべての変更は新しいイメージとして記録されるため、変更履歴の追跡が容易です。監査対応にかかる手間を削減できます。
デプロイの高速化: 事前に構築されたイメージを展開するだけなので、デプロイ時間を短縮できます。頻繁なデプロイを行うアジャイル開発に適しています。
デメリット
イメージ作成のコスト: イメージを定期的に作成し、管理する必要があります。イメージ作成プロセスを自動化する必要があります。
リソース消費: 古いイメージを保管する必要があるため、ストレージ容量を消費します。不要なイメージを定期的に削除する運用が必要です。
設定変更の柔軟性低下: ちょっとした設定変更でもイメージを再構築する必要があるため、柔軟性が低下する場合があります。設定変更の頻度を考慮して導入を検討する必要があります。
⚠️ 面接突破のワンポイント
- 具体的なツール名を挙げる: Packer, Terraform, AnsibleなどのIaCツールを具体的に挙げ、どのように不変インフラを実現したかを説明できるように準備しましょう。
- 導入の判断基準を明確に: どのような課題を解決するために不変インフラを導入したのか、導入によってどのような効果があったのかを、定量的なデータを用いて説明できるようにしましょう。


