ASP.NET Webアプリ開発の裏事情エピソード6:Webサーバ管理と闘う!―― 24時間365日、Webサイトを止めないために ―― 小田原 貴樹(ハンドル・ネーム:うりゅう)2005/04/06 |
|
Page1
Page2
|
顧客からのクレーム! いったい、どこが問題なんだ?!
サイト管理を任されている顧客からの突然の電話。何やら、先方は相当怒っている様子である。
顧客:
|
「もしもし! うちのサイトが表示されなくなってるんだけど!」 |
筆者:
|
「ええっ?! ち、ちょっと待ってください。確かめます……」 |
顧客:
|
「困るんだよねぇ! サイトが表示されなかったらお客さんが逃げちゃうじゃない!」 |
筆者:
|
「……いや、こちらでは表示できていますが」 |
顧客:
|
「でも、こちらからは『ページが表示できません』って出てくるけど?」 |
筆者:
|
「試しに、Yahoo!とかほかのサイトを表示してみてもらえませんか?」 |
顧客:
|
「あ……Yahoo!も表示できない……」 |
筆者:
|
「えーと……、ルータという機械がありますよね? そちらを確かめていただけますか?」 |
顧客:
|
「……あ! 白い箱のコンセントが抜けてるね!」 |
筆者:
|
「原因はそれですね。御社のインターネット接続が切断されていただけで、お客さまからは普通に表示できていたはずです」 |
顧客:
|
「いやー、よかった! どーもでしたね!」 |
サイトが表示できない原因は、もちろんサーバだけに限らない。設置されているサーバから、サイトを表示しようとするPCまでの間で、トラブルの原因として代表的なものは以下のとおりだ。
サイトが表示できないトラブルの代表的な原因 |
設置された各種サーバ
サーバが設置されている拠点内のネットワーク
サーバとインターネット間のインフラ
表示しようとしているPCとインターネット間のインフラ
表示しようとしているPCのある拠点内のネットワーク
表示しようとしているPC
上述の会話ではが問題になっていたことになるが、「サイトが表示されない」と端的に表現された場合、どこに原因があるかを突き止めるのはなかなか難しい。この辺りが、インターネット向けWebアプリケーションの運用を難しくしている一因であるのは間違いない。トラブルの切り分けが難しいのだ。
〜のうち、管理者側自身が何とかできるのはとだけであり、については通常、回線業者やプロパイダの問題になるので手の出しようがない。はそもそも管理者の責任ですらない。
筆者の経験上、顧客から「サイトが表示されない」というクレームが入った場合の8割以上が、先方の問題であった。特に、中小企業などシステム管理者が常駐していない顧客の場合には、ちょっとしたことがトラブルの原因となる。後から聞いてみたら「今日、社内の模様替えしたんだよね」なんてことは本当によくあることだ。こうした場合に慌てずに状況確認や原因の推察ができるかどうかが、日々の運用の手間を大きく左右するのはいうまでもない。まぁ、先方が原因の場合には一般のユーザーはサイトが表示できているわけで、大きな問題になることはまずないだろう。
と、顧客のせいにばかりできていれば問題ないのだが、もちろん管理側のトラブルによるクレームも多々存在する。ルータの突然の故障、回線の断線など突発的なトラブルはいつ起こるか分からない。いざというときに素早く対処できるよう、日ごろから機材と心の準備は欠かすべきではないといえる。また、インターネットに接続された環境を、どこにいても準備できるのであれば、外出先からのWebサイトの状況確認が可能になり、トラブルの切り分けはしやすくなる。日々の行動範囲内に、ネットに接続できる拠点の確保を行っておくと何より気分が楽になったりするのでお勧めである。
インターネットは利用者と時間を限らないが、もちろん距離も問わない。トラブルの中でどうにもならないのが、天災によるダウンだ。昨年は台風や地震など、サーバ管理上最も恐ろしい災害の多い年だった。長時間に及ぶ停電やインフラ回線の地域断線などが発生すると、個人レベルでは対応のしようがない。同じ地域内の顧客やユーザーは同情してくれるので問題ないが、遠隔地の顧客やユーザーにとってはただのダウンだったりする。天災についてはそれこそ運任せだが、火事を起こしたりすれば致命傷になるので、筆者などは火の元にけっこうナーバスだったりもするのだった。
何よりも、リスクヘッジ。危険な橋は渡らない。
ここまで述べてきたようにいろいろと、気の休まるときがないWebサーバ管理である。もうこれは根本的な問題なので、解決することはあり得ないと思うが、強いて解決策を挙げるとするならば、大きく分けて以下の3つとなるだろう。
- 信頼できる業者のレンタル・サーバやホスティング・サービスを利用する。
- 耐障害性に優れたネットワークおよびサーバ構成にする。
- 原因となる問題点の切り分け方法を顧客に啓もうする。
身もふたもない解決策だが、とにかく1をお勧めしたい。できうる限りリスクを回避したい(=リスクヘッジしたい)のであれば、やはり専門の業者に委託するに限る。専門業者は人員体制・設備・ノウハウともに、「にわか管理者」とは比べものにならないはずだ。
ASP.NETで作成したWebアプリケーションを預かってくれる業者も徐々に増えてきており、状況はだんだんと良くなっている。低コストで預かってくれるサービスもあるので、顧客との交渉もしやすくなってきたと思う。実際のところ、筆者自身もできる限り、こうしたホスティング・サービスを利用してもらえるよう顧客と交渉している。多少コストが高くついても、何より安心だからだ。また、これまで紹介してきたようなハードウェア的な問題だけでなく、セキュリティ面まで考慮するならば「にわか管理者」の手には完全に余るだろう。
* ASP.NETホスティング・サービス情報は、マイクロソフトサイトなどで紹介されている。 ・MSDN:ASP.NET デベロッパー センター ホスティング情報 |
2に関しては、どうしても自社で預からなければならなかった場合ということになるが、同じ経費を掛けるならば、マシン・スペックなどより耐障害性を意識するべきだということである。無停電電源装置(UPS)くらいは絶対条件として、サーバ・マシンが故障した際などには、必要な役割を短時間で移行できるよう、サーバ・マシンのスペアがあれば望ましい。この点ではやはりサーバ台数が多い方が、いざというときには強いだろう。
本音をいえば、Webアプリケーションを公開するに当たって必要な、サーバや回線などすべてを完全に冗長化できるのが望ましいのだが、莫大なコストが必要になってしまう。筆者の経験だが、95%の稼働率を99%にしようと思うと、5倍以上の機材コストが必要になると思われる。本当に重要な部分から、障害対策を行うのが無難だろう。
最後の3に関しては、上述したようにすべてのトラブルが自社内で発生するわけではないということである。顧客との関係そのものが壊れてしまわないようにするためには、問題点の切り分けが何より重要であり、その問題点に対する責任の所在を理解してもらうことが必要になる。
一番良いのは専門業者に預けることなのは間違いないのだが、外部に預けてしまうと開発上のトラブル解決が面倒になるというデメリットもある。自分で好きなようにサーバ設定を変更できるケースは珍しいため、Webアプリケーションのプログラム上の問題点の切り分けは難しく、度重なるメンテナンスやバージョン・アップが必要なサイトの場合には、そういった点はおっくうに感じてしまう。リスクヘッジを考えなければ、やはり自社内のサーバで運用する方が、そのような開発・メンテナンス作業は楽なので、その辺りは難しいところだ。
ともあれ筆者自身も、また、この連載を読んでくれている読者の大半もWebアプリケーションの開発が本業であって、Webサーバを管理するのは余技にすぎないはずだ。どうしても専門の管理者に比べれば、そのことだけを意識してはいられないため、どこまで経験を積んでも「上手なアマチュア」にすぎないのが現実だろう。解決が困難な問題ではあるが、とにかく危険な橋をなるべく渡らずに済むようにしたいものである。安心して長期出張に行ったり、休みのときには海外旅行に行ったりできる生活が送れるよう、筆者ともども、努力していただければ幸いである。筆者はすでに手遅れっぽいのではあるが……。
INDEX | ||
ASP.NET Webアプリ開発の裏事情 | ||
エピソード6:Webサーバ管理と闘う! | ||
1.Webアプリ開発者が直面するWebサーバ管理の課題 | ||
2.Webサーバ管理に対するリスクヘッジの重要性 | ||
「ASP.NET Webアプリ開発の裏事情」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|