Envoy vs Linkerd at Cookpad
• no VM vs JVM
‣ less resource usage
‣ hot restart
• 豊富な設定、xDS API による更新
• h2, gRPC support が not experimental
• Istio での採用状況: community の厚さ
Slide 48
Slide 48 text
C++?
• 実は modern C++ は言うほど読みにくくない、syntax
的にむしろ読みやすい方
• 実は modern C++ は言うほど書きにくくない、覚えるこ
とはわりとあるが step by step でパッチを書ける
• 各種ツールが優秀: clang-tidy, AddressSanitizer,
ThreadSanitizer...
• あくまでアプリケーションを読み書きする上では。ライ
ブラリはわからない
• Envoy コミュニティのレビュー層が厚い
• hot reload/hot restart のサポート
• nghttp2 for h2, single process multi-
threaded, libevent for aysnc IO
• 豊富な stats: per AZ, per listener, per
upstream cluster, per canary...
• リトライ・タイムアウト・サーキットブレーカー
• 分散トレーシング: request ID の発行・ログの送
信
xDS API
• data-plane API とも呼ばれている
• Envoy 内の情報を更新するための API spec
‣ LDS: Listener Discovery Service
‣ CDS: Cluster Discovery Service
‣ EDS: Endpoint Discovery Service
‣ RDS: Route Discovery Service
‣ その他…
Slide 56
Slide 56 text
コンポーネントの概観
Slide 57
Slide 57 text
Thread model
https://blog.envoyproxy.io/envoy-threading-model-a8d44b922310
Slide 58
Slide 58 text
Hot Restart
https://blog.envoyproxy.io/envoy-hot-restart-1d16b14555b5