Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Envoy mobile完全に理解した / Imperfectly understood En...
Search
Kohei Ota
June 20, 2020
Technology
460
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Envoy mobile完全に理解した / Imperfectly understood Envoy mobile
Kohei Ota
June 20, 2020
More Decks by Kohei Ota
See All by Kohei Ota
CloudNative Meets WebAssembly: Exploring Wasm's Potential to Replace Containers
inductor
4
3.7k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
210
Cracking the KubeCon CfP
inductor
2
950
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
610
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
28
6.7k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
1.1k
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
23
8.1k
Other Decks in Technology
See All in Technology
小規模OSSモデルは サイバーセキュリティ業務に どこまで使えるか
bbrbbq
0
310
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
410
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
310
ドメインエキスパートは いかにして AI を使って プロダクト開発をするか
tatsuyashiraishi
1
220
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
5
2.5k
ひとりで始めた AI駆動開発、チームに広げて何が変わったのか
kenichiodo
0
140
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
250
仕様駆動開発の、その先へ。決める力と確かめる仕組み
inariku
0
110
デザインレビューは自動化できるのか?─ Flutter × Figma で UI 品質保証を考える
techiro
2
400
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
220
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
230
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
280
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Design in an AI World
tapps
1
370
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
900
Exploring anti-patterns in Rails
aemeredith
4
550
The Invisible Side of Design
smashingmag
301
52k
The browser strikes back
jonoalderson
0
1.9k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
2
950
Transcript
ENVOY MOBILE に入門できなかったので 完全に理解してみた話 PRESENTED BY @_INDUCTOR_ ENVOY MEETUP TOKYO
#2
自己紹介 inductor (Twitter: _inductor_, GitHubそのまま) 謎のアンバサダー業のかたわらいろんなことをやっている まとめ:
クバネテスとサービスメッシュでビッグデータをディープラーニングするアイオーティーの仕事 Android は2015年頃に Fragment とかが無い状態のアプリを改修とかしてた淡い記憶を持っている iOS は XCode 7 で環境設定めんどくせーなーって思いながら Fastlane が出たのを眺めてた記憶を持っている Envoy はなにもわからない(なにもわからない) 2020/6/20
ENVOY MOBILE ってなに 2020/6/20
ENVOY MOBILE ってなに 2020/6/20
モバイル端末のアプリにもENVOYの機能を提供するやつ 2020/6/20 可観測性 メトリック、ロギング、分散トレーシング APIのグルーピングを提供 プロトコル TLS1.3, gRPC QUICなどのプロトコルにも 端末の制限なしに対応
トラフィックの管理 リトライ処理、サーキットブレイカー xDSの動的ルーティングなどが使える
雑な図 Before After 2020/6/20 端末A (iOS 13) 端末B
(Android 9) 端末C (iOS 14) 端末A (iOS 13) 端末B (Android 9) 端末C (iOS 14) Service A Service B Service C API Gateway Service A Service B Service C API Gateway HTTP(OS側のライブラリに依存) Envoyがプロトコルの処理を行う
どうやって動くのか 2020/6/20
公式のドキュメントを覗いてみる 2020/6/20
なんだHELLO WORLDあるじゃん楽勝だな 2020/6/20
_人人人人人人人人_ > 公式の手順が < > 動かない <  ̄Y^Y^Y^Y^Y ̄ 2020/6/20
入門失敗しました Windows でやったら環境変数とかごちゃごちゃするのめんどくさい(それはそう) Bazel で実行対象のファイルがパスにないって言われて怒られる WSL2 Ubuntu
でやったら Headless なので CLI で色々やらないといけなくて大変だった Bazel でよくわからないエラーが出ててトラシュー方法が謎 Mac は持っていない あと要求事項になかったけど Python とか要求されたので別途いれた 最近の JDK 周り全然よくわからん(特に Android開発でどうすればいいかわからん) 2020/6/20
しょうがないのでソースを読みます 2020/6/20
ANDROIDのEXAMPLEを覗いてみる MainActivity の onCreate イベント時に Envoy のクライアントビルダーを初期化 (この例では)Activity
のライフサイクルが生きてる限り所定のサーバーにリクエストを送り続けるループがあって 実行結果を画面に表示する処理が書かれている とりあえず io.envoyproxy.envoymobile.AndroidStreamClientBuilder のソースを読んでみるとよさそう 2020/6/20
ソースを読む AndroidStreamClientBuilder で AndroidEngineImpl なるものの初期化をしてる 今度はその中で EnvoyEngineImpl インスタンスが生成されていて
Envoy Engine の初期化時に JniLibrary.initEngine() が呼ばれて、その中で Envoy の実態が動く JniLibrary を使って NDK で組み込んだ Envoy を動かしてるんですねなるほど 2020/6/20
ソースを読む AndroidStreamClientBuilder で AndroidEngineImpl なるものの初期化をしてる 今度はその中で EnvoyEngineImpl インスタンスが生成されていて
Envoy Engine の初期化時に JniLibrary.initEngine() が呼ばれて、その中で Envoy の実態が動く JniLibrary を使って NDK で組み込んだ Envoy を動かしてるんですねなるほど 2020/6/20
JNIとかNDKってなに Java Native Interface の略 C/C++ で書かれたネイティブコードを Java/Kotlin
で読み込めるやつ Android NDK(ねえどんな気持ち?ではなく、Android Native Development Kit)を使って書いた3Dエンジンの組み込 みとかにも使うやつ(しらんけど) つまり、Envoy のソースコードが Android版でもそのまま使い回されている! まあ、そりゃ確かにサイトの宣伝通りではあるな・・・という感想 2020/6/20
ANDROIDでENVOYが動く仕組みの図 2020/6/20 JNI コンパイル済みの ネイティブコード HTTP周りの処理を任せる
まとめ 2020/6/20
_人人人人人人人人人_ > ENVOY をスマホで < > 動かすやつ <  ̄Y^Y^Y^Y^Y^Y^Y^ ̄ 2020/6/20
まとめ Envoy Mobile を使うと Envoy を HTTP クライアントライブラリとしてモバイルアプリに組み込める
NDK と JNI のおかげ ユーザーの OS や端末への依存を気にすることなく gRPC/QUIC などを使えるようになる インスタンス生成時に Envoy のコンフィグを読み込ませられるので、通信制御などもできる すべてが Envoy になる 2020/6/20
THANK YOU FOR YOUR ATTENTION 2020/6/20