
ぬし、許して!「河童の恩返し」に学ぶ、CI/CD導入で炎上を防げ!
サーバー炎上!河童のいたずらで「馬」サービスは危機に瀕する!手動デプロイの悪夢、Permission denied!パスワードロックアウト!怒号が飛び交う中、河童は絶体絶命!果たして、彼はCI/CDの力で奇跡を起こせるのか?男の慈悲と、自動化への道のりは、炎と涙と、高速デプロイの希望に満ち溢れている!週7デプロイへの挑戦、始まる!
河童のいたずらデプロイ!手動作業の沼へGO!
リリース直前の「馬」サービス。男に感謝しているはずの河童は、しかし、いたずら心が抑えきれずにいた。「こいつを川に突き落とせば、大騒ぎになるぞ!」
河童はニヤニヤしながら、「馬」サービスのサーバーに近づき、コマンドを叩き始めた。
# kappa_manual_deploy.sh
ssh production_server
sudo systemctl stop uma_service
sudo cp -r /path/to/new/uma_service /opt/uma_service
sudo systemctl start uma_service
「これで、サービス停止…からの…新規ファイルコピーからの…再起動だ!」河童は得意げに叫んだが、次の瞬間、エラーメッセージが画面を赤く染めた。
Permission denied (publickey).
「なんだこれは!?」河童は慌てて鍵ファイルを探し始めた。その間にも、村人(開発チーム)のイライラは募っていく。
「おい、河童!デプロイまだか!?」
「リリース予定時刻過ぎてるぞ!」
「手動デプロイは遅いんだよ!」
河童は焦りながら、ssh接続を試みるも、今度はパスワードを間違えてロックアウトされてしまった。
Received disconnect from production_server port 22:2: Too many authentication failures
「もうだめだ…」河童は肩を落とした。村人たちは怒り心頭だ。
「河童のせいでリリースが遅れるなんて…!」
「手動デプロイはもうやめよう!」
「自動化が必要だ!」
河童は、村人たちの怒号を浴びながら、深く反省した。自分のいたずらで、みんなに迷惑をかけてしまったのだ。「自動化…か。確かに、毎回手動でやるのは大変だし、ミスも多い。男に教えてもらった恩を、今度は別の形で返さなければ…」河童は静かに決意した。

男の慈悲、CI/CD導入への道!
村人たちはカンカンだ。「河童め!二度と「馬」サービスに近づくな!」鍬を振り上げる村人B。しかし、男は静かに河童の前に立った。「もう二度と、こんないたずらをするな。もし、約束できるなら…」
河童は、男の温かい眼差しに心を打たれた。「もうしません!本当に反省しました!」河童は深々と頭を下げた。男は村人たちに向き直り、「皆さん、落ち着いてください。河童は反省しています。私も、今回の件で、手動デプロイの危険性を改めて認識しました。これからは、自動化システムを導入しましょう」
「自動化…?」村人Aが首をかしげる。「どういうことだ?」
男は説明を始めた。「CI/CDツールを使って、デプロイ作業を自動化します。コードの変更をプッシュするだけで、自動的にテスト、ビルド、デプロイが実行される仕組みです。河童のようなミスも防げますし、リリース速度も格段に向上しますよ。」
河童は、男の説明を聞きながら、自分の愚行を噛み締めていた。鍵ファイルを探し回ったり、パスワードを間違えたり…そんな無駄な時間を費やす必要はなくなるのだ。
「例えば、こんなふうに設定できます」男は地面に木の枝で図を描き始めた。
# .gitlab-ci.yml
stages:
- build
- test
- deploy
build_uma_service:
stage: build
script:
- make build_kappa_no_itazura
test_uma_service:
stage: test
script:
- make test_kappa_reflection
deploy_uma_service:
stage: deploy
script:
- otoko_no_megumi_deploy /opt/uma_service
environment:
name: production
「これはCI/CDツールの設定ファイルの例です。コードをプッシュすると、`build_uma_service` でビルド、`test_uma_service` でテスト、そして `deploy_uma_service` でデプロイが自動的に実行されます。河童のいたずらで学んだ教訓を込めて、関数名にもその名残を残しておきました。」男はニヤリと笑った。
河童は、男の優しさと知恵に深く感謝した。「自動化…すごい!僕も勉強して、男さんの手伝いをしたいです!」
男は頷いた。「いいだろう。一緒に、より良い「馬」サービスを作り上げていこう。」こうして、河童のいたずらがきっかけで、村にはCI/CDの波が押し寄せ始めたのだった。

炎上!そして奇跡の自動化恩返し!
ある晴れた日の午後、男の家から黒煙が立ち上った。「火事だ!」村人Aの叫び声が響き渡る。男の家は、なんと「馬」サービスのサーバーだったのだ!アクセス集中による負荷で、サーバーが燃え上がっていた。
「大変だ!サービスがダウンしている!ユーザーからの苦情が殺到だ!」村人Bが慌てふためく。「河童のいたずらじゃないだろうな!?」村人Cが疑いの目を向ける。
河童は、男の家が燃えているのを見て、心臓が凍りついた。「まさか…こんなことに…」前回のいたずらを深く反省していた河童は、いてもたってもいられなかった。「男さん…僕が…僕が何とかしなければ…」
河童は、男に教えてもらったCI/CDのことを思い出した。「そうだ!自動デプロイだ!」河童は急いで、新しく用意しておいたバックアップサーバーに繋ぎ、Gitプッシュを実行した。
git add .
git commit -m "kappa_firefighting_deploy"
git push origin main
プッシュと同時に、CI/CDツールが起動し、自動的にビルド、テスト、デプロイが開始された。河童は、祈るような気持ちで見守っていた。
# .gitlab-ci.yml
stages:
- build
- test
- deploy
build_uma_service:
stage: build
script:
- make build_kappa_no_itazura
test_uma_service:
stage: test
script:
- make test_kappa_reflection
deploy_uma_service:
stage: deploy
script:
- otoko_no_megumi_deploy /opt/uma_service_backup
environment:
name: production_backup
when: manual # 手動実行設定
すると、バックアップサーバーから大量の水が噴射され、燃え盛るサーバーの火を消し止めた!「消えた!?」村人たちは驚きの声を上げた。「なんだ、今の水は!?」
河童は、安堵の息を吐きながら、村人たちに説明した。「これは、男さんに教えてもらった自動デプロイシステムです!バックアップサーバーに自動的に「馬」サービスをデプロイして、復旧させたんです!」
男は、河童の成長に目を細めた。「よくやった、河童。自動化の力を理解してくれたようだな。」
河童は、男に深々と頭を下げた。「男さん、ありがとうございます!もう二度といたずらはしません!これからは、自動化の力で、村に貢献します!」
村人たちは、河童の働きに歓声を上げた。「河童、ありがとう!」「すごいぞ、河童!」
こうして、河童は、かつてのいたずらっ子から、村のヒーローへと変貌を遂げたのであった。炎上という危機を乗り越え、自動化の恩恵を身をもって体験した村人たちは、CI/CDの重要性を改めて認識し、更なる技術発展へと歩みを進めていくのであった。

河童の恩返しは高速デプロイ!CI/CDの成功物語!
「男さん!大変です!『馬』サービス、また燃えてます!」河童が息せき切って男の家に飛び込んできた。男は驚きのあまり椅子から転げ落ちた。「また!?今度は何だ?」
「原因は…私です…」河童は申し訳なさそうに頭を下げた。「新しい機能をデプロイしたら、予期せぬバグでサーバーが高負荷になって…」。河童は、男にCI/CDを教わってからも、たまに小さなミスを犯していたのだ。しかし、今回は少し大きかった。
「今回は私が悪かった。でも、もう大丈夫!」河童は自信満々に胸を張った。「監視システムを導入し、アラートも設定済みです!そして、デプロイは全て自動化されているので、すぐに復旧できます!」
河童は素早くキーボードを叩き、ロールバックコマンドを実行した。
kubectl rollout undo deployment uma-service
「ほら!簡単です!」河童は誇らしげに言った。CI/CDツールは自動的に以前のバージョンにロールバックし、数分後には「馬」サービスは正常に復旧した。
「すごいぞ、河童!今回は本当に助かった」男は安堵の息を吐いた。「自動化と監視システムのおかげだな。まさに、継続的デリバリーの真髄だ!」
「いえ、これも男さんのおかげです!」河童は深々と頭を下げた。「CI/CDを学び、自動化の大切さを理解しました。もう二度と、手動デプロイで失敗したり、いたずらで迷惑をかけたりしません!」
男は笑顔で河童の頭を撫でた。「よし、河童。これからも一緒に『馬』サービスを成長させていこう。目指すは、週7デプロイだ!」
「週7デプロイ!?」河童は目を丸くしたが、すぐに決意を新たにした。「はい!頑張ります!」
こうして、河童と男は、CI/CDの力を駆使し、「馬」サービスを安定稼働させながら、新たな機能開発に励む日々を送ることになった。時々、河童は新しいCI/CDツールを試しては、男に「これ、どうですか?」と相談する。その度に、男は苦笑しながらも、河童の成長を嬉しく思っていた。しかし、心のどこかで、こうも思っていた。「週7デプロイって…本当にできるのか?まあ、河童のことだから、何かやらかしてくれるだろう…」
