2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

カバー株式会社Advent Calendar 2024

Day 8

EmbraceによるモバイルクライアントのObservability

Last updated at Posted at 2024-12-08

この記事はカバー株式会社 Advent Calendar 2024 8日目の記事になります。
カバー株式会社でSREをしているSです。よろしくお願いします。

前回の記事は @TP113 によるGUnityでゲームシーン実行中のGC Allocをゼロに保つために気をつけていることでした。こちらの記事もぜひご覧ください。

この記事について

モバイルクライアントのObservabilityを向上させたいと考えている方に向けて、UnityのデモアプリへのEmbraceの組み込みと、EmbraceのダッシュボードでのSession Reportingの様子を紹介します。

モバイルクライアントでのObservability

モバイルクライアントでのObservabilityを検討する目的は、バックエンドやインフラでのSREによるプラクティスをクライアントにも広げることで、end-to-endのObservabilityを向上することです。

モバイルクライアントでのObservabilityやSLOについての詳細は下記のガイドに書かれていますので、興味のある方はご確認ください。

国内ではモバイルクライアントでのObservabilityとして下記のような事例があります。

弊社では運用コストを抑えるためにSaaSのソリューションを検討しており、OpenTelemetryベースのEmbraceを試用したのでその内容をまとめます。

デモアプリへの組み込み

弊社のアプリへの組み込みを想定して、中規模で環境構築が容易なUnityのデモアプリであるMegacity-MetroをAndroid向けにビルドしてEmbraceを試します。

使用した製品のバージョンは以下です。

製品 バージョン
Unity 6 6000.0.28f1
embrace-unity-sdk 2.1.1
Android 15.0

組み込みのステップとしては基本的に下記のドキュメントの通りですので、ドキュメントにない点のみこちらで言及します。

StartSDKの呼び出し

Unity上でEmbraceのIntegrationを設定したあとに、コード上で Embrace.Instance.StartSDK(); を呼び出す必要があります。
Megacity-MetroではMenu Sceneの起動時に呼び出しました。

ドキュメントでは Embrace.Instance.EndAppStartup(); を呼び出すように書かれていますが、Unity SDKでは削除されているため呼び出していません。

Assembly Definition References

Megacity-MetroのMainMenu.csEmbrace.Instance.StartSDK(); を呼び出す場合は、下記のAssembly Definition Referencesで Embrace.SDK を追加する必要があります。

Minimum API Level

Megacity-MetroではAndroidのMinimum API Levelが23に設定されていますが、24以上でないと以下のビルドエラーが生じます。

 To use the Embrace SDK when your minSdk is lower than 24 you must use AGP 8.3.0+ and add android.useFullClasspathForDexingTransform=true to gradle.properties.
  Alternatively you can set your minSdk to 24 or higher.
  This avoids a desugaring bug in old AGP versions that will lead to runtime crashes on old devices.
  For the full context for this workaround, please see the following issue: https://issuetracker.google.com/issues/230454566#comment18

Edit → Project Settings → Player → Androidタブ → Other Settings → Minimum API Level で変更することができます。

Session Reporting

実際にのセッション情報をEmbraceのコンソールで見たものが以下になります。

スクリーンショット 2024-12-05 20.46.00.png

Sceneの移動やAPIのコール、エラーなどをタイムラインで見ることができます。また、各スパンの詳細はTimeline Detailsで確認することができます。

スクリーンショット 2024-12-05 20.51.02.png

手動でスパンを挿入することもできます。

そのほかにも様々な機能があります。

OpenTelemetryによるビューの統合

EmbraceはOpenTelemetryをベースとして作られており、メトリクスをGrafanaなどに配信することができます。

これによって、モバイルクライアントからバックエンドまで、end-to-endのUXに関するビューを作れるはずです。

所感

Embraceを試用して、モバイルクライアントのObservabilityが考えられていない状態よりは改善する実感が得られました。
一方で、組み込み後の初期状態ではSceneの中で発生するイベントがキャプチャーされないため、自前で自動計装を実装するなどの工夫は必要です。

まとめ

モバイルクライアントのObservabilityを向上するEmbraceについて紹介しました。これからモバイルクライアントのObservabilityを検討される皆さんの参考になれば幸いです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?