SlideShare a Scribd company logo
1 of 57
Download to read offline
Hi, I’m Michael Lange.
I work at HashiCorp.
he/him
😡🧊🌧
You may know me
from the Nomad UI.
I write JavaScript for the browser
▪ A high-level language
▪ The loosest types with judicious coercion
▪ No memory management
▪ No filesystem
▪ Computers are an implementation detail
Copyright © 2021 HashiCorp
I just want to ship
my code.
Waypoint, Nomad, and other things.
Netlify Vercel
Just push your code and receive a website. A+ dev experience
Black box
What happens inside?
None of our business.
Black box
▪ Data plane (customer sites)
▪ Control plane
▪ Some sorta scheduler
▪ Lotsa DNS for static files
▪ CDN, file propagation
▪ Cgi-bin? Lol?
▪ A bunch of engineers of all
varieties
That’s just business.
What happens when you have
your own internal platform?
An extreme example
✨externalities✨
Consider the whole system
Ops
Friendly
It’s possible to go too far the
other way.
Enter Waypoint
Consistent, dev-friendly workflows decoupled
from platforms.
With Waypoint, you get a single config file
CODE EDITOR
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "docker" {
image = "example-nodejs"
tag = "1"
local = true
}
}
}
deploy {
use "kubernetes" {
probe_path = "/"
}
}
release {
use "kubernetes" {
}
}
}
Demo One
NodeJS + Kubernetes
What you didn’t see is what’s interesting
1. No Dockerfile or docker-compose.yml
2. No ReplicaSet
3. No Deployment
4. No Service
5. No kubectl
6. No YAML
The Power of Abstractions 💪
Build Registry Deploy Release
package.json
*.js
*.ejs
*.png
Source Code
Buildpacks Container Image
Hub/ECR/GCR ReplicaSet
Service
kubectl apply
Deployment
Let’s Re-platform!
Nomad
Kubernetes
Before…
Build Registry Deploy Release
package.json
*.js
*.ejs
*.png
…After
Build Registry Deploy Release
package.json
*.js
*.ejs
*.png
HCL
Built in to
service jobs
And the Waypoint File
CODE EDITOR
project = "example-nodejs"
app "example-nodejs" {
build {
use "pack" {}
registry {
use "docker" {
image = "nodejs-example"
tag = "1"
local = true
}
}
}
deploy {
use "nomad" {
datacenter = "dc1"
}
}
}
And the Waypoint File
CODE EDITOR
project = "example-nodejs"
app "example-nodejs" {
build {
use "pack" {}
registry {
use "docker" {
image = "nodejs-example"
tag = "1"
local = true
}
}
}
deploy {
use "nomad" {
datacenter = "dc1"
}
}
}
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "docker" {
image = "example-nodejs"
tag = "1"
local = true
}
}
}
deploy {
use "kubernetes" {
probe_path = "/"
}
}
release {
use "kubernetes" {
}
}
}
Demo Two
NodeJS + Nomad
Takeaways
From the perspective of a product engineer
1. No workflow change!!!
1. waypoint init && waypoint up
2. Very little code change
3. Minor conceptual changes to output
4. Both Kubernetes and Nomad are built for common abstractions
Bigger Picture
Abstractions
All
The
Way
Down
Deprecated? How could this be???
Anatomy of Docker
From https://docs.docker.com/get-started/overview/
The Power of Abstractions!!
From https://docs.docker.com/get-started/overview/
Container
Runtime
Interface
Want to go deeper?
From https://containerd.io/
:)
Wait a second…
From https://containerd.io/
>:(
Copyright © 2021 HashiCorp
I just want to ship
my code.
Waypoint, Nomad, and other things.
What
else can be removed?
Yertle the Turtle by Dr. Seuss
What
will it take?
Yertle the Turtle by Dr. Seuss
First, why containers?
Workflows, not technologies
1. Immutability
2. Portability
3. Isolation
4. Resource limits
A look at Nomad’s
Task Driver Model
A loosely abstracted,
unopinionated, pluggable
runtime model
Ranging from raw processes to
VMs to containers.
Many are builtin, many are
community owned.
The Nomad exec driver
1. Builds a chroot
2. And a cgroup
3. Configurable resource limits
4. All on demand
Immutability
Portability
Isolation
Resource limits
Immutability
Portability
Isolation
Resource limits
How do we get immutability?
How do we get immutability?
We make a binary!
https://github.com/vercel/pkg
But what
about non-
executable
files?
Annotate your
package.json file to bake
files into your binary.
CODE EDITOR
{
"name": "node-js-getting-started",
"version": "0.3.0",
"description": "A sample Node.js app using Express 4",
"engines": {
"node": "12.x"
},
"main": "index.js",
"scripts": {
"start": "node index.js",
"test": "node test.js"
},
"dependencies": {
"directory-tree": "^2.2.5",
"ejs": "^2.5.6",
"express": "^4.15.2"
},
"devDependencies": {
"got": "^11.3.0",
"tape": "^4.7.0"
},
"keywords": [
"node",
"express"
],
"license": "MIT",
"bin": "index.js",
"pkg": {
"assets": [
"views/**/*",
"public/**/*"
]
}
}
Immutability
Portability
Isolation
Resource limits
File Servers are
tried and true.
Immutability
Portability
Isolation
Resource limits
Putting it all together
▪ Buildpacks (Dockerfile)
▪ Container Registry
▪ docker driver
pkg (binary)
File server (probably S3)
exec Driver
Demo Three
NodeJS + Pkg + Nomad
Nomad with Docker
Build Registry Deploy Release
package.json
*.js
*.ejs
*.png
HCL
Built in to
service jobs
The Power of ABSTRACTIONS!!! 💪
Build Registry Deploy Release
package.json
*.js
*.ejs
*.png
HCL
Built in to
service jobs
pkg BIN
:)
No workflow
change.
Docker Pkg
Let’s review some stats
Build Time 55.50s
Artifact Size 1075MB
Build Time 4.67s
Artifact Size 46MB
Safety NOT
Guaranteed
▪ Not ready for
production
▪ Check out the code
though!
https://github.com/dingoeatingfuzz/waypoint-plugin-pkg
The moral of the story
1. Consider the whole system
2. Well defined interfaces help us all
3. Abstractions are all around us
4. Challenge those abstractions from time to time
Make time and space for this R&D
I Just Want to Run My Code: Waypoint, Nomad, and Other Things

More Related Content

What's hot

What's hot (20)

From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017From Docker to Production - SunshinePHP 2017
From Docker to Production - SunshinePHP 2017
 
Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017Docker for PHP Developers - php[world] 2017
Docker for PHP Developers - php[world] 2017
 
Webinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDBWebinar: From Development to Production with Docker and MongoDB
Webinar: From Development to Production with Docker and MongoDB
 
Deploy django apps using docker
Deploy django apps using dockerDeploy django apps using docker
Deploy django apps using docker
 
dkr_django_slides
dkr_django_slidesdkr_django_slides
dkr_django_slides
 
大型App面臨的挑戰
大型App面臨的挑戰大型App面臨的挑戰
大型App面臨的挑戰
 
Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)
 
Ferrara Linux Day 2011
Ferrara Linux Day 2011Ferrara Linux Day 2011
Ferrara Linux Day 2011
 
Docker intro workshop: Dockerize your PHP app
Docker  intro workshop: Dockerize your PHP appDocker  intro workshop: Dockerize your PHP app
Docker intro workshop: Dockerize your PHP app
 
How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker How we dockerized a startup? #meetup #docker
How we dockerized a startup? #meetup #docker
 
Docker and Windows: The State of the Union
Docker and Windows: The State of the UnionDocker and Windows: The State of the Union
Docker and Windows: The State of the Union
 
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @GuidewireIntroduction to Docker at SF Peninsula Software Development Meetup @Guidewire
Introduction to Docker at SF Peninsula Software Development Meetup @Guidewire
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
Deploying containers and managing them on multiple Docker hosts, Docker Meetu...
 
Docker as development environment
Docker as development environmentDocker as development environment
Docker as development environment
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutes
 
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQIntroduction to Docker and all things containers, Docker Meetup at RelateIQ
Introduction to Docker and all things containers, Docker Meetup at RelateIQ
 
為什麼Method數超過65535會build fail?
為什麼Method數超過65535會build fail?為什麼Method數超過65535會build fail?
為什麼Method數超過65535會build fail?
 
Developer workflow with docker
Developer workflow with dockerDeveloper workflow with docker
Developer workflow with docker
 
Architectural caching patterns for kubernetes
Architectural caching patterns for kubernetesArchitectural caching patterns for kubernetes
Architectural caching patterns for kubernetes
 

Similar to I Just Want to Run My Code: Waypoint, Nomad, and Other Things

Similar to I Just Want to Run My Code: Waypoint, Nomad, and Other Things (20)

Accelerate your development with Docker
Accelerate your development with DockerAccelerate your development with Docker
Accelerate your development with Docker
 
Accelerate your software development with Docker
Accelerate your software development with DockerAccelerate your software development with Docker
Accelerate your software development with Docker
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
DevEx | there’s no place like k3s
DevEx | there’s no place like k3sDevEx | there’s no place like k3s
DevEx | there’s no place like k3s
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Docker 101
Docker 101 Docker 101
Docker 101
 
Docker for dev
Docker for devDocker for dev
Docker for dev
 
Docker module 1
Docker module 1Docker module 1
Docker module 1
 
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp BerlinTech Talk: DevOps at LeanIX @ Startup Camp Berlin
Tech Talk: DevOps at LeanIX @ Startup Camp Berlin
 
[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
 
Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Ceph, Docker, Heroku Slugs, CoreOS and Deis OverviewCeph, Docker, Heroku Slugs, CoreOS and Deis Overview
Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Nodejs
NodejsNodejs
Nodejs
 
Introduction to node.js By Ahmed Assaf
Introduction to node.js  By Ahmed AssafIntroduction to node.js  By Ahmed Assaf
Introduction to node.js By Ahmed Assaf
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker primer and tips
Docker primer and tipsDocker primer and tips
Docker primer and tips
 
DevAssistant, Docker and You
DevAssistant, Docker and YouDevAssistant, Docker and You
DevAssistant, Docker and You
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Pharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodologyPharm-D Biostatistics and Research methodology
Pharm-D Biostatistics and Research methodology
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 

I Just Want to Run My Code: Waypoint, Nomad, and Other Things