all things must pass

記録と備忘録による自己同一性の維持を目的とするものです。

10/6 10年前を振り返ったら、F5がNginxを買収したというビッグニュースを半年も知らなかったことを知った

いまから十年前、会社の存亡に関わるようなとても厳しいプロジェクトがあった。

そのときに大いにしがらんだ要素の一つにLB(Load Balancer)がある。F5ネットワークスという会社のBig-IPというシリーズの機器だ。10年前を思い出し、そこからの横連想で、クラウド大流行の昨今はF5ネットワークスのような会社にどんなインパクトを与えているのだろうと気になって調べてみたら...。

 

 

なんと、F5ネットワークスはNginxを買っていた!

www.itmedia.co.jp

マジですか?

ja.wikipedia.org

にも、

2019年3月、Nginx, IncはF5ネットワークスに6億7000万米ドルで買収された。 

 とありますわ。感慨深い。

LBの世界では無敵と言われたF5ネットワークスだけど、ちゃんと商売の軸足をサービス(しかも包括的な)に広げているのですね。祖業にこだわることなく事業を発展させていこうとする意志は学ぶところが多いです。

 

まねできるかどうかはおいといて。

 

以下は、ワタクシの人生が10年前にどのようにF5ネットワークスと交差したかの思い出。書いとかないと忘れちゃうからね。

 

 

ーーーーーー

いまから十年前、会社の存亡に関わるようなとても厳しいプロジェクトがあった。

 

もちろん顧客名も、何をやっていたかも書くことはできない。ただ、当時としては野心的なWEBシステムで、とても大きなトラフィック予測が要件になっていたとだけ記しておく。ああ、もちろん発注者が考えつく限りの耐障害性も。

だからDBはOracleRAC(!)になり*1、そしてLBにはF5ネットワークスのBig-IPを使うことになっていた。それを決めたのはボクジャナイ。システム全体のアーキテクチャを見る人がいないので何とかしてくれ請われてプロジェクトに参画したときには、OracleRACとBig-IPはもう決まっていたのだった。これらをうまく使って、要件を満たすようなアーキテクチャを考えてくれ、という無茶ぶりをされたということだ。他にできる奴がいないのは判るけど、せめて決める前に呼んで欲しかった。できれば応札をする前の、提案検討時に。

 

結局、そのときのRACのノード間同期の癖や、ログイン後のセッションが維持する情報の性質から、セッションを開始した時点のアプリサーバーに処理を振り続けるしかない(今でいうと、L7のスティッキーセッション動作をするしかない)という結論を出したのだけれど、そこには大きな問題が潜んでいた。その時点のBig-IPは、まだL7でのロードバランシング動作を(少なくともスティッキーセッションを)サポートしていなかったのだ*2

それが判ったのは、開発が進んで新年度に入ってからだ。

 

リクエストに対してランダムに論理エラーが返されるという障害レポートが上がり始め、しかも顧客の試験運用でも同じ現象が発生しているという。放ってはおけないし、みんな忙しそうだしで、自分でログを追っかけていくと、セッションを開始したアプリサーバーではないところにリクエストが振り分けられているじゃないか。セッション情報が存在しないアプリサーバーにリクエストが来たら論理矛盾になるよね。

あれ?L7のスティッキーセッションは?セッションを開始したアプリサーバーに、以後のリクエストをルーティングすることが保証されてるんじゃないの?

 

問題を解決するために、某IT系商社の技術コンサルチームを交えたBig-IPの設定レビューを急遽開催した。そのときまでは某IT系商社の事を、貶しつつもまだどこかで信じていたのだと思う。腐ってもXXXだし、とか。

その希望はレビュー開始から数分後にバッサリと断ち切られた。こいつらL7のスティッキーセッションのこと、何にも理解しちゃいねえ。あげく、

『問題解決のためにコンサルチームをアサインします。まずは一ヶ月稼働の見積もりをお送りします』ときやがった。こいつら金箔でコーティングされた見栄えのいいXXXXだ。こんなXXXXに構ってたら、時間も金も全部溶けちまう。あと、こんなXXXXを頼るやつもXXXXだ。ゴミかゴミじゃないかなんて聞きゃ判るじゃないか。聞いても判んないやつは豆腐の角に頭をぶつけりゃいいのだ。

 

 

レビューを散会すると同時に一切の業務を周りに押しつけて、急遽Big-IPのお勉強を始めた。マニュアルを読んで何とかできないのは、マニュアルがバカなのか、そいつが(その問題が求めるレベルに対して)バカなのか、それともその両方がそろってるかだ。

Big-IPにはiRulesという振り分けルールスクリプトがあり、それを記述することでシステムに固有の振る舞いを実現するのだという事はすぐに判った。いいじゃないか、Big-IPのマニュアル。問題はそこから先で、どう読んでもスティッキーセッションをサポートするコマンドが見つからない。

このままだとシステムの前提となる機器の選定が間違っていたとか、アーキテクチャ変更のためにスケジュールの大幅遅延が発生するとか、プロジェクトの打ち切り判定に関わるレベルの問題になりかねない、そしてそれに続く結果は...。悪い話ほど早くということで、早速担当取締役に伝えた時の絶望感は今思い出してもぞっとする。

だからと言って立ちすくんでいる訳にはいかない。F5ネットワークスのテクニカルサポートを受ける権利は持っていたので、窓口をオープン。テレカンファレンスを開催して(こちらの調査結果が間違いであることを期待しつつ)iRulesのサンプル提供を依頼し、そこでGWに突入となった。

休みの素晴らしいところは会社に行かなくて良いことだ。考えに集中しているときに他人からの割り込みを受けることもないし、通勤時間も仕事につかう事ができる。そうやって本当に極度に集中して検討と実験と文献検索を繰り返した三日目の夜、Big-IPのバージョンアップがつい最近あって、そこでiRules用のtableというコマンドが追加されたことを知った。結論から言えばそれが我々を救った奇跡だった。そのtableコマンドをiRulesスクリプトからうまく呼び出す(使いこなす)ことでスティッキーセッションが実現できたのは、その翌日の夕方だった。エラー処理まできれいにした版を作るにはもう一日掛かったかもしれない(いや二日だったかな?)。担当取締役に何とかなったと電話を入れたときに『どうやって?』と聞かれた。彼も最悪を覚悟せざるを得ないと思っていたのだろう。

『わたしたちは、まだツキに見放されていないようですよ』そう返したワタシに、彼が心底同意したのは忘れられない。ツキがないものは、生き残れないのだ。

 

休みが明けて、F5ネットワークスのテクニカルサポートに解決できたと伝えたところ、同じく『どうやって?』と聞かれたのにはわらった。まだ日本サイトには適切に情報が展開されてなかったのだろう*3。今回作成したスクリプトは弊社の知財であること(受託の場合、知財の移転が行われるのは契約完了時ね)、よって本件検討のために限って利用することとして、tableコマンドを使用したスクリプトをF5のサポートに送った。すぐに、本体に確認したが貴方の求める効果はこのコマンドの使い方で得られることを保証する、という返事が来た。

これらから想像するに、おそらく日本で一番最初にBig-IPにL7スティッキーセッション動作をさせたのはワタシだと思われる。巡り合わせとは恐ろしいものである。

以上が10年も昔にあったbogusなsagaだ*4

 

 

ともあれ、そのようにしてプロジェクト(と、おそらくは会社も)は救われたのだった。ワタシの家族の安寧と、ワタシの奥歯をサクリファイスにして。

 

このときの分だけに限らないんだけど、プログラマーとして極度に集中して仕事を行う時には歯を食いしばっている。特に考えても考えても判らない難問と格闘している時ほどそうだ。その結果、奥歯がボロボロになってしまった。もう歯根どころか顎の骨までが痛んでしまっていて、インプラントができない状態のようだ。歯並びで言えば、右下の第二、第三大臼歯が既に無く、第一大臼歯までなくなってしまったら、とても格好の悪いことだけど部分入れ歯をおすすめすると掛り付けの歯医者さんに言われている。そして、その第一大臼歯がもうだめなのが判ってしまった。あああ、入れ歯かあ。

 

せめて会社はワタシに入れ歯代を払うべきだと思うの。いまさら家族の安寧はどうにもならないので。それとも、それこれ合わせてがプログラマーになるという事の代償なのかしら。

成る程。プログラマーを楽しむということは、とても高価な事なのかもしれない。まあそうなのだろうね。

 

 

おまけ:

これも書き残しておかねば。

GW中に書いたスクリプトF5ネットワークスのお墨付きを得た直後、XXXXであるところの某IT系商社の営業から、コンサルの見積もり送ったけどどうする?早く始めないと間に合わなくなるよ、という上から目線の問い合わせがあった。

『いや、解決したからコンサルはいらんです』と返したところ、これまた『どうやって?』と来やがったので、火の玉ストレートを投げてしまった。

『なぜうちが貴社に技術情報を開示しなければならんの?そんな権利義務関係はないぜ。それよりうちのエンジニア(自分とは言わず)が一週間でできるような事に一体いくらの見積もり出してんの。ぼったくってるんじゃないの?そもそもL7のスティッキーセッションできるって売り込んだのはそっちなんだから、今回のエンジニア稼働分金返して欲しいくらいだよ』

あーうー言うばかりになっちゃったので、じゃそういうことでと電話を切った。その後別ルートを通じて情報よこせと粘られたのだけど、うちの知財ですから、で全部蹴飛ばして終了した。救われないな、こいつらと思いましたことですよ。

そこから10年だけど、あいつらまだあんなことやってんのかね。多分そうだろうな、顧客のユースケースを理解せずに、『みんなも使ってますから』的な押しつけ営業をやってるんだろうな。何がコンサル営業なものかね。みんながクラウドに向かうのも宜なるかな。あの手の中間搾取会社に金を払うのに嫌気がさしてきてるんだ(もちろんそれだけじゃないにせよ、あの手合いに払うマージンが無駄な事が広く知られるようになってきてるのは間違いないね)。まあそうだよね、自分で責任を取らず、ナレッジも、ウィズダムも出せない会社に意味はないものね。

さようなら、XXXXなXXX。さようなら、高付加価値型販売代理店*5。機器がコモディティ化し、経験も知識も知恵も個人が背負っていくトレンドの中で、君たちみたいな恐竜が生きていくのはとてもとても大変だと思うよ。さようなら。

*1:これも大いに疑問な選択だった。自社サービスならC/Pが合わないという理由で却下してただろうなと思う。それはつまり...。

*2:Big-IPを売りつけた某IT系商社の技術営業の話を鵜呑みにして、当社のエンジニアはL7での振り分けに問題がないと思い込んで購入をしていたのだった。今思い出しても目の前が真っ赤になるねえ。もちろん怒りで。

*3:バージョンアップが行われたという情報は入ってきても、それが何を解決するのかという意味については展開がされていなかったのだろう。

*4:そもそもsagaとはbogusなものではなかったか?

*5:販売代理店が不要って訳じゃないことに注意。所詮請負契約(=成果物責任)に縛られてない代理店がコンサルつけます、Value Addします、と言ったところで迫力ないでしょ、という話。10年前は、まだXXXという看板が通用したのだねえ。