新しいことへのチャレンジは苦しいことだらけ
今日は朝から製品の改良と性能評価を行いました。3年近く取り組んできた製品ですが、ネットワークプログラミングにはそれなりに自信がある私でも、こんなに苦労するとは想像もできなかった製品です。
プロトタイプはほんの1ヶ月くらいで作ることができました。その後、必要最低限の機能を実装し、客先での評価も数ヶ月でこなしました。ところが、難しかったのはそれからなのです。
当初はネットワークインターフェースを1Gbpsで開発し、性能も1Gbps近くが出ていたのですが、この製品のターゲットは10Gbpsでの接続。1Gも10Gも大差ないだろうと甘い考えでいたのですが、実際に10Gで実験してみると2Gbpsも出ませんでした。
デバイスドライバをパケットレベルでの高速処理に特化したものに変えるなどして、一番重たい処理でも3Gbps以上が出るようになったのですが、デバイスドライバ自体の問題の修正に苦労しました。
さらに、ディスクI/O処理が多すぎてカーネルの処理が追いつかず、カーネルパニックするので、データの保持方法を変更し、それでも連続稼働させるとTCP/IP関連のバッファが肥大化してカーネルパニック。カーネルパラメータの調整にも苦労しました。
スループットも安定性もなんとかなったあとには、同時処理セッション数を増やそうとするとメモリーを使いすぎる問題にぶち当たり、プログラム構成の大幅変更もしました。
そもそも機能面での難易度も高かったのですが、それよりも性能と安定性で、OSの限界にあたって苦労した感じです。
技術的な困難さ以上に大変だったのが、動作検証です。10Gbpsレベルの負荷を検証環境でかけるには、汎用のサーバ機では無理で、数千万円する負荷試験機をパートナーさんに用意してもらってようやく実環境に持って行く前に評価をきちんとできるようになりました。さらに、実環境ではほんのわずかな障害でも大騒ぎになるため、機能面での様々なトライアルがなかなかできませんでした。
ということで、気がついてみたら3年近くも苦労を続けていたのですが、ようやく様々な課題が片付きつつあります。3年も四苦八苦して難易度が高いものに取り組んでいると、本当に精神的に押しつぶされそうになります。幸い、自社では他の製品が業績好調でしたし、私自身もProDHCPがどんどん出ているので、後ろめたさはそれほど気にせずにできていた感じです。
新しい製品や事業を立ち上げるときには、やり始めてみなければ分からない壁がたくさん出てきます。実に苦しいものです。その状態で、資金面で苦しかったり、自分の立場的に苦しかったりしたら、あっという間に押しつぶされてしまうことでしょう。
それでも、新しいことにチャレンジしなければ次のステップはありませんし、仕事に対するやりがいもなくなってしまいます。誰もが新しいことを生み出す役割である必要はありませんが、そういうことをする人がいなければ組織の将来性はありません。
そろそろ結果を出すフェーズ。完全に立ち上がるまでまだまだしっかりやらねば!