![]() |
ASP.NET Webアプリ開発の裏事情エピソード6:Webサーバ管理と闘う!―― 24時間365日、Webサイトを止めないために ―― 小田原 貴樹(ハンドル・ネーム:うりゅう)2005/04/06 |
|
Page1
Page2
|
|
外出先にて、自社のデザイナーからの突然の電話。その瞬間、嫌な予感が脳裏をよぎる。
|
筆者:
|
「もしもし? どうした?」 |
|
デザイナー:
|
「……どうも、預かっているサイトが止まってるっぽいんですけど……」 |
|
筆者:
|
「げ!! どういう表示になる?」 |
|
デザイナー:
|
「よく分からないエラー画面が表示されます」 |
|
筆者:
|
「『ページを表示できません』とかっていうメッセージではない?」 |
|
デザイナー:
|
「違います。何かアプリケーション・エラーがどうしたみたいな……」 |
|
筆者:
|
「データベース・サーバがハングアップしてる! すぐに電源を入れ直してほしいんだけど!」 |
|
デザイナー:
|
「ど、どのサーバか分かりません!」 |
|
筆者:
|
「……なんていうか、ラックの一番左の黒いやつ!」 |
Webアプリケーションに限らず、昨今はサーバと連携して動作するソフトウェアが増えてきており、サーバ管理の必要性は増す一方である。ただ、Webアプリケーションの開発・運用におけるサーバ管理の難しさは、主に企業内部で使用する業務系アプリケーションの比ではないだろう。特にインターネット上で公開するようなWebアプリケーションの場合には、24時間/365日稼働していることが原則として要求されるため、運用においてはナーバスにならざるを得ない。開発終了後、どういった環境で運用を行うのかは非常に大きな問題である。
稼働時間の問題以外にも、そのようなWebアプリケーションの運用では、「サーバの台数がどうしても多くなってしまう」というシステム構成の課題が存在する。まず、最低限Webサーバが必要なのは当然として、データベースが絡んでいればデータベース・サーバが必要になる。ここまでがミニマムなシステム構成だとして、ドメインを解決するためにDNSサーバが必要になることは多々あるし、メールの送信が入るとメール・サーバも必要だ。
そんなこんなで、あっという間にサーバが4台。開発用にテスト・サーバが欲しいなぁとか、すべてのサイトを1台のWebサーバに配置するのはパフォーマンスが……などと考え始めれば際限がない。気が付けば、事務所内にはサーバが乱立し、夏場はクーラーなしでは生きていけない環境が出来上がっていたりする。
サーバの役割を明確に切り分けるためには、サーバの台数を増やす方が望ましいのだが、台数が増えれば増えるほど管理の複雑さ・煩雑さも増加する。そうするとハードウェア的なトラブルが発生する確率も高くなるわけで、冒頭の会話のような泥臭いドタバタ劇も時として繰り広げられることになる。
これは私見だが、サーバ管理面においてほかのWeb系システム言語と比較した場合、ASP.NETを利用した方が基本的には開発も運用も容易になると考えている。統合開発環境(Visual Studio .NET)を利用することで、デバッグなどでもサーバのことをほとんど意識する必要がないためだ。例えばASPで開発を行った場合には、デバッグのためだけであってもWebサーバとDBサーバの設定を行って、その都度ファイルをコピーしなければならなかった。しかも、デバッグそのものもエラー画面を確認しては修正する、といった状況でブレークポイントを設定したりということが難しかった(不可能ではなかったが)。
また、運用面においても、Windowsサーバを利用している前提であれば、配置・公開ともにそれほど手間がかかる作業はないだろう。基本的にASP.NETで開発されたアプリケーションは、開発環境で動作していれば、実際のサーバにはファイルをコピーするだけで動作する。コンパイルなどは、変更があるたびにサーバ側で自動的に実行されるため、意識をする必要がない。データベースを利用する場合には、必ずODBCの設定が必要であったASPなどに比べると、ASP.NETは配置・メンテナンスともに容易になった。ただし、新しい技術だけにトラブルが発生した場合の原因追究が難しい点や、ASP.NETに対応したレンタル・サーバやホスティング・サービスがそれほど普及していないという問題は存在する。
ということで、今回はWebアプリケーションの構築とは切っても切り離せない、サーバ管理上の悪戦苦闘をほんの一部だけご紹介しよう。一昔前であれば、プログラマとサーバ管理者の間にはきっちりとした線引きがあったように思われる。だが、インターネットの普及が進むにつれ、プログラマにもサーバ管理の知識が必要とされてきている。人海戦術など不可能な中小の現場における、「にわか管理者」の悲哀が伝われば幸いである。
メンテナンスできない? お盆・正月が正念場!
|
デザイナー:
|
「……なんかカリカリ、音がしてませんか?」 |
|
筆者:
|
「……うん、異音がしてるね。サーバの辺りから」 |
|
デザイナー:
|
「大丈夫なんですか?」 |
|
筆者:
|
「大丈夫じゃないかもしれないんだけど、気付かないふりをしてたんだよ……」 |
|
デザイナー:
|
「気付いたんなら、何とかしましょうよ!」 |
|
筆者:
|
「うーん……でも、いまのところ動作が止まったりはしてないんだよね」 |
|
デザイナー:
|
「でも、ヤバイでしょう?」 |
|
筆者:
|
「いま(夕方)サーバを落として、メンテナンスするのはねぇ……」 |
|
デザイナー:
|
「そうですね。サイトを見ている人も多いでしょうし……」 |
|
筆者:
|
「……む、むぅ。夜の2時くらいにメンテナンスするかぁ……」 |
|
デザイナー:
|
「それまで何も起きないといいですね……」 |
インターネット向けWebアプリケーションの運用において、何よりも重要なのは「稼働している」ことだ。何かしらのトラブルで停止してしまった場合には、とにかく復旧させることを優先しなければならない。
しかし、突然動作が停止するようなトラブルが発生することはまれであり、そこに至るまでの日々の運用の中で、何かしらのサインが表れているのが普通だ。上述の会話のような異音というのも1つのサインであるし、ハードディスクの動作ランプの点滅ぐあいなども1つのサインとなるだろう。
そうしたサインが読み取れれば、トラブルが発生する前にメンテナンスを行い、障害を予防したいところなのだが、「稼働していること」が最重要なのでメンテナンスのためとはいえ、おいそれとWebサイトを停止させるわけにはいかない。そうなると自然に、アクセスの少ない深夜などにメンテナンスをしなければならなくなる。
24時間稼働が原則なのだが、どうせサイトを停止しなければならないのなら、顧客の業務が稼働している昼日中や、アクセスが集中しやすい時間帯を避けるのは当然の心理といえるだろう。特に、せっかく動作しているサーバを止めて再起動させるのには勇気がいる。再起動のプロセスでトラブルが発生し、起動しなくなってしまうことはよくあることなので、そういう事態も想定するなら深夜に作業する方が、気が楽なのだ。
何とも情けない話ではあるのだが、同様の理由でゴールデン・ウィーク、盆、正月などの長期連休は大きなメンテナンスをする最大のチャンスとなる。アクセスも比較的少ないし、何より顧客となる人々も普通は休みだ。人が休んでいるときに働かなければならないのは苦痛なのだが、トラブルによるクレームが避けられると思えば慰めにはなる。この辺りは、企業のシステム管理者と何ら変わることのない心理状況だと思われる。
|
【コラム】ASP.NETを安定稼働させるためのハードウェア・スペックとは? |
| INDEX | ||
| ASP.NET Webアプリ開発の裏事情 | ||
| エピソード6:Webサーバ管理と闘う! | ||
| 1.Webアプリ開発者が直面するWebサーバ管理の課題 | ||
| 2.Webサーバ管理に対するリスクヘッジの重要性 | ||
| 「ASP.NET Webアプリ開発の裏事情」 |
ホワイトペーパー(TechTargetジャパン)
- .NET TIPS - .NET開発のテクニックとヒント集 - (2010/3/18)
− GridViewコントロールを階層表示させるには?
− Windowsフォームのボタンに画像を表示するには?
− C#でnullチェックを簡潔に行うには? - Chapter15:LINQとクエリ式 (2010/3/17)
C# 3.0の目玉機能であるLINQについて、さまざまな記述例を交えながら徹底解説。書籍『[完全版]究極のC#プログラミング』より転載 - VBラムダ式 基礎文法最速マスター (2010/3/16)
今度はVB。ラムダ式の基礎文法を、短い説明と簡単なコードでまとめる。「ラムダ式、どう書くんだっけ?」という場合の簡易リファレンスとして活用できる - ASP.NET MVC 2がリリース (2010/3/15)
ASP.NET MVC 2の正式版(VS 2008のASP.NET 3.5向け、VS 2010には標準で含まれる予定)のリリースについてのお知らせ
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |







