Slide 1

Slide 1 text

Creating a "Docker Like" developer experience for WebAssembly Yuval Kohavi - Chief Architect @ Solo.io Shane O’Donnell - Software Engineer @ Solo.io

Slide 2

Slide 2 text

2 | Copyright © 2020 2 | Copyright © 2020 Yuval Kohavi Chief Architect Solo.io Shane O’Donnell Software Engineer Solo.io

Slide 3

Slide 3 text

3 | Copyright © 2020 3 | Copyright © 2020 Introduction - Envoy

Slide 4

Slide 4 text

4 | Copyright © 2020 Envoy - Cloud Native HTTP/TCP Proxy - Can be used to implement API Gateways, service meshes. - Configurable via API - Extendable - This one of the most compelling Envoy features. Each user can customize it.

Slide 5

Slide 5 text

5 | Copyright © 2020

Slide 6

Slide 6 text

6 | Copyright © 2020 Gloo - Envoy based API gateway - Envoy configuration is verbose, and intended to be machine generated - Provides simpler abstractions

Slide 7

Slide 7 text

7 | Copyright © 2020 Control Path EXTERNAL AUTH RATE LIMITING gRPC TRANSCODER ROUTER UPSTREAM EXTERNAL AUTH SERVER RATE LIMITING SERVER VirtualService : route: / -> svc1 auth: opa: allow = ... auth: opa: allow = ... route: / -> svc1

Slide 8

Slide 8 text

8 | Copyright © 2020 Data Path EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM EXTERNAL AUTH SERVER RATE LIMITING SERVER POST /dentists Content-Type: application/json Authorization: Bearer xyz {"name":”Dr. Seuss"} POST /com.example.DentistService/AddDentist Content-Type: application/grpc Authorization: Bearer xyz Binary protobuf: \x12\x011\x12\seuss { Method: "POST", Path: "/dentists", Headers: { "Content- Type”:"application/json", "Authorization": "Bearer xyz" } } OK Descriptors {generic_key: "add-drs"} OK gRPC TRANSCODER

Slide 9

Slide 9 text

9 | Copyright © 2020 ⃞ Use other languages ⃞ Fast ⃞ Safe ⃞ No need to compile ⃞ Easy Very powerful, but leaves a lot to wish for…

Slide 10

Slide 10 text

10 | Copyright © 2020 10 | Copyright © 2020 Extend Data Plane

Slide 11

Slide 11 text

11 | Copyright © 2020 EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM EXTERNAL AUTH SERVER RATE LIMITING SERVER CUSTOM gRPC TRANSCODER Gloo – Custom filters ⃞ Use other languages ✓ Fast ✓ Safe ⃞ No need to compile ⃞ Easy

Slide 12

Slide 12 text

12 | Copyright © 2020 12 | Copyright © 2020 Web Assembly

Slide 13

Slide 13 text

13 | Copyright © 2020 “WebAssembly: it’s neither web, nor assembly” WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications. -> No Assembly -> Binary Instruction Format -> No Web -> WASI

Slide 14

Slide 14 text

14 | Copyright © 2020 Portable

Slide 15

Slide 15 text

15 | Copyright © 2020 Secure

Slide 16

Slide 16 text

16 | Copyright © 2020 Fast Java Script WebAssembly

Slide 17

Slide 17 text

17 | Copyright © 2020 Any Language

Slide 18

Slide 18 text

18 | Copyright © 2020 WebAssembly Outside the Web

Slide 19

Slide 19 text

19 | Copyright © 2020 ✓ Use any language ✓ Fast ✓ Safe ✓ No need to compile ✓ Easy Very powerful, but leaves a lot to wish for…

Slide 20

Slide 20 text

20 | Copyright © 2020 20 | Copyright © 2020 Envoy support for WebAssembly

Slide 21

Slide 21 text

21 | Copyright © 2020 WASM in Envoy EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM CUSTOM gRPC TRANSCODER

Slide 22

Slide 22 text

22 | Copyright © 2020 WASM in Envoy EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM WASM gRPC TRANSCODER

Slide 23

Slide 23 text

23 | Copyright © 2020 WASM in Envoy EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM WASM gRPC TRANSCODER Code V8 ABI

Slide 24

Slide 24 text

24 | Copyright © 2020 ABI: Application Binary Interface

Slide 25

Slide 25 text

25 | Copyright © 2020 SDK

Slide 26

Slide 26 text

26 | Copyright © 2020 WASM in Envoy EXTERNAL AUTH RATE LIMITING ROUTER UPSTREAM WASM gRPC TRANSCODER Code V8 ABI Code + SDK

Slide 27

Slide 27 text

27 | Copyright © 2020 ✓ Use any language ✓ Fast ✓ Safe ✓ No need to compile ⃞ Easy Very powerful, but leaves a lot to wish for…

Slide 28

Slide 28 text

28 | Copyright © 2020 28 | Copyright © 2020 Developer Experience

Slide 29

Slide 29 text

29 | Copyright © 2020

Slide 30

Slide 30 text

30 | Copyright © 2020 SECURITY

Slide 31

Slide 31 text

31 | Copyright © 2020 Web Assembly Hub SECURITY

Slide 32

Slide 32 text

32 | Copyright © 2020 ✓ Use any language ✓ Fast ✓ Safe ✓ No need to compile ✓ Easy Very powerful, but leaves a lot to wish for…

Slide 33

Slide 33 text

33 | Copyright © 2020 Beyond Envoy... - OCI Artifact Spec - Expand to other projects - OPA, krustlet, … - More tooling - Testing, Debugging, …

Slide 34

Slide 34 text

34 | Copyright © 2020 34 | Copyright © 2020 @soloio_inc github.com/solo-io www.solo.io