ネットワーク好きのプログラマーは結構希少
今日は朝から製品の動作確認で、パートナーさんのところへ。インターネット関連システムは検証がかなり大変です。特に、一般的な家庭やオフィス内ではほぼ縁がない「ルーティング」は苦労します。
あるパソコンからWEBサーバにアクセスしたとしましょう。普通の人が見えるのは、パソコンの先に無線LANアクセスポイントやハブなどがあり、その先にルーターがあるあたりまででしょう。そこからプロバイダーの回線を通ってWEBサーバとやりとりするようなイメージでしょう。または、最近ではモバイル回線も高速ですから、iPhoneから3G回線やLTE回線などでやりとりする感じでしょうか。
面倒なのは普通のユーザが見えなくなるその先です。プロバイダーやモバイル事業者は大抵さらに上位の回線事業者に接続してインターネットのサービスを提供しています。上位回線が1本だけなら、オフィスの延長のようなイメージですが、冗長化やコスト対策で、複数回線に接続していることもよくあります。単に複数に分散して、そのまま分散した先から戻ってくるのであればまだ理解も簡単ですが、大抵は上りと下りで違う回線を通るようなことをしています。そうやって回線事業者ごとに帯域をコントロールしたりして、可用性やコストのコントロールをしているのです。
通信の流れをコントロールするのがルーティングですが、ルーティングも静的なルーティングの他に、動的なルーティングもあり、それぞれのルーターが連携し合い、理解が大変な状態になっていることも良くあります。
そのようなネットワークに製品を接続する場合、単にWEBサーバのようにリクエストを受けてレスポンスを返すだけのサーバならまだしも、通信を仲介しながら何らかの処理を行うような製品ですと、設置場所によって実にさまざまなパターンがあります。そのパターンを可能な限り検証環境で動作確認するのが大変なのです。
通信の流れが複雑になると、見た目でもケーブルだらけになって頭が混乱しますし、さらに、ルーターやスイッチで複雑な流れを設定するので、自分たちでも何が何だかわからない状態に陥りやすいのです。今日も数パターンの複雑な構成を作って確認しましたが、頭がおかしくなりそうです。
おまけに、検証環境のネットワークというのは、大抵いろいろな製品などの検証を行っているので、それらが影響し合って、何が悪いのかさっぱりわからない状態にもなります。今日も、何となくインターネットにつながるときと駄目なときがあり、自作部分の問題かと苦労して調べていたのですが、結局は他の製品の影響でした。
プログラマーでネットワークが好きな人は、意外と少ないのですが、それはやはり、ネットワーク自体がそもそも複雑難解だからでしょう。ネットワーク技術者はまさにルーティングなどを考える専門家ですが、プログラマーでネットワークにも詳しい人はなかなか見かけません。おかげで当社は製品や特注品開発などでメシが食えているのですが。
ということで、1日ネットワークとプログラミングで頭を使いすぎて、すっかり疲れました。明日は人間ドックですが、頭の状態を検査できたら相当ひどい状態でしょうねぇ・・・。