ugo Tech Blog

ugoの日々の開発・生産について

ugoが考えるロボットサービスのオブザーバビリティ

こんにちは、松井です。

ugoでは、アジャイルなハードウェア開発によって、新モデルの開発をスピーディに取り組むとともに、既に提供済みのロボットを含めたサービス全体を継続的にアップデートしています。

これは開発と運用を密に連携させ「スピード・生産性・信頼性」のバランスを保ちながら進める、いわゆる「DevOps」を社内で推進しています。

DevOpsについてはまた別の機会に記事にするとして、今回は、運用フェーズでプロダクトやサービスのパフォーマンスを監視・モニタリングし、開発時の設計改善や運用時の課題解決へとつながる「オブザーバビリティ」についてご紹介します。

オブザーバビリティとは

「オブザーバビリティ」は、日本語で「可観測性」とも略され、あるシステムの情報からシステム内部の状態をどの程度推測できるかを示す指標です。「o11y (= observability)」と略されることもあります。

近年では、AmazonNetflixUberなど多くの企業が、柔軟性の高い複数のマイクロサービスを連携させるマイクロサービスアーキテクチャで構築しています。更にロボットは、多数のセンサーやアクチュエーターを制御するサブシステムと、それらを束ねるメインシステムで構成されており、相互に依存する多数のコンポーネントが、疎結合で物理的にも異なる通信経路を介してつながっています。

このような複雑な分散システム環境下でひとたび問題が発生すると、現状把握や問題特定に非常に時間がかかってしまうという課題が顕著になるでしょう。

オブザーバビリティの高いシステムを実現していれば、このような複雑なシステムにおける予測不可能な問題に対しても、各マイクロサービスから適切な情報を収集しておくことで、システムの動作に関する様々な疑問を解消できるようになるのです。

分散システム環境下での問題特定のイメージ https://opentelemetry.io/img/waterfall_trace.png *1

テレメトリーデータ

開発者やサービス運営者が、問題を特定し対応できるようにするには、アーキテクチャ全体を可視化し、分散環境下にある各サービスの相関関係から根本原因を探ることができる必要があります。このオブザーバビリティを実現する上で必要な情報は、テレメトリーデータと呼ばれ、次の3つのカテゴリ(シグナル)が存在します。

  • ログ : タイムスタンプ付きのテキストレコードです。多くの人が思いつくものが、この「ログ」でしょう。
  • トレース : トレースは、ユーザーやアプリケーションからリクエストがあったときに何が起こるかの全体像を教えます。
  • メトリクス : メトリクスとは、実行時に取得したサービスについての測定値。これらの測定値の1つをキャプチャした瞬間は、測定値そのものだけでなく、それがキャプチャされた時間や関連するメタデータからなる測定値イベントとして記録されます。

標準化プロジェクト:OpenTelemetry

OpenTelemetryは、オープンソースのオブザーバビリティフレームワークです。クラウドネイティブなアプリケーションからテレメトリーデータを収集したりモニタリングするツールは、有償・無償あわせて様々なものが存在しますが、OpenTelemetryは、ベンダーに依存しないAPIと各種ツールを提供しており、ここ最近でデファクトスタンダードになりつつあります。 opentelemetry.io

https://opentelemetry.io/img/otel_diagram.png *2

OpenTelemetryに関するより詳しい情報を知りたい方は、2022年3月に開催されたObservability Conference 2022のアーカイブ資料(日本語)をご覧いただくのが良いでしょう。 event.cloudnativedays.jp

クラウドネイティブなロボットのオブザーバビリティ

では、改めてロボットにとって、オブザーバビリティの必要性を考えてみましょう。

昨今では、様々なロボットがクラウドに接続され、スマートロボット化しています。ugoも、ugo Platformがあることで、クラウドネイティブなロボットとして進化し続けています。

ugo Platformは、複数ロボットの制御を遠隔化/自動化することができるロボットプラットフォームです。

ロボット1つの動作をとっても、ロボットのコマンド(動作定義)や自動化設定はクラウドで管理されており、ユーザーのロボット操作画面やロボット側で読み込まれて実行されています。 また、1つ1つの動作は、上位から指示を受けたロボット内部のサブシステム(アームコントローラやカートコントローラ)で制御されています。 そのため例えば、ロボット内部で実行されているAI ToolboxのAI処理によってイベントが発生した場合は、ロボットプラットフォームを介して、他のシステムと連携するといったことも可能な、様々なレイヤーのコンポーネントが連携する分散システムとなっています。

*3

このように、クラウドネイティブなロボットにとっては、センサーやアクチュエータを司るマイクロコントローラからクラウドシステムやユーザー操作までをEnd-To-Endでつなぐオブザーバビリティが必要となります。ugoでは、テレメトリーコレクターをサイドカーとして搭載し、ロボットも含むEnd-To-Endのオブザーバビリティを構築しています。

今回の記事でご紹介した「オブザーバビリティ」は、進化し続けるロボットサービスにとって非常に重要な要素です。今後もOpenTelemetryやオブザーバビリティに関する技術動向に注目していきましょう。

ugoでは、一緒にロボットを社会実装していく仲間を絶賛募集中です。

詳しくはこちら👇まで。

herp.careers