
その昔引っ越しのバイトをしていたおかげで、引っ越しスキルが極めて高い、ユゲタです。
引っ越しをする時に、引っ越し屋さんに、お願いするのが一般的ですが、ユゲタの場合は、レンタカー屋に言って、2トン(または4トン)トラックを借りて、自分でチャッチャと済ませてしまえるので、これまで引っ越し屋さんに頼んだことはありません。
引っ越し業界あるあるなのではないでしょうか?
人手が欲しいというニーズもあるかもしれませんが、自分のモノを他人に任せられないというのも心理的にあって、引っ越し業者の人は、ほぼ身内で引っ越し完了してしまうでしょう。(ホントはどうか知らんけど)
引っ越しシーズンだからと言って、そんな話をブログに書きたいわけではなく、インターネットサービスを、システム運用をしている人は、定期的にメンテナンスを行ったり、サーバーのグレードアップのために、お引っ越しをする場合があります。
ここでのトラブルは笑えるほどよく発生しますが、最近気が付いたんですが、バックアップアルゴリズムを理解している人は、このサーバー引っ越し作業に失敗しにくいというポイントがあるようです。
Web開発の人が苦手なサーバー領域の話になりますが、インターネットシステムを扱う開発者にとっては必須スキルと考えられるこの引っ越しスキルについて、ブログに書いてみたいと思います。
システムでのトラブルはデータ関連が9割
こんな統計を取っている会社や団体はほぼないと思いますが、本番におけるシステム障害がデータトラブルで、その中の多くは、メンテナンス中に発生しているようです。
「よく○時から○時の間はメンテナンスを行うのでシステムアクセスできません」
というようなお知らせが届いて、サービス運用者がメンテナンス作業を行いますが、その時に、予期せぬ事態が発生して、終了予定時間までに作業が終わらずにその予定時間をすぎて初めて
「作業時に予期せぬ障害を見つけました」
というようなメッセージと共に、不毛なシステム障害対応時間に突入してしまうことがあります。
そして実際に予期せぬ障害ってどんなものがるかと言うと、機器トラブル、移設したサーバーで正常動作しないトラブル、想定できていなかったトラフィック障害によるネットワークトラブル・・・
なんにせよ、障害は障害ということで、担当者は、必死な思いで対応をせざるを得なくなります。
このメンテナンス作業をチームで行っていた場合は、一気に戦闘モードに入る雰囲気になりますが、一人で行っていた場合、とんでもない深い谷に突き落とされた気分になります。
まあ、こうした障害のほとんどがデータやデータベースに関連するモノがほとんどであると言うことは、現場の人間はよく理解しているでしょう。
何故データは障害を引き起こしやすいのか?
プログラムというのは、基本的に、毎回同じ答えを返すように設計されて、検証を繰り返されてリリースされるので、凡ミスレベルや、複雑な設計によるプログラムでなければ、
それまで正常に動いていたプログラムは、同じ環境にしておけば、障害を出す確率はほとんどありません。
でも、データは、利用者が自由に投稿できてしまうものや、リアルタイムな情報を保持するために、色々な仕組みが必要になります。
そして想定外のほとんどは、この想定していないデータが登録されてしまったと言うケースや、想定外にデカいデータが登録されてしまった、
などのように、データは、量と質が読めない、まさに生き物といっても過言ではありません。
もちろん、データ登録仕様をしっかりと考えられたデータベースであれば、仕組みによるトラブルって起きづらいですが、
ユゲタも経験した事があるのは、サーバーのストレージから大容量のデータを削除しようとした時に、めちゃくちゃ時間がかかるという事を知らなかった頃に、
サーバーアクセスの量が削除スピードを上回って、データが上限値を超えてしまったと言う経験があります。
パソコンを使っていて、数ギガぐらいあるでっかいデータをゴミ箱に放り込んで、「ゴミ箱を空にする」を選択したら、ちょっとしたダイアログがでるけど、すぐに削除されるので、
削除は簡単にできると思っていたんですが、実は、ファイル数が多いデータを削除するという処理は、データを新規登録するという処理よりもIO負荷が高く、ストレージアクセスタイムが半端なくかかってしまうケースがあります。
サーバーなどを運用していると、この点がもどかしくて、ストレージをこまめに分けて、新旧のバージョン管理をしておいて、それぞれ一括削除をするタイミングで、フォーマットをするという斬新な処理を遂行しているケースもあります。
このように、データを扱うのって、実際にやっていると、非常に大変なのはよくわかりますが、サーバーエンジニアって、プログラマーと言われる人材よりもはるかに少ないので、こうした情報を共有する相手も少ないのが現状ではないでしょうか?
引っ越しに必要なスキルは、バックアップに必要なスキルにほぼ詰まっている
冒頭の話に戻りますが、システムを引っ越しする時に、サーバー入れ替えなどをする時に、一番気を使うのが、データ(データベース)である事がわかったところで、
システムのサーバー入れ替えや引っ越し作業を行う場合に、非常に重要なのがデータの部分であることも理解できたかと思います。
そして、データを扱うスキルは、バックアップスキルというのにほぼ集約されています。
バックアップスキルというのはどういうものかというと、システムを別環境で復元できるように、ちゃんと構成を保ってデータやシステム全体を保存するという仕組み作りの事です。
バックアップアルゴリズムには、全部、差分、増分・・・などのように、本当にプログラムのアルゴリズムのように方法があり、
容量が無駄にならないように、且つ、システムが安定的に復元できるということを担保するために、こうした仕組みを知っておく必要があります。
※詳しく知りたい人は、下記URLをごらんください。
https://www.fujifilm.com/jp/ja/business/data-management/data-archive/tips/efficiency/005
このように、データも含めたバックアップで、ちゃんとしたアルゴリズムを理解していない場合に、必ずシステム障害が発生してしまいます。
そして、システムが正常に復元できない場合に大きな障害に発展してしまうでしょう。
引っ越しは頭脳プレイだ!
実際の肉体労働でもある引っ越し作業も実は思考パズルをやっているような側面があります。
荷物をトラックに積み込む時には、テトリスのように、どのサイズのものをどの組み合わせで積み込めば、効率的に荷台に治るか・・・
どういう手順で運ぶのが、最も運ぶ回数を減らす事ができるのか、重いものと軽いもの、どちらを優先に作業を進めるのがいいのか・・・
他にも片付けテクニックや、収納テクニック、運搬テクニックなど、さまざまなテクニックが存在しますが、こうしたスキルが合わさって
効率的な引っ越し作業が進められるという事を考えると、肉体労働ではなく、立派な頭脳プレイであるという事も、経験者なら頷けるでしょう。
システム運用と、引っ越し作業は、同じようにより思考をしっかりとして、トラブルを極限まで無くせる方が、質が高いという風に考えられますね。
あ、でも、よく考えると、世の中全てのことが、頭脳プレイであるとも言えるかもですね。
他にもこじつけの頭脳プレイが思いつきそうなので、思いついたらまたブログ書きます!
0 件のコメント:
コメントを投稿