この記事は ex-crowdworks Advent Calendar 2024の5日目の記事です。
はじめに
今年、株式会社クラウドワークスを退職した@nisyuuです。好きなすかいらーくHDのブランドはバーミヤンです。
エンジニアとしてクラウドワークステック(旧クラウドテック)というフリーランスと企業をマッチングするエージェントサービスを開発していました。
テック開発チームにいたときは、2年ぐらいの間メンテナンス作業を担当していました。
メンテナンスは、RailsのメジャーバージョンアップやOSのアップデートなどサービス全体に関わるものも多かったですが、作業後に障害が起きて利用者が影響を受けてしまうことはほぼ0でした。
数多くあるITサービスの中では稀に見る障害の少なさではないでしょうか。
今回は、障害を圧倒的に起こさないようにするためのノウハウを紹介します。
有料級なので他言無用でお願いします🤫
なぜ障害を起こさなかったのか
障害を起こさなかったのは、ベテランエンジニアでマネージャーのアドバイスによるものが大きかったと考えています。
そのアドバイスとは、
当日は何も考えず手順に従うだけで作業が終わるようにしておく
というものです。
メンテナンスの担当は初めてでしたが、メンテナンスを安全に実施するためのドキュメント作成方法から作業方法など数多くのアドバイスをいただきました。
障害率ほぼ0の原点はここにあると考えています。
メンテナンス前にやること
メンテナンスまでにやることは当日の手順書作成だけでなく、メンテナンス当日までの手順書も作成します。
さらに、ドキュメントを作成するだけでなくステージング環境を使った予行演習をしてください。
予行演習は成功するまで実施します。なぜなら、成功しなければ本番でも成功しないからです。
当日までの手順書
メンテナンス実施日時の確定、参加者の確定、影響範囲の調査、社内のステークホルダーへのお知らせ、サイトへのお知らせ掲載、環境変数の設定、デプロイ後に本番環境でテストするためのテストデータ用意など事前にできることは全てリストアップし作業を済ませます。
当日の作業を無くすぐらいの気持ちで取り組んでください。
メンテナンスの実施日時は、サービス利用者の少ない日時、時間帯にしましょう。時間帯別の利用者はGoogle Analyticsで確認できます。
当日の手順書
当日の手順書には、メンテナンスモードへの切り替えやデプロイの仕方、メンテナンス成功の判断基準、失敗時のロールバック手順などを記載します。
ページを開いて作業する工程があればリンクも手順書に記載してください。
何も考えずに上から順番に実施すると、メンテナンスが完了するぐらいに仕上げましょう。
メンテナンス成功の判断基準は、デプロイ後に問題なく稼働することを確認するためのチェックリストを入れておきます。
予行演習
メンテナンス前は作り込んだ当日の手順書を使い、ステージングを使った予行演習でさらに手順書を確実なものにするなどをしていました。
経験上、予行演習はメンテナンスを成功させるための圧倒的手段です。予行演習を通して手順書の不備を発見できたこともあるため、やらない理由はないと実感しています。
メンテナンス当日
当日は事前に作成していた手順書の通り進めます。
想定外の事態が発生し、決められたメンテナンスの時間帯に終わらない可能性が出てきた場合はすぐにメンテナンスを止めてください。
必要があればロールバックの手順を実施します。
問題なくデプロイができた後は、メンテナンス成功の判断基準を達成しているか確認します。
達成できて入れば、ステークホルダーにメンテナンス完了の通知をすると無事にメンテナンスは完了です。
おわりに
メンテナンス後に障害が起きてしまうのは間違いなく準備不足です。
準備不足は意思を持って取り組むことで、必ず補えるものです。
世間では今年も様々なメンテナンスが失敗していました。
こんなことや
こんなことなど
来年は、メンテナンス成功絶対達成でよろしくお願いします🫵🏻
頼むよ、みんな。来年もよろしく。