スマホに「ソフトウェアアップデートがあります」と通知が届くことがあります。「今すぐ更新」を押して、数分待てば完了です。
このアップデートは、ウェブサービスを動かしているサーバーにも同じように来ます。ただし、サーバーではボタン1つで終わりません。今回は、インフラエンジニアがバージョンアップの裏側でどんな工程を踏んでいるのかを紹介します。
インフラエンジニアの日常
インフラエンジニアは、システムが安定して動き続けるように維持する仕事です。日々の業務には、たとえば以下のようなものがあります。
- サーバーやネットワークが正常に動いているかを確認する
- エラーや異常が出たときに原因を調べて対処する
- ソフトウェアを新しい版に入れ替える(バージョンアップ)
今回はこの中から、バージョンアップに注目します。
サーバーにもアップデートは来る
スマホに通知が届くのと同じように、サーバーで動いているソフトウェアにも新しい版が公開されます。
新しい版には、以下のような内容が含まれています。
- セキュリティの弱点が修正される。放置すると外部からの攻撃に使われる
- 内部に抱えている不具合が直る
- 新しい機能が追加される
また、古い版はいずれ開発元がサポートを打ち切ります。打ち切られると、問題が見つかっても修正版が提供されなくなります。
つまり、放っておくと「動いてはいるが危険な状態」に近づいていきます。そのため、定期的にバージョンを上げる必要があります。
スマホとサーバーの違い
スマホの場合、通知が来たら「更新」を押して、再起動すれば終わりです。自分しか使っていないため、自分のタイミングで更新できます。
サーバーの場合は状況が異なります。何百人・何万人が同時に使ってる場合、更新の途中でサービスが止まれば、全員に影響が出ます。さらに、新しいバージョンにしたことで今まで動いていた機能が壊れる可能性もあります。
そのため、「ボタンを押して終わり」にはできません。事前にいくつもの工程を踏む必要があります。
バージョンアップに必要な工程
実際にバージョンアップを行うまでに、以下のような工程があります。
1. 必要性の検討
新しい版で何が変わるのかを確認します。セキュリティの修正が含まれているのか、不具合が直っているのか、新機能が追加されているのか。その内容を見て、今のタイミングで上げる必要があるかを判断します。
2. 影響調査
新しいバージョンにしたとき、今動いている機能に問題が出ないかを調べます。たとえば、これまで使えていた機能が廃止されていないか。処理にかかる時間が長くなっていないか。実際にテスト環境で動かして検証します。
3. リリース方法の検討
サービスを止めて切り替えるのか、動かしたまま切り替えるのかを決めます。
止める場合は、利用者に「メンテナンス中」と表示する画面を用意します。動かしたまま切り替える場合は、新旧のサーバーを並行して動かし、順番に入れ替えていく方法を取ります。
4. 手順書の作成
誰が作業しても同じ結果になるように、手順を文書にまとめます。作業の順番、確認するポイント、問題が起きたときの戻し方を記載します。
5. 日時の調整
利用者が少ない時間帯を選び、関係者と実施日時を調整します。深夜や早朝に作業することも多いです。
まとめ
- スマホに来るアップデートと同じように、サーバーにもバージョンアップが来る
- セキュリティや不具合の修正のために、放置せず定期的に上げる必要がある
- サーバーでは利用者への影響があるため、影響調査・リリース方法の検討・手順書作成・日時調整など多くの準備が必要になる
- インフラエンジニアはこうした工程を経て、システムの安定稼働を支えている