2015年07月20日

NFSとマルチスレッド処理について

※これは仕事の備忘録である。

先日、新規に稼働したシステムで、メールアプリケーションに使用したファイルが削除できないという不具合が発生した。処理の内容は下記の通りである。

【処理概要図】
NFSとマルチスレッド処理01.jpg

(1) アプリケーションからメールの送信要求が来ると、アプリはファイルを/requestに作成する。
(2) メールの送信準備が整うと、ファイルは/sendに移動される。
(3) メールの送信に成功すると/sendのファイルは削除され、送信に失敗するとファイルは/errorに移動される。

通常(2)でメールの送信が正常終了すると、同時にファイルは/sendのディレクトリから削除される仕様となっている。しかし、その時の削除処理で失敗し、アラームが出るという不具合であった。(ファイルは削除処理が失敗したにも関わらずなぜか消えており、/errorディレクトリにも移動されていなかった。)

私たちは、このエラーの原因がアプリケーションのマルチスレッド処理にあるのではないかと考えた。複数のアプリが同じファイルを処理しようとして、二度削除処理を行なったためにアラームが上がったのではないかというのである。すると、誰かがこんなことを言い出した。

「この3つのディレクトリは、そもそもローカルなのか?NFSだということはないか?」

私は、この発言を聞いた時、意味がよくわからなかった。というのは単に私のスキルが低いだけなのだが、私はインフラ回りの仕事をしたことはなかったのである。私は、NFSというのはNetwork File Systemの略というくらいしかわかっていなかった。ということで、家に帰って早速調べてみた。

NFS(Network File System)は、UNIXで利用される分散ファイルシステムの一つで、ネットワーク上のファイルにアクセスするためのプロトコルである。多数のホストが存在する ファイルシステム全体を 透過的に共有するのに適している。

【NFSクライアントとNFSサーバ】
NFSとマルチスレッド処理02.jpg

つまり、NFSというのはUNIX向けのファイルサーバのことだったのである。Windowsで言うNAS(Network Attached Storage)みたいなものである。私の会社では社員のPC(Windows)向けにNASが提供され、個人のファイルサーバとして自由に利用できるようになっている。要するに、上で彼が言いたかったことは、「ファイルをローカルでなく別のファイルサーバに置いているということはないか?」という意味であった。

私たちは、このシステムでAPサーバを5台稼働させていた。従って、もし彼の推測が正しければ、5台のAPサーバで一つの(あるいはそれ以上の)NFSを共有し、そこでファイルの作成/削除処理を行なっているということになる。これは何とも奇妙なシステムである。ファイルサーバを共有するのであれば、APサーバを複数台配備する意味があまりない。

確認したところ、結果として、この/request/send/errorの3ディレクトリはNFSではなくローカルに存在していたことがわかった。彼の推測は誤りだったのである。開発者によれば、そもそもこれがNFSだとすれば、他のマルチスレッド処理もおかしなことになりかねないため、そのようなことはあり得ないという。確かにそうである。しかしながら、私には、通常、分散ファイルシステムをこのような使い方をするものなのかどうかがそもそもわからない。

結局、私たちはこの不具合の原因がわからず、業務影響がないことを確認して継続調査中である。今日の記事は、インフラ系のエンジニアから見れば私の無知さがわかってしまう内容となったが、NFSのことを整理する良い機会にはなった。

(Wikipedia)
分散ファイルシステム
Network File System
Network Attached Storage
(参考)
NFSとは TCP/IP入門
UNIX/Linuxクライアント向けのNFSサーバ
NFSのセキュリティ


応援よろしくお願いします。




ラベル:記事一覧
posted by 良源 at 00:00| ハードウェア | このブログの読者になる | 更新情報をチェックする

2015年06月30日

NTTドコモの月々サポートについて

先日、会社の同僚と携帯電話の料金について話をしていた。私はIT企業に勤めているが、携帯電話については専門外なので詳しくない。同僚が、「毎月のスマホの料金にどの程度支払っているか?」ということを聞くので、私が「7,500円程度払っている。」と答えたところ、同僚は5,500円程度しか払っていないという。私たちは2人ともNTTドコモのスマホを使っており、必要最低限の機能しか契約していない。しかし、なぜこれほどまでに料金に差がつくのか疑問に思ったので、少し調べてみることにした。

【私と同僚の携帯電話料金(NTTドコモ)】
・私:7,500円
・同僚:5,500円

すると、私たちは2人とも、基本使用料2,700円、パケット定額料等3,500円と、契約している内容はほぼ同じだったのだが、私の契約には、「月々サポート」という割引サービスが適用されていないことがわかった。そこに2,000円ほどの差があったのである。

月々サポートというのは、機種ごとに設定した一定額を毎月の利用料金から割引くサービスである。例えば、同僚の使っている機種に2,000円の月々サポートが適用されているのであれば、24か月で合計48,000円の割引が適用されることになる。私の使っている機種はこの月々サポートがなかった。(適用額が0円に設定されていたのと同じである。)そのため、毎月の割引が丸ごとない状態になっていたのである。

実を言うと、私が現在のスマホを契約した時には、このような割引サービスが存在するとは知らなかった。私の記憶では、スマホは型落ちの機種代金0円で購入したので、たぶん月々サポートが適用されていなかったのだろう。私はそれを知らず、機種代金0円なら安くて済むと思い込み、あえて古い機種を選んでしまったのである。

普通、新しい機種を契約すると、何万円かの機種代金がかかる。これを支払うには、頭金として一括で支払う方法や、毎月の利用料金に組み込んで分割で支払う方法など様々な方法が存在する。これらの方法は、どちらにせよ同じ割引額が適用されるという意味では同じである。ただ、着目すべき点は、ここに月々サポートの割引額が適用されることにより、その機種代金との差し引きが実質0円になることがあるということである。

例えば、機種代金が70,000円で、月々サポート適用額に3,000円が適用されているスマホを契約したとしよう。すると、一括払い、もしくは分割払いで70,000円の費用は支払うことになるが、月々サポートで3,000円の割引が24か月続くので、合計で72,000円の金額が割り引かれる。そのため、機種代金と月々サポート適用額の差し引きで-2,000円となり、割引金額の方が大きくなるため、基本料金以外の支払いが実質0円となるのである。これを店頭では、「実質0円」「実質負担金0円」などと呼ぶ。

機種代金を最初に一括で支払うか、毎月の利用料金に分割して支払うかは自由だ。しかし、前述の同僚は最初に一括で支払っていたのだろう。そのため、毎月の料金に2,000円の割引金額が適用され、私の利用料金よりも2,000円少ない請求額となっていたのである。私の場合は、機種代金0円が安いと思い込んで契約したのだが、もっと新しい機種であっても月々サポートが適用されて同じくらいの利用料金になる可能性があったわけである。これでは私は全く得していない。ここには非常にがっかりした。

なお、月々サポート適用額だが、携帯キャリア各社によってサービス名称は異なるものの、ほとんどのキャリアに同じようなサービスが存在する。例えば、auなら「毎月割」ソフトバンクなら「月月割」という名称で同じサービスが提供されている。つまり、携帯キャリア各社は最低でも契約後24か月までは割引サービスは提供するが、それ以降も同じ機種を使い続けるつもりなら、割引額が適用されていない丸ごとの料金を利用者に払わせるつもりらしい。これは、利用者に最新機種を負担なく利用できるようにする仕組みなのか、それとも、利用者に24か月毎に機種変更を強制するための仕組みなのか不明だが、非常にややこしいことには変わりない。

ちなみに、私の機種は月々サポートがないので、24か月後以降も利用料金は変動しない。これを、毎月2,000円の月々サポートが適用されていた私の同僚と比較すると、次のような点が指摘できる。

【私と同僚の携帯電話料金の比較】
<私の方が得するケース>
・同僚の機種代金が48,000円以上であったとすれば、彼の支払いは実質0円とならない。
・同僚が24か月後以降も同じ機種を使い続ければ、彼はそれ以降割引なしの利用料金を支払わなければならない
<同僚の方が得するケース>
・同僚の機種代金が48,000円以下であったとすれば、彼の支払いは実質0円となる。
・同僚が24か月以内に機種変更すれば、彼は現在の端末の使用を割引適用期間内に収めることができる。

ここまでまとめてみたが、結局のところ、私の利用料金には割引額が適用されないため、あたかも高い利用料金を払っているように見えていたということがわかった。また、店頭でも「他の新しい機種と比較して得ではありません」ということは説明されていないため、まるでNTTドコモの料金プラン戦略に騙されていたようである。

現在の携帯電話は、パソコンほど寿命が長くはないものの、少なくとも1〜2年は使い続ける場合が多い。私の現在の携帯電話では、24か月以上使用しないと機種代金0円のメリットは享受できない。その上、携帯キャリアが提供するサービスプランは数年毎に変更されるため、次に契約する時には改めて調べなければならないか、その時には自分も前のことを忘れていて、よくわからないことがほとんどである。そういった理由から携帯電話の契約には毎回失敗するケースが多いと感じている。

よく知らないが、日本の携帯電話料金は世界有数に高く設定されており、キャリア同士でカルテルが結ばれているような状態だという。少し前はSIMカードの件でも様々な盛り上がりがあったが、企業が高い利用料金を設定して利用者に負担を押し付けようとしている様子には非常に不快感を覚える。学生や高齢者など、収入の低い世代が負担なく最新機種を使用できるよう、もう少し方法を考えてほしいものである。

(参考)
月々サポートとは
毎月割
月月割
一括0円と実質0円の違いまとめ!


応援よろしくお願いします。





ラベル:記事一覧
posted by 良源 at 00:00| ハードウェア | このブログの読者になる | 更新情報をチェックする

2015年04月21日

Windows ServerのCALについて

最近、会社で古くなった開発用のサーバを交換するため、サーバOSを購入したことがあった。そのサーバOSはWindows Server 2008 R2 Standardだったのだが、私はそれまでサーバOSのことなど全く知らなかった。今日は、その時知ったことについて少し書きたい。

まず、一番最初に驚いたのは、Windows Serverの値段である。私は、サーバOSを個人的にも会社的にも購入したことはなかった。しかし、いざ調べてみると、サーバOSがこれほどまでに高いということに驚いた。例えば、Amazonで価格をチェックすると、Windows 8.1 Professional14,600円で、Windows Server 2012 R2 Standardがなんと125,800円であった。(もちろん、会社の購買部門はAmazonで製品を購入したりはしないが。)

私はてっきり、サーバOSもクライアントOSとさほど変わらない値段で買えると思っていたのである。一体なぜこれほどまでに高いのだろうか。

また、次に戸惑ったのがCALの概念である。Windowsサーバを購入すると、サーバOSのライセンスとは別に、クライアントのライセンスであるCAL(Client Access License)が必要となる。これは、クライアントがサーバに接続するために必要なライセンスであり、接続数に応じて料金を発生させるための仕組みとなっている。それを表すのが下記の図である。

【CAL(Client Access License)の概念】
CAL.jpg

このCALは、Windows Serverのエディションにより購入時に付属する数が決まっており、2012 R2 Standardでは5CALが最初から付与されている。それより下位のエディションであるEssentialsとFoundationはCAL不要で一定数まで利用でき、過去の2008 R2 Enterpriseには25CALが付与されていたらしい。(参考1) (参考2)

で、このCAL、Windows Serverを利用するクライアントの数に応じてライセンスが必要とのことだが、一体クライアントで何をする時に必要かというと、サーバに認証してそこで提供されるサービスを利用する時には、必ずCALが必要ということである。具体的には、ファイル保存印刷など、企業内でユーザが決まっているサービスを提供する際には、クライアントの端末台数分、もしくはユーザの人数分のCALが必要となる。(デバイスCAL/ユーザCAL)(参考1) (参考2)

一方で、普通にインターネット経由でアクセスしてくるユーザに対してWebサーバとして利用する場合には、CALは必要ないようだ。確かにそれは当たり前である。単にWebサーバを走らせたいだけなら、ApacheNginxを利用すればよい。

この他にも、企業内のサーバを管理するときに出てくる疑問として、「サーバOSを購入した時に付いてくるCAL同士は足し算できるのか」とか、「バージョンが違うCALはどう考えるのか」とか、いろいろ考慮しなければならないことがあるようだ。この辺りは、参考になる情報はたくさんあるものの、「これさえ知っていれば完璧!」というようなWebページはない。しかし、うっかりするとライセンス違反にもなりかねないので、サーバ管理者にとっては悩ましい問題である。

ここまで勉強してみて、CALは非常に奥が深いというか、製品ごとに勉強しなければならないことがたくさんあるということがわかった。基本的に、Windows製品は専門性が高いと言えば聞こえはいいのだろうが、逆に言えばプログラミングを愛するハッカーたちにとって諸悪の根源だと思う。

私はプログラマではないが、私もどちらかと言えばオープンソースの方が好きである。なぜなら、Microsoft製品はブラックボックス化されているというだけで、何が起こるかわからないからである。

(参考)
CAL を選択しましょうCAL を選択しましょう | マイクロソフト サーバー & クラウド プラットフォーム
クライアント アクセス ライセンス (CAL) ガイド - マイクロソフト ボリューム ライセンス
マイクロソフトのサーバーを使うなら知っておきたい CAL ガイドSTEP 1 CAL の基本
清水理史の R2のツボ 第一回 | Windows Server 2008 R2 とは何か
CALの考え方〜Windows Server
第1回 Windows Server 2012 R2の概要


応援よろしくお願いします。





ラベル:記事一覧
posted by 良源 at 00:00| ハードウェア | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。