BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Androidアプリのネットワークトラフィック監視と制限を行うYelp Varanus

Androidアプリのネットワークトラフィック監視と制限を行うYelp Varanus

原文(投稿日:2020/02/16)へのリンク

先日Yelpがオープンソースとして公開したVaranusは、アプリが不用意に大量のデータを消費することを防ぐためのAndroidライブラリだ。ネットワークトラフィックを監視すると同時に、必要であれば遮断することも可能である。

Varanusの最初の目標は(こちらのdroidconでの講演のように)、誤ってサイトにDDOS攻撃を加えてしまうような、過度のネットワークトラフィック送信を伴うバグの防止だったのですが、結果として、より汎用的な、ネットワークトラフィックの管理や監視に適したものになりました。

同社エンジニアのsanae Rosen氏とKurt Bonatz氏によると、Varanusは、シンプルで故障しないこと、設定不要で最初から期待される動作をすること、さまざまなアプリに少ない労力で統合可能であること、という3つの目標の下に開発された。

Varanusはネットワーク全体と特定のエンドポイントの両方に対して、ネットワークトラフィックの監視と遮断を行うことができる。VaranusはOkHttpインタセプタのすべてのネットワークトラフィックをインタセプトすることで動作する。下の図に見るように、インタセプタは、Varanusの主要な2つのエンティティであるNetwork MonitorおよびNetwork Shutoff Managerと通信を行う。これら2つはいずれも、ユーザの提供するログサービス(Traffic Log PersisterNetwork Shutoff Pertsister)を使用して、ユーザの望む場所にログを保管する。パフォーマンス上のオーバーヘッドとリソース消費を低減するため、ログは実際にネットワークが使用された場合にのみ生成される。

アプリが過剰なデータを消費しているとリモートサービスが判断した場合には、非標準のエラーコードである555と556を送信して、特定のエンドポイントを通過するデータか、あるいはネットワーク全体の使用を遮断することができる。Varanusをアプリで使用する上でサーバ側に必要な要件は、これらの特殊なエラーコードを送信可能であることのみである。

VaranusはKotlinで記述されており、gradleを使用してインストールすることができる。

// Top level build.gradle
allprojects {
    repositories {
        mavenCentral()
    }
}

// Module level build.gradle
dependencies {
    implementation "com.yelp.android:varanus:<version-number>"
}

関連してYelpは、自社のマイグレーションツールであるRusty Jetpackもオープンソースにした。

このツールは、新しいAndroid Xパッケージネームスペースを使うために、gitリポジトリ内の全ファイルをマイグレーションするものです。インポート、完全修飾されたリファレンス、pro-guard(難読化)定義の他、変更の必要なgradleパッケージの警告も行います。

Rusty Jetpackパッケージは、Yelpプロジェクトの場合のように、Android Studioが提供する公式マイグレータが動作しないプロジェクトのマイグレーションに役立つ、とRosen、Bonatz両氏は述べている。

この記事に星をつける

おすすめ度
スタイル

BT