webinar: code faster on kubernetes
TRANSCRIPT
![Page 1: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/1.jpg)
Code Faster on Kubernetes(Service Oriented Development)
Rafael Schloming - @rschlomingPhilip Lombardi - @TheBigLombowski
![Page 2: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/2.jpg)
datawire.io
How do I break up my monolith?
How do I architect my app with microservices?
What infrastructure do I need in place before I can benefit from microservices?
2
![Page 3: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/3.jpg)
datawire.io
● Building a cloud application using microservices in 2015
● Distributed systems engineers● Deeply studied microservices
Architectures & Technology
3
Microservices at Datawire ...
![Page 4: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/4.jpg)
datawire.io
Control Plane and Data Plane
4
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Control Plane
Discovery
AuthN/AuthZ
Routing policy
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
![Page 5: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/5.jpg)
datawire.io
Debugging Velocity (or lack thereof)
5
![Page 6: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/6.jpg)
datawire.io
ToolingArchitecture
Process!!!
6
![Page 7: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/7.jpg)
datawire.io
Debugging our Pipeline
7
![Page 8: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/8.jpg)
datawire.io
Velocity comes from Process, not Architecture
8
![Page 9: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/9.jpg)
datawire.io
Service Oriented ArchitectureService Oriented Development
9
![Page 10: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/10.jpg)
datawire.io 10
Stability/Maturity
Velocity
Prototype Production Mission critical
![Page 11: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/11.jpg)
datawire.io 11
Stability/Maturity
Velocity
Prototype Production Mission critical
![Page 12: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/12.jpg)
datawire.io
A single process is inefficient(Forces a single Stability vs Velocity Tradeoff)
12
![Page 13: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/13.jpg)
datawire.io 13
Define
Code
Test
Release
Prod
![Page 14: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/14.jpg)
datawire.io 14
Define
Code
Test
Release
Prod
Centralized process
● Specialized teams● Fixed policies (e.g.,
release criteria)
![Page 15: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/15.jpg)
datawire.io
A single process doesn’t scale
15
![Page 16: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/16.jpg)
datawire.io
How do I break up my monolith?How do I break up my process?
16
![Page 17: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/17.jpg)
datawire.io 17
Microservices lets you run multiple processes!
![Page 18: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/18.jpg)
datawire.io
Microservices is a distributed development architecture
workflow.
18
![Page 19: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/19.jpg)
datawire.io 19
Stability/Maturity
Velocity
Prototype Production Mission critical
● How do I get to Continuous Deployment incrementally?● How do I limit the scope of PCI (audit process)?● How do I ship feature X as fast as possible?
![Page 20: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/20.jpg)
datawire.io
Microservices is ...
● Multiple processes○ Including your existing process!○ Processes designed for different stability/velocity
tradeoffs● Simultaneous processes
20
![Page 21: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/21.jpg)
datawire.io
Doing things this way shifts how people operate!
● Requires both organizational and technical changes
21
![Page 22: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/22.jpg)
datawire.io
Organizational Implementation
22
![Page 23: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/23.jpg)
datawire.io
Education
● Everyone exposed to full dev cycle
Communication
● Nobody speaks the same language
Delegation
● Small teams own big important parts
You gotta give in order to get
23
![Page 24: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/24.jpg)
datawire.io
But you get a lot
24
Education
● Specialists become generalists -> Better holistic systems● Learning, personal growth -> Job satisfaction
Communication
● Conflict -> Collaboration
Delegation
● Massive organizational scale
![Page 25: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/25.jpg)
datawire.io
Create self-sufficient, autonomous software teams.
25
![Page 26: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/26.jpg)
datawire.io
Why self-sufficiency and autonomy?
● Self-sufficient○ Team does not need to rely on other teams to achieve its goals
● Autonomy○ Team is able to independently make (process) decisions on how to achieve its goals
26
![Page 27: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/27.jpg)
datawire.io
Eliminate centralized specialist functions
27
Centralized architecture Centralized infrastructure / ops*(You might need a platform team)
![Page 28: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/28.jpg)
datawire.io
Think Spinoff
28
![Page 29: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/29.jpg)
datawire.io 29
Monolith
![Page 30: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/30.jpg)
datawire.io 30
Monolith
MicroserviceTeam
![Page 31: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/31.jpg)
datawire.io
Technical Implementation
31
![Page 32: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/32.jpg)
datawire.io
Control Plane and Data Plane
32
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Control Plane
Discovery
AuthN/AuthZ
Routing policy
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
![Page 33: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/33.jpg)
datawire.io
People operate the control plane
33
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...Control Plane
Discovery
AuthN/AuthZ
Routing policy
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Sidecar Proxies
Health checks
Observability
L4/L7 routing
...
Control Plane UI
People
![Page 34: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/34.jpg)
datawire.io
Guiding goal: make our team productive
34
Tools for Generalists
● Generalist UX != Specialist UX● Specialist: All the things● Generalist: Simple, Complete, Discoverable
Tools for Education
● Build on familiar concepts● Safe defaults● Great feedback
Tools for Autonomous Developers
● Fit multiple processes
![Page 35: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/35.jpg)
datawire.io
The Datawire Story...
● We have been building cloud apps as microservices since 2015
● Way too small to have an actual dedicated ops / platform engineer
35
![Page 36: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/36.jpg)
datawire.io
The Datawire Story...
● But…! Good news I did that in a previous life.
● Problem…! I’m supposed to be writing product code.
36
![Page 37: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/37.jpg)
datawire.io
The Datawire Story...
I wanted to do self-service so any developer could scratch their own itch without bugging me.
37
![Page 38: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/38.jpg)
datawire.io
Some design considerations...
● Polyglot programming shop
● Lots of different toolchains
● Distributed-ish engineering organization
● Not everyone has a strong background in microservices and infrastructure
● Several mission critical services
38
![Page 39: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/39.jpg)
datawire.io
The Datawire Story...
Also I wanted to do it “right”... so I architected the shit out the problem with tools!
39
![Page 40: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/40.jpg)
datawire.io 40
Expected Reaction… :D
![Page 41: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/41.jpg)
datawire.io 41
… Actual Reaction D:
![Page 42: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/42.jpg)
datawire.io
Late 2015… 2016...
Change was slow and painful before adopting better starting principles...
42
![Page 43: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/43.jpg)
datawire.io
It’s about the people and process, dummy
● Turns out it is not a tooling problem…
● It is a people and process problem…
● Engineers hate adopting new tools when the reason is not compelling… especially if the new tools make their life harder.
● All the tooling in the world does not stop people from continuing their existing behaviors…
● Every tool has a cost because every tool can and will be used slightly differently by different people.
43
![Page 44: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/44.jpg)
datawire.io
“Did you read the README?” ~ “No, but...”
44
● A README isn’t enough.
● Developers are bad at RTFM and WTFM.
● Lots of arguments over people doing things differently from how the README stated…
● Lots of arguments also over people not knowing how to do things because the README did not state anything about <X>.
![Page 45: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/45.jpg)
datawire.io
Back to the drawing board...
● We wanted a common build/deployment mechanism that would work for everyone and anything (including CI, multiple languages, etc.)
● Started with Docker as it gave a common way to package and ship code.
● Kubernetes had been on my radar since 2014 but seemed finally ready for mass adoption at this point so we picked that to run containers.
45
![Page 46: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/46.jpg)
datawire.io
Our Kubernetes Journey...
● We built tools based on two things:a. Painb. Common patterns we discovered across all our repositories
46
![Page 47: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/47.jpg)
datawire.io
1. Code a change on a branch (e.g. dev/awesome-feature)
2. Package the build toolchain into the Docker image itself!
3. Run a single command and a new Docker image is built… no need to setup tools on developers machines. Build process is codified into Dockerfile.
Step 1: Provide fast repeatable builds for everyone
47
![Page 48: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/48.jpg)
datawire.io
Step 1: I said everyone and I meant everyone...
48
![Page 49: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/49.jpg)
datawire.io
● Commit (or don’t commit) a change on a branch (e.g. dev/awesome-feature)
● Run command and presto…! Updated code is running on the cluster without disturbing any other deployment.
● Support any number of parallel deployments of the same codebase
Step 2: Provide fast self-service deploy
49
![Page 50: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/50.jpg)
datawire.io
Step 1 + 2 Recap
● Docker and Kubernetes provide the backbone of build and deployment.
● We found ourselves mostly doing the same thing (docker build ..., kubectl [apply|create] ...) so we codified it into tools that work fast and have a small learning surface area for devs.
● Nothing “magical” about what the tools do and they can be easily bypassed if necessary.
50
![Page 51: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/51.jpg)
datawire.io
● Add a little metadata to a Kubernetes service manifest
● Ambassador listens and picks up change and configures Envoy
● Makes it super easy to do stuff like expose a branch (dev/awesome-feature) as https://dev-awesome-feature.datawire.io
Step 3: Make it easy to reach the changed code
51
![Page 52: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/52.jpg)
datawire.io
Hell no.(But it’s soooooo much better than before)
Perfect?
52
![Page 53: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/53.jpg)
datawire.io
What’s left?
● Self-service bootstrapping
● Self-service stateful infrastructure
● Self-service external to Kubernetes infrastructure (e.g. Amazon RDS)
● Monitoring And Logging
53
![Page 54: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/54.jpg)
datawire.io
All the Things
54
![Page 55: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/55.jpg)
datawire.io
Capabilities aren’t Enough, UX Matters
55
![Page 56: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/56.jpg)
datawire.io
Process and People factors drive the UX
56
![Page 57: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/57.jpg)
datawire.io
Build the tools your teams need now
57
Tools for Generalists
● Generalist UX != Specialist UX● Generalist: Simple, Complete, Discoverable
Tools for Education
● Build on familiar concepts● Safe defaults● Great feedback
Tools for Autonomous Developers
● Fit multiple processes
![Page 58: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/58.jpg)
datawire.io
Demo
58
![Page 59: Webinar: Code Faster on Kubernetes](https://reader033.vdocuments.mx/reader033/viewer/2022051710/5a6479b27f8b9a31568b47b7/html5/thumbnails/59.jpg)
datawire.io
Thank you!
59
Build your own dev workflow
https://www.datawire.io/faster
Tweet Us!
@datawireio@thebiglombowski@rschloming
Email Us!
[email protected]@datawire.io