見出し画像

【IT小説】IaC(Infrastructure as Code)の光と影 〜自動化が招いた大惨事〜

登場人物

佐藤 ユウキ(27歳)

  • 職歴: 大手SIerのクラウドエンジニア、AWSを中心としたインフラ構築を担当

  • 性格: 自信家で楽観的、最新技術を追い求めるタイプ

  • 特徴: コードを書くのが好きで、手作業を嫌う。何でも自動化したがる。

  • 悩み: マネジメントに興味はないが、このまま技術者として突き進んでいいのか悩んでいる。

橋本 タクミ(35歳)

  • 職歴: クラウドインフラのベテランエンジニア、AWS認定資格を複数保有

  • 性格: クールで冷静、実力主義者

  • 特徴: Terraform や Ansible などのIaCツールを使いこなし、DevOpsの導入にも詳しい。

  • 口癖: 「お前、テストコード書いたか?」

田中 誠一(50代)

  • 職歴: SIerのインフラ部長、手動構築の経験が豊富

  • 性格: 保守的で慎重派

  • 特徴: GUIでの操作を好み、IaCを信用していない。「人の手で作業するのが一番安全」と信じている。

  • 悩み: IaCの流れについていけず、時代遅れと呼ばれ始めている。


第1章:IaC爆誕、そして爆発

AWS移行プロジェクト、始動!

「おい、佐藤。このプロジェクト、Terraform でインフラを全部構築しろ」

そう告げたのは、ユウキの先輩である橋本だった。

「え、Terraform ですか?」

「そうだ。Infrastructure as Code(IaC) の実践だ。もう手作業のインフラ構築は古い。コードを書いて、バージョン管理して、環境を再現できるようにしろ」

ユウキはテンションが上がった。Terraform なら、AWSのリソースをコード化し、ボタン一つで環境を構築できる。これまでのように手作業でEC2をポチポチ立てる必要はない。

「ついに俺の時代が来たな……!」

AWS移行プロジェクトは、社内のオンプレミス環境をクラウドに移行する重要な案件だ。成功すれば、社内のインフラはすべてクラウド上で動くことになる。

ユウキは興奮しながらキーボードを叩いた。

resource "aws_instance" "web" {
  ami           = "ami-12345678"
  instance_type = "t3.micro"
  tags = {
    Name = "WebServer"
  }
}

「ふふっ、こんなに簡単にサーバーが立つなんてな!」

ユウキは自分の成長を実感していた。しかし、この時、彼はまだ知らなかった。

IaCの恐ろしさを……。


リリース前日:Terraform Apply、地獄の始まり

リリースの前日。

「さて、最終テストをしておくか」

ユウキは Terraform のコードを整え、terraform apply を実行した。

tf apply -auto-approve

数分後、AWSコンソールを確認する。

「……おお! ちゃんとサーバーが立ってる!」

Terraform のおかげで、数秒で環境が構築された。これがIaCの力だ。

「よし、明日のリリースも問題なしっと!」

そう思いながら、彼はSlackに報告を送った。

Terraformで環境構築完了しました! 明日のリリースも問題なさそうです!

だが、彼は見落としていた。

削除の罠を……。


リリース当日:IaCの闇が牙をむく

翌日、リリースが始まった。

「では、Terraform を実行します!」

ユウキは得意げに Terraform を適用する。

しかし、その瞬間、社内の監視ツールが異常アラートを発した。

「ん? 何だこれ……?」

Slackに通知が飛び交う。

【警告】AWSリソースが急速に削除されています!!

【緊急】EC2、RDS、S3のリソースが全て削除されました!

【悲報】バックアップも消えました。

「……え?」

AWSコンソールを確認すると、

すべてのリソースが消えていた。


Terraformの罠

「お前、何をした?!」

田中部長が青ざめた顔で詰め寄る。

「え、俺はただ terraform apply を……」

「terraform destroy のオプションが入ってるぞ!!」

Terraform はコードと現実の状態を比較し、コードにないリソースを削除する。

ユウキはデプロイ前に、不要なリソースを削除するためにterraform destroyを試し、その後 apply した。

だが、バックアップ用のS3バケットの記述がコードに存在しなかった。

その結果——

IaCがすべてのリソースを削除した。

「えっ……嘘だろ……?」

ユウキの顔から血の気が引く。

橋本が画面を覗き込み、呆れた声を上げた。

「……お前、terraform plan ちゃんと確認したか?」

「……してません……」

「お前、IaCを舐めてるだろ?」

IaCは魔法ではない。適切に管理しなければ、破滅を招く。

その現実を、ユウキは身をもって知ることになった……。



第2章:IaC復旧作戦、そして覚醒

混乱のオフィス、絶望のエンジニアたち

ユウキの頭の中が真っ白になった。

「マジか……俺がやらかしたのか……?」

Slackは大騒ぎだ。

【至急】AWSのリソースが全消失!!

【誰か】バックアップからの復旧を試みてください!

田中部長が吠える。「お前の自動化のせいで、会社のシステムが全部吹っ飛んだんだぞ!」

「す、すみません……」

ユウキの手が震えた。冷や汗が背中を流れる。

橋本が静かに近づき、モニターを覗く。

「ユウキ、落ち着け。復旧手順を考えるぞ。」

ユウキは力なく頷いた。


Terraformの力で復旧できるのか?

「まず、どこまで消えた?」

橋本の質問に、ユウキはAWSコンソールを開く。

「EC2も、RDSも、S3も……全部です……」

「バックアップは?」

「……Terraform のコードには書いてませんでした……」

橋本がため息をつく。「お前、バックアップは手動でも残しておけって言ったよな?」

ユウキは顔を伏せる。

「でも、Terraform のStateファイルがあるなら、ある程度は復旧できる。」

Stateファイルとは、Terraformが管理するインフラの状態を記録したファイルのことだ。

「やってみます!」

ユウキは希望を取り戻し、Terraform の状態を確認するコマンドを叩いた。

tf state list

緊急対応、デプロイ再試行

「Stateファイルに、まだリソースの情報が残ってます!」

「よし、それを元に Terraform を再適用するぞ!」

tf apply -auto-approve

「頼む……頼むから戻ってくれ……!」

数分後、AWSコンソールにリソースが少しずつ復元されていく。

「いける……いけるぞ!」

Slackが更新される。

【速報】EC2とRDSが復旧しました!


最後の難関、データの復元

「……だが、データは戻らない。」

ユウキの心が冷えた。システムは戻っても、S3に保存されていたデータは消えたままだ。

「……オフサイトバックアップはないのか?」

田中部長がため息をつく。「あるが……昨日の状態だ。」

「それでも戻すしかない!」

ユウキはS3の復元コマンドを実行した。

aws s3 sync s3://backup-bucket s3://main-bucket --recursive

「……これでどうだ!」

数分後、Slackに通知が飛んだ。

【確定】データの復元完了!


ユウキの成長、IaCの教訓

「ふぅ……何とか終わった……」

ユウキはぐったりと椅子に沈んだ。

「お前、IaCの怖さを理解したか?」

橋本の言葉に、ユウキは深く頷いた。

「次からは、**terraform plan を実行し、しっかりとバックアップも取ります……!」

「その意気だ。」

田中部長も渋い顔をしながら、呟いた。

「……まあ、今回は勉強代ってことで許してやる。」

ユウキのIaCの旅は、まだ始まったばかりだった。


第3章:復旧の戦士たち

ここから先は

2,957字
この記事のみ ¥ 390
PayPay
PayPayで支払うと抽選でお得

この記事が気に入ったらチップで応援してみませんか?