Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Envoy mobile完全に理解した / Imperfectly understood En...
Search
Kohei Ota
June 20, 2020
Technology
440
2
Share
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.5k
The Cloud Native Chronicles: 10 Years of Community Growth Inside and Outside Japan
inductor
0
170
Cracking the KubeCon CfP
inductor
2
810
KubeCon Recap -Platform migration at Scale-
inductor
1
1.1k
コンテナビルド最新事情 2022年度版 / Container Build 2022
inductor
3
590
データベースとストレージのレプリケーション入門 / Intro-of-database-and-storage-replication
inductor
29
6.6k
KubeConのケーススタディから振り返る、Platform for Platforms のあり方と その実践 / Lessons from KubeCon case studies: Platform for Platforms and its practice
inductor
3
970
オンラインの技術カンファレンスを安定稼働させるための取り組み / SRE activity for online conference platform
inductor
1
1.4k
Kubernetesネットワーキング初級者脱出ガイド / Kubernetes networking beginner's guide
inductor
22
7.4k
Other Decks in Technology
See All in Technology
ネットワーク運用を楽にするAWS DevOps Agent活用法!! / 20260421 Masaki Okuda
shift_evolve
PRO
2
230
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
37k
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
290
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
160
Chasing Real-Time Observability for CRuby
whitegreen
0
260
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
190
バイブコーディングで3倍早く⚪⚪を作ってみた
samakada
0
120
The Journey of Box Building
tagomoris
4
3.5k
AIはハッカーを減らすのか、増やすのか?──現役ホワイトハッカーから見るAI時代のリアル【MEGU-Meet】
cscengineer
PRO
0
200
基盤を育てる 外部SaaS連携の運用
gamonges_dresscode
1
120
EMから幅を広げるために最近挑戦していること / Recent challenges I'm undertaking to expand my horizons beyond EM
hiro_torii
1
130
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
350
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
320
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Six Lessons from altMBA
skipperchong
29
4.2k
Why Our Code Smells
bkeepers
PRO
340
58k
Everyday Curiosity
cassininazir
0
200
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
150
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
170
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
110
Speed Design
sergeychernyshev
33
1.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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