2011年3月28日月曜日

アプリケーションプールの役割

ちょっと技術的な話になるが、WindowsサーバーでWebサイトやWebアプリケーションを動かす場合、
標準の機能であるIISを利用する。

今まで普通に使っていたのだが、先日こんな問題が起きた。

Windows2003 + IIS6.0 + ASP + Oracle10g の組み合わせの業務システムでDBへ書き込む処理にバグがあり、
同じトランザクション内で同じレコードに書き込みが行われた。
そのため、Oracleでデッドロックがかかりそれ以後サイトAにアクセスできなくなってしまった。

もちろん、原因はASPの書き込み処理であるのだが、
この問題により同じサーバーに入っていた別サイトBも稼動しなくなってしまった。
サイトAの問題が、関係ないサイトBにも影響したことは非常に重大だ

以下がIISのアプリケーションプール構成である。
・アプリケーションプール1
ログイン
サイトA ←[emoji:v-190]問題発生
・アプリケーションプール2
サイトB

サイトA,Bは、アクセスするとログインを通る仕組みになっている。
そのためサイトBにアクセスするとログインに遷移。
ログイン処理でDBへアクセスした際、処理が止まってしまうようだ。

そもそも、Oracleでデッドロックが発生した場合、
再び同プロセスからアクセスすると待たされてしまうため処理が止まってしまう。
しかし、別プロセスからアクセスすれば処理は継続できるはずである。

今回の構成で問題だったは、
ログインとサイトAを同じアプリケーションプールに入っていたことだ。
同じアプリケーションプールの登録されたWebサイトは同じプロセス内で処理される。
ログインのような汎用的なものは、
固有のサイトの動作に依存してはいけないため独立したアプリケーションプールで動作させるべきであった。

今回の経験は、事前に限り影響の少ない構成を考えることの重要性を身をもって体感できた貴重な経験になった。
必ず今後に生かそうと思う。

2011年3月22日火曜日

システムテストの失敗談

ここ数年、開発作業でテストフェーズから離れていたが、今月久しぶりにシステムのテスト担当にアサインされた。
システム構成は、ASP + IIS + Oracle という古いシステムだ。

対象のシステムは、バグや問い合わせ頻発しているため、
潜在バグの検知や機能精査がテストの目的だ。

現在、テスト中であるがここに来て納期までに予定のテストケースをこなせないことが判明した。
幸いお客さんへのテスト内容のレビューは行われていないため、
操作頻度や優先順位の高いテストケースに絞り項目を減らしてテスト仕様書を作り直した。
(ちなみに明日、お客さんとのレビュー会が予定されている)

さて、
なぜこのような事態になったのか自分なりに考えてみた。

■今日で実施したテスト作業手順
1. データの種類、ステータス数、画面の操作 をもとに全テストケースを洗い出しテスト仕様書を作成
 →全1160ケース
2. テスト工数は12人日、1日100件を想定して見積もりを作成
 →この時点では作業実績がないため想像で100件くらいはいけると思っていた
3. テスト開始。4日後、4日間の実績が160件(40件/日)で想定より大幅に作業が遅延
4. 操作頻度や優先順位の高いテストケースに絞り項目を減らしてテスト仕様書を作り直した
 →全600件(-560件)

解決策1: 見積もり精度の向上

2.の時点で見積もりの精度が高ければ、事前にテストケースの見直しが実施できたはず。
たとえば、2.の時点で1ケーステストを実施して時間を計り、少し多めに見積もる。
ただ、結構使っていたシステムだったので自分の想定がここまではずれるとは思わなかった...

解決先2: 網羅性ではなくポイントを絞ったテストにする
そもそもシステムテストの目的は、潜在バグの検知と機能精査である。
網羅性は確かに大事だがこのようなシステム全体のテストを行う際、すべてを網羅するにはとても多くの時間と工数がかかり容易ではない。また、お客さんもその分の費用を支払う必要がある。
テスターもテストケースをこなすのに必死で、機械的な作業になりがちで網羅したものの大したバグは検知できず効果が薄くなりがちだ。
つまり、こういう場合はある機能、ある操作などポイントを絞ったテストを実施するほうが効果がある場合が多い。

現時点では、当初から解決策2を選択することがよかったかな考えている。
ただし、網羅性の重要度は明日のレビュー会を得て決まる。

2011年3月8日火曜日

Microsoft Dynamics CRM 2011 を極める

Microsoftが提供しているCRMパッケージ「Microsoft Dynamics CRM 2011」がリリースされた。
これからCRMへ初挑戦する僕の視点から、ここにナッレジを書き溜めようと思う。

「Microsoft Dynamics CRM 2011」はこれまでと異なり2種類の導入方法がある。

■自社設置型
自社内にCRMサーバーを建て保守、メンテナンスを自社で行う。
強み:基幹システムなど既存のシステムとの連携が可能
弱み:保守、運用コストがクラウド型に比べ高い
   CRMを導入するための環境の整備が必要
本格的にCRMを導入し、SFA、マーケティング、サービスなど多くの業務で効果を得たい方におすすめ

■クラウド型
CRM システムの管理、更新、および保守はマイクロソフトが行う。
強み:保守、運用コストが自社設置型に比べ安い
弱み:基幹システムなど既存のシステムとの連携が難しい
ある限定した業務や部署でのみ効果を確認しながら段階的にCRMを導入した方におすすめ

2011年3月6日日曜日

Wifiルータ「fon」を利用してインターネットに接続してみた

iphoneを購入した際、Softbankからfonを無料で提供されました。

店員
「現在、iphoneユーザーの急増により3G回線が大変混みあっております。
 自宅でiphoneからインターネットを利用する場合は、是非自宅のインターネット回線を利用していただきたい」

Blacky
「どういうこと?」

店員
「自宅にあるインターネット回線をfonを経由することで無線Lan(Wifi)にできます。
 するとiphoneからfonへアクセスできるようになり3G回線を利用せず、自宅のインターネット回線利用してインターネットが利用できるようになります。」

Blacky
「なるほど、ただ自宅でいちいち3G回線からWifiに切り替えるのはめんどくさいな・・・
 まぁ、興味本位で試してみよう」

ってことで自宅のインターネット回線を無線Lan(Wifi)にしてみました。
説明書を見ればすぐできまたんですが、PCからWifiを利用する方法が書いてなかったので記録しておきます

■環境
ノートPC:Dell XPS M1530
ネットワーク環境:ADSL + fon

■設定手順
1. ノートPCで無線Lanを検知する

 

 










2. 「MyPlace」を選択し、セキュリティコードを入力する。


↓セキュリティコードはfonの裏に記載されています。

P1020207.jpg 





















3. インターネットに接続できたか確認する
Yahooとか開けたらOK!


2011年3月5日土曜日

宮崎サーフ

地元に久しぶりに帰郷。
こんな極上Waveに出会えました