2007-01-19

RE:複数経路プログラミング

http://anond.hatelabo.jp/20070119141655

デバッグ地獄を見た話とか、エクストリームプログラミングの話とか、みんなバグを取るための方法論を語るけれど、バグを内包したまんま動きつづけるものを想定する発想、あんまりないんだろうか。


素人の私が言うのもなんだが、面白い考えだと思う。

大きなアプリケーションの中で、もっとも大切な部分はコンペ型式で作って、一番まともに動いたものを「一軍」、それ以外を「控え」にする。

これらとは別に、「正しい結果を出したかどうか?」を判定するプログラムを別に作って、「正しく動いていない」と判断された場合、同じデータを控えに回して、その結果を出力するようにする。

動作判定は素朴なもの、たとえば結果が出てくるまでの時間とか、得られたデータの桁数とか、そんなもので判定して、ちょっとでもおかしかったら次々に「控え」を前に出して、とにかくまともそうな結果が出るまで選手を入れ替えていく。

ひとつのデータの処理と出力が終了したら、また一軍が元の位置に戻って、次のデータの処理にかかる。


この辺のやり方はいろいろあると思う。

例えば、RAIDのようなイメージ

そこそこの品質の同機能・別設計プロセス流行マルチコアで、並列に走らせる。もちろん、高度なプログラミングが要求されるモジュールだけを並列に走らせても良い。

当然、ひとつのプロセスバグったり、フリーズしたりしても、そのプロセスだけ終了させれば良い。また、例えば、各プロセスの演算結果の「多数決」で、正しい演算結果を決め、信頼性を上げることも可能だ。子プロセスとして「部品化」させておけば、親プロセスには影響はないし。

部品は壊れるのが当たり前。

プログラムバグを内包しているのが当たり前。

では、冗長性を上げるには?

すでにあってもいい考えだ。(…すでにありそうだなあ)

記事への反応 -
  • 何があっても動きつづけるプログラムに需要がある プログラムをスクラッチするコストよりも、テストとデバッグに要するコストのほうが莫大 プログラムに要した労働力と、バグの...

    • http://anond.hatelabo.jp/20070119141655 デバッグに地獄を見た話とか、エクストリームプログラミングの話とか、みんなバグを取るための方法論を語るけれど、バグを内包したまんま動きつづける..

      • http://anond.hatelabo.jp/20070119152239 「バグだらけだから運用でカバーしてね。」 ということかな。 究極には人間というソフトでカバーというやり方だと思う。 バグを内包してないプログラム..

      • 小規模精鋭でサービス速度重視向きな開発方法だな。 はてな向きというべきか。 ミッションクリティカル系ではあまり歓迎されなさそう。

        • いやいやいや。 http://anond.hatelabo.jp/20070119163438 フォールトトレラントシステム - Wikipedia 言ってるのはこれじゃないのか?普通は信頼性を上げる為に使うが、その分手を抜いてコストを下げよ

        • http://anond.hatelabo.jp/20070119164720 http://anond.hatelabo.jp/20070119165858 すまない、元のやつをちゃんと読み込まないままに返してしまった。 プログラミングだけの話かと思ってしまったんだが、実..

      • http://anond.hatelabo.jp/20070119141655 http://anond.hatelabo.jp/20070119152239 入力と関数と出力があって、同じ入力を複数のアルゴリズムで実装された関数に与え、出力結果が異なれば異常発生と見なし..

        • http://anond.hatelabo.jp/20070119165858 処理コスト・時間コストを使っても安全性が欲しい部分でなら使えるかもね。 金融関係あたりとか? 一時期、新聞にたくさん載ってたなあw

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん