
新卒エンジニアが知らない、昔のデプロイは超面倒だった話
こんばんは!IT業界で働くアライグマです!
現在のエンジニアにとって、デプロイはワンクリックで完了するもの、あるいはGitのブランチをプッシュすれば自動で実行されるものという認識が一般的かもしれません。GitHub Actions、GitLab CI/CD、Jenkinsなどのツールが普及し、エンジニアが手作業でデプロイを行うことはほとんどなくなりました。
しかし、2000年代から2010年代初頭にかけてのデプロイは、手作業が多く、時間もかかり、ちょっとしたミスで大惨事になることが頻繁にあった という、今とは全く異なる世界でした。
本記事では、昔のデプロイがどれほど面倒だったのか を振り返り、技術の進化がエンジニアの生産性をどのように向上させたのかを詳しく解説します。
昔のデプロイはどんな流れだったのか
今でこそ、GitHubにコードをプッシュすればCI/CDが走り、本番環境へ自動デプロイされる ことが当たり前ですが、以前はそのような仕組みがなく、すべてが手作業で行われていました。以下は、かつてのデプロイ手順の一例です。
サーバーへの手動ログインとファイル転送
- SSHで本番サーバーにログイン
scp
コマンドやFTPクライアントを使ってソースコードをアップロードtar
で固めたファイルを解凍し、手作業で配置
この時点で、転送漏れや誤ったファイルの上書きが発生することが頻繁にありました。また、SSHで直接サーバーに入るため、セキュリティリスクも非常に高かったのです。
データベースの手動更新
mysql -u root -p
で手動ログインし、SQLファイルを実行ALTER TABLE
などのスキーマ変更を手作業で適用- 開発環境と本番環境の差分を人力でチェック
ここでのミスが発生すると、本番データが破壊される 可能性がありました。誤って DELETE FROM users;
を実行し、全ユーザーを削除してしまう事故も実際にありました。
設定ファイルの手作業変更
.env
やconfig.php
を手動で編集- 環境ごとに異なる設定を適用する必要があった
例えば、開発環境用のAPIキーを本番環境に適用してしまい、本番環境が開発環境のデータに接続してしまう というようなミスも頻発していました。
サーバーの手動再起動と動作確認
apachectl restart
やnginx -s reload
を実行- アクセスログやエラーログを手動で確認し、不具合がないかチェック
デプロイ後にサーバーの再起動を忘れると、新しいコードが反映されず、バグ修正が適用されていないことに気付かない という事態もよくありました。
昔のデプロイでよくあった失敗パターン
ファイルの上書きミス
手作業でFTPクライアントを使ってファイルをアップロードしていたため、誤って最新のコードを古いバージョンで上書きしてしまう事故 が頻発していました。
本番DBを誤って更新
開発環境と本番環境の接続情報を間違えて、本番環境で DROP TABLE
を実行してしまうミスもありました。バックアップがなければ、データが完全に消失するという最悪の事態 にもなりかねません。
設定ファイルの変更ミス
開発環境と本番環境の設定ファイルを間違え、本番環境で開発用のAPIキーを使ってしまう などの事故も発生していました。
サーバー再起動忘れ
デプロイ後に systemctl restart apache2
や nginx -s reload
を実行しないと変更が反映されないため、数時間後に「変更が適用されていません!」と問い合わせが来る ことも珍しくありませんでした。
現代のデプロイがここまで進化した理由
CI/CDの導入でワンクリックデプロイ
今では、GitHub ActionsやGitLab CI/CD、Jenkins などを使うことで、Gitリポジトリにコードをプッシュするだけでデプロイが自動化されます。
Blue-Greenデプロイやカナリアリリースの普及
本番環境に影響を与えずに新バージョンをデプロイする手法(Blue-Greenデプロイやカナリアリリース)が一般的になり、エラー発生時に即座にロールバックできる 仕組みが整いました。
Infrastructure as Code(IaC)で環境管理を自動化
TerraformやAnsibleなどのツールを用いることで、サーバーの設定やデータベースの構成もコードで管理できる ようになりました。これにより、手作業での設定ミスが大幅に減少しました。
まとめ:技術の進化に感謝しよう
現代の新卒エンジニアは、簡単にデプロイできる環境が当たり前 になっています。しかし、かつてのエンジニアたちは、デプロイ作業だけで数時間かかることもザラ でした。
技術の進化により、エンジニアの負担は大幅に軽減されましたが、だからこそ 過去の苦労を知ることで、現代の開発環境のありがたみを理解することができます。
デプロイの自動化が進んだことで、エンジニアはより本質的な開発に集中できるようになりました。今後も技術の進歩を活かしながら、より良い開発環境を築いていきましょう。