この記事はカバー株式会社 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.csで Embrace.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のコンソールで見たものが以下になります。
Sceneの移動やAPIのコール、エラーなどをタイムラインで見ることができます。また、各スパンの詳細はTimeline Detailsで確認することができます。
手動でスパンを挿入することもできます。
そのほかにも様々な機能があります。
OpenTelemetryによるビューの統合
EmbraceはOpenTelemetryをベースとして作られており、メトリクスをGrafanaなどに配信することができます。
これによって、モバイルクライアントからバックエンドまで、end-to-endのUXに関するビューを作れるはずです。
所感
Embraceを試用して、モバイルクライアントのObservabilityが考えられていない状態よりは改善する実感が得られました。
一方で、組み込み後の初期状態ではSceneの中で発生するイベントがキャプチャーされないため、自前で自動計装を実装するなどの工夫は必要です。
まとめ
モバイルクライアントのObservabilityを向上するEmbraceについて紹介しました。これからモバイルクライアントのObservabilityを検討される皆さんの参考になれば幸いです。