クラウドサービスを支える大規模メンテナンスの舞台裏
2024年12月10日 火曜日
【IIJ 2024 TECHアドベントカレンダー 12/10の記事です】
優秀な寿司職人が毎日包丁のお手入れをし、競りで新鮮な魚介類を仕入れて、より良いお寿司を出すために日々研究をするのと同じように、安定したクラウドサービスを提供し、サービスの品質維持・向上するためには、日常のお手入れが欠かせません。
私の担当している IIJ セキュア MX サービス(以下、SMX)でも、おおよそ月に1回くらいの頻度で計画メンテナンスを実施しており、数年に一度くらいの頻度でやや大規模なメンテナンスを計画することがあります。
普段、SMX のメンテナンス業務は、必ず「作業者」+「確認者」のペアで実施し、開発担当者がリモートでも見ています。大規模なメンテナンスになると変更箇所が多くなりますから、多くの作業を並列で実施することで、限られたサービス停止時間内に完了できるよう、かつ、作業に伴うリスクを最小限にできるよう、事前に作成する作業手順書で工夫を凝らしています。
また、IIJ の社内には作業者の入出力をリアルタイムに共有できる仕組みがある(※1)ので、「作業者」「確認者」「開発者」のそれぞれは、「今どんなコマンドが打ち込まれようとしているのか」、「コマンドを実行してから返ってくるまでの時間や結果はどうだったのか」を感じ取ることができるのですが、「オフィス」+「リモート」のハイブリッドワークではオフィス現場の雰囲気が分かりません。(※2)
そこで、メンテナンス時間中に Teams 会議で画面共有をしつつ、さらにメンテナンス指揮を取るメンバーが、全ての作業を俯瞰して見れるように、1つの Teams 会議にすべての画面を共有し、オフィスの音声もチーム内でライブ配信するという取り組みをしてみました。作業を三並列で実施していたときは、このような感じです。
配信は OBS (Open Broadcaster Software) を使っています。(※3)
ややまどろっこしいのですが、私がすべての作業用 Teams 会議に入って、それぞれのウィンドウをキャプチャして再配信しました。
このメンテナンスをしたあとの録画を見ていて、
- 当時の時刻が分からない
- 作業進行・結果を共有するチャットを同時に見たい
と思い、次のメンテナンスでは、このような画面構成にしてみました。
OBS のレイアウトはこんな感じです。
中央右上にある時計はスクリーンセーバーの時計、デジタル時計はターミナル内で次のようなワンライナーを表示したものです。
while true; do DATE=`date "+%H:%M:%S"`; echo -ne "${DATE}"; sleep 1; echo -ne "\r"; done
なお、音声の配信は最初は社用スマートフォンを使っていたのですが、遠くの声をうまく拾わなかったのでノート PC のマイクを使いました。しかし、それでもやはりうまく拾わないケースがあったのでどうしようかと思っていたところ、Jabra Speak を 2台連結して無線接続し、Jabra Speak と PC を Bluetooth 接続することで、マイクとスピーカーを離れた場所に設置できることを社内の人に教えてもらいました。こんな感じです。
これでオフィスの会話も Teams でクリアに聞き取れるようになりました。
メンテナンス確認中にボソっと喋った言葉や、想定より時間が掛かっている・うまく進行している、といった雰囲気をリモートの開発者も感じ取れるようになりましたので、そのときに適切な調査や先回りをすることもできるようになり、メンテナンスの品質向上に繋がったと信じています。
じつはここに掲げた画像は 1〜2年前に実施したうちの数回のメンテナンスの様子なのですが、法人向けメールサービスのアカウント数1000万突破記念に、これまでの思い出を振り返る でも紹介した通り、この国内最大級のメールサービスを大きな事故なく完遂しました。クラウドサービスは「いつでも使える」ことが当たり前ですが、この「当たり前」を実現するためには、ここで紹介したこと以外にも、多くの工夫と知恵と苦労があります。
なお、以上で紹介してきた内容はサービスの停止を伴う比較的大規模なメンテナンスですが、サービスの停止を伴わない品質維持に不可欠な作業やパフォーマンスの向上、サービスの継続的な信頼性を向上するための作業などは、じつは月 1回以上の頻度で実施しており、通常お客様が気づくことはありません。
こうした作業でも、毎回作業のリスクと安全性をチェックし、変更管理を徹底することはもちろんのことですが、やはり最も大切なのは、日常のメンバーのスキルアップです。IIJ ではそうした取り組みを積極的に支援しているほか、私の所属するアプリケーションサービス部でもエンジニア発信で勉強会をしていたり、業務のスキマ時間に「こんなものがあるよ」と小ネタの紹介があったりして盛り上がります。
日々の「運用」は見えづらい縁の下の力持ち的な存在ですが、本記事で少しでも身近に感じてもらえたら幸いです。
IIJ では運用エンジニアを募集しています! こうした大規模な設備運用の裏側で、どんな工夫や知恵があるか興味ありませんか? 少しでもそう思ったら、ぜひ、募集要項もご覧ください!!
https://js01.jposting.net/iij/u/job.phtml?job_code=196 (苦労もあるけど楽しいよ)
クラウドサービスは終わりのない業務ですが、これからも安定したサービス運営を実現するために邁進していきます。
脚注
- screen(1) コマンドの multiuser をイメージしていただくとだいたいそれと同じようなものです。異なるのは作業者のみがコマンドの入力を行え、それ以外の参照者はターミナルの入出力の読み取りのみができるようになっています。[↑]
- 「ハイブリッドワーク」という言葉が出てくる前から、少なくとも私が 2007年に入社した当時からこのような体制でメンテナンスを実施していました。[↑]
- OBS は Windows、Mac、Linux に対応しており、私の環境は Linux (openSUSE Leap) です。[↑]
Xのフォロー&条件付きツイートで、「IoT米」と「バリーくんシール」のセットを抽選でプレゼント!
応募期間は2024/12/02~2024/12/31まで。詳細はこちらをご覧ください。
今すぐポストするならこちら→ フォローもお忘れなく!