「SOBA mieruka」カテゴリーアーカイブ

自社製品のSOBA mierukaの開発状況を中心とした話です。

マルチキャストとプロトコル解析

 最近、弊社の製品もマルチキャスト対応をしました。

 マルチキャストとは、複数個所へのデータ配信量を劇的に削減する技術の事で、例えば「ニューヨークとシリコンバレー」に同じデータを送信したい場合、宛先情報を2つ貼り付けたデータを1つアメリカ方面に投げます。同じ経路で送れる間は、そのまま送信し分岐が必要な場所(おそらく、西海岸付近のルータ)でデータを複製し、一方に「ニューヨークの宛先」もう一方に「シリンコンバレーの宛先」を付け、データを分岐させます。こうする事で、太平洋上を流れるデータ量がほぼ半分になります。

 この技術により、ADSLのような上り(送信)速度の遅い回線でも快適にウェブ会議をする事が可能になりました。

 ところが、中継システムに不具合があるようで、半日も使うとCPUが100%に張り付く症状が発生し、プロファイラにかけてみると一部のスレッドが暴走していることが判明しました。暴走の理由はソケットからのReadが永遠にトライアゲインエラーを吐き続けるというものでした。

 暫定対処はしたので、とりあえず安定して動作しているのですが、根本的な対策をする必要があり、負荷プログラムの作成が急務だったのですが、中継システムは改良に次ぐ改良で、正確なプロトコルドキュメントが存在していません。しかもどのドキュメントも使い物になりません。さすがに、30万行のソースコード(実行ラインで15万行)を読む元気もない訳で。。。

 しかも、エンドツーエンドで暗号化しているので、途中でパケットを拾ってもさっぱり分からないというのは結構困りました。結局、中継サーバからバイナリデータを抜き出し、バイナリエディタと関数電卓とを交互ににらめっこしました。プロトコルを解析しなんとか負荷プログラムを作成できました。準備に3日、解析に1日かかった訳ですが。。。

 みなさんちゃんとドキュメントは書きましょう orz

SOBA mierukaを利用したオフショア開発

 近年、さまざまな業界においてオフショア開発が叫ばれていますが、今日は、弊社のオフショア開発の様子をお見せしたいと思います。

SOBA mieruka

上記の様子は、弊社のビジュアルコミュニケーションツール SOBA mierukaを使用してベトナムのチームリーダと実際にミーティングをしている様子です。(上記のショットでは、ベトナム側はカメラは再生していません)

ベトナムとの打ち合わせは、基本的に日本語で大丈夫です。プロジェクトマネージャクラスで打ち合わせにまったく支障が無いレベル、チームリーダクラスで打ち合わせに支障がある場合があるが、英語で補間できるレベル。現場クラスでは、個人差が大きくまったく会話にならない場合もあります。

弊社では、毎朝、ベトナム側のチームリーダとDaily routine meetingと称した定例ミーティングを実施しています。このミーティングでは進捗がどうか?というよりも、日々現場で発生している問題と現場のスタッフがどの部分が今後問題になりそうと感じているかを顕在化&共有化させるのが一番の目的です。

次いで、弊社からの仕様変更を随時すばやく現場に落とし込みたいという意図もあります。俗にアジャイル開発と言うらしいのですが、私は完全に受け売りで進めています。

別のプロジェクトでもオフショア開発を1年ぐらい実施しているのですが、その担当者がアジャイル、アジャイルと叫んでおり、そのプロジェクトが一時ピンチに陥ったものの、進め方を試行錯誤している間に、上手くまわるようになってきたので、その手法を真似させてもらっています。

そのうち時間ができたら、アジャイル開発とはなんぞやと言う事をしっかり勉強しないとなと思っています。