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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AIが盛んな時代に 技術記事を書き始めて起きた私の中での小さな変化
peintangos
0
320
AIコーディング時代における、ソフトウェアサプライチェーン攻撃に対する防衛術(簡易版)
soysoysoyb
0
180
運用システムにおけるデータ活用とPlatform
sansantech
PRO
0
140
Anthropic「Long-running a gents」をGeminiで再現してみた
tkikuchi
0
690
AWS Agent Registry の基礎・概要を理解する/aws-agent-registry-intro
ren8k
3
420
AI時代 に増える データ活用先
takahal
0
340
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
1
110
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
110
これからの「データマネジメント」の話をしよう
sansantech
PRO
0
170
AWS Transform CustomでIaCコードを自由自在に変換しよう
duelist2020jp
0
210
今年注目する!データ分析プラットフォームでのAIの活用
nayuts
0
170
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
330
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
170
Paper Plane (Part 1)
katiecoart
PRO
0
6.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.2k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
190
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
エンジニアに許された特別な時間の終わり
watany
106
240k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
120
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
270
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Why Our Code Smells
bkeepers
PRO
340
58k
Evolving SEO for Evolving Search Engines
ryanjones
0
180
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