テレメトリーとソフトウェア





約6年前、私は北米の大手医療会社向けに鉄とソフトウェアを製造するプロジェクトに参加しました。 いくつかのデバイスがロードされているテストスタンドの近くに立って、 「何か問題が発生した場合、検索を高速化してエラーを修正するにはどうすればよいですか?」



この質問が発生した瞬間から今日まで、多くのことが行われました。ソフトウェアとハ​​ードウェアでのテレメトリーの収集と分析が、私が参加したプロジェクト全体のエラーを検出および修正するための時間を大幅に短縮するのにどのように役立ったかを共有したいと思います。



はじめに



テレメトリは、古代ギリシャ語のτῆλε「遠い」+μέτρεω-「測定」に由来します。

すべてが非常に単純で、さまざまなエンジニアや科学者のスタッフが考えることができる測定値は、ターゲットシステムが視覚的および自動制御および処理のために処理センターに送信します。



このようなもの:







サーバー側では、次のようになります。







背景



どういうわけか、QAエンジニアの仕事を見ながら、なぜ衛星、ロケット、車などの複雑なデバイスにテレメトリーがあり、実際、手術室、ロボット、複雑なソフトウェアソリューションのプログラム部分を作成しても、それについても考えない方向?



コードの量は膨大ですが、何かが間違っていることを片方の指よりも少ないことを理解する方法があります。





QAエンジニアの仕事を見ながら、患者の心拍曲線、圧力、体温、その他のパラメーターを実行する画面の1つを見て、信頼できる監督の下で製品をこの患者のようにしたかったのです。 そのため、何か問題が発生した場合でも、時間を巻き戻して、どのような状況で発生したかを確認できます。



自転車または乗車



教えられたとおり、自転車は有益でエキサイティングですが、最初に既存のソリューションを探してみました。



良い伝統により、私は要件から始めました:





私は長い間探して、思慮深く...しかし、悲しいかな、それはただ悪いだけでなく、それはすべてひどいものでした!



2011年の初めの時点では、私が見つけたプロジェクトのうち、要件の半分に近いものでさえ、これらの要件に該当するものはありませんでした。



既製のオープンなソリューションの形でのソフトウェアのテレメトリは、クラスとしてはほとんど存在せず、大企業は自分たちですべてを行い、急いで共有することはありませんでした。



2番目の驚きは同僚の反応でした-無関心、または最悪の場合は拒否ですが、幸いなことに、これは最初の結果まで長続きしませんでした。



そのとき(2011年)に見つけた唯一の解決策は、その時点でgoogleコードにあるP7ライブラリでした。 機能は貧弱で、プラットフォームのX86のみで、涙を流さずにサーバーを見るのは困難でしたが、次のような利点がありました。





一連の考え、研究の後、他の人の自転車に乗ることにした。



最初のステップ



ライブラリをコードに埋め込むのは簡単で、問題はありませんでしたが、疑問が生じました。どのような美しいグラフィックを表示し、どの読み取り値を記録するのかということです。 質問は単純であるように思えますが、実際は複雑で潜行性があります。



最初は、経験がなくても、比較的重要でない量のテレメトリーを書き始めました。





残念ながら、その年のスクリーンショットはありませんでした。最も近い近似値を示します。







火の最初の洗礼は素晴らしい結果をもたらしました:数日間の目立たない作業といくつかのバグの再現の後、私たちはついにそれらの多くの性質を理解することができました:





1日目または2日目にはまだ修正されたものがいくつかありましたが、何年も処方した後、私はそれが何であったかをもはや思い出すことができません。



同僚と熱心にモニターを指でつまんで「¿Quépasa?」と尋ねた後、答えを見つけて子供として幸せでした-有用性の質問はもうなくなったので、新しいおもちゃを手に入れて遊びました。



走りに行く



最初の成功の後、必要なカウンターの数を一貫して増やし始めました。





次に、カウンターを3つのグループに分けました。





最後のステップは、テストプロセスを更新し、QAによって記録されたエラーに、正式な説明、可能であれば再生方法とログファイルだけでなく、テレメトリも付随させるというプラクティスを導入することでした。



おわりに



結論として、いくつかの事実を紹介しましょう。





この記事は非常に表面的であり、「スレッドのCPU負荷をどのように取得するか」、「スレッドのサイクログラムを作成する方法」、「プラグインを作成する方法」など、多くの技術的な質問が残されています。 しかし、トピックが十分に興味深い場合は、これらすべての点について別々の記事を作成できます。



この記事が「テレメトリーが当社の製品に役立つか」と同じ質問をすることを望みます。ソフトウェア業界ではこの質問は信じられないほどまれであるため、私はそれを書いたと言えますこれは多くのスペースと防御です。



読んでくれてありがとう!



PS:私は故意に私たちの会社について話し始めたわけではありません。この記事は彼女に関するものではありません。

PPS:興味がある場合は、Jenkins + Baical + P7 バンドルwww.baical.net )を使用します。ニーズによく合います。プロジェクトの作成者は、1つまたは2つの改善ではなく、私たちのリクエストで実装された長年にわたる協力に加えて、P7を使用しますロギング( https://habrahabr.ru/post/313686/



All Articles