SlideShare a Scribd company logo
Building a scalable learning platform
“how to make scaling the cloud’s problem”
instruqt
I like building and learning new things,
and sharing knowledge with others.
ERIK VELD
2instruqt
Founder of instruqt, focussing mostly
on the technical side.
ERIK VELD
3instruqt
What is instruqt?
4instruqt
Hands-on challenges that build skills on
DevOps and cloud.
WHAT IS INSTRUQT
5instruqt
Each user gets real infrastructure to
complete the challenges in.
WHAT IS INSTRUQT
6instruqt
Solutions are validated against the user
infrastructure.
WHAT IS INSTRUQT
7instruqt
Enough talking, demo time.
8instruqt
9
DEMO
PLATFORM
HOW IT STARTED
10
2016 2017 2018
HashiConf EU
instruqt
11instruqt
12instruqt
HOW IT STARTED
13
2016 2017 2018
HashiConf EU
HashiConf US
instruqt
14instruqt
HOW IT STARTED
15
2016 2017 2018
HashiConf EU
HashiConf US
Google Cloud Next
instruqt
16instruqt
HOW IT STARTED
17
2016 2017 2018
HashiConf EU
HashiConf US
Google Cloud Next
Current iteration
instruqt
How did we build this platform?
18instruqt
HOW IT IS BUILT
19
Google Cloud Platform Terraform Golang
instruqt
Entirely on Google Kubernetes Engine.
GOOGLE CLOUD PLATFORM
20instruqt
GKE gives us resilience, isolation,
service discovery and scaling for free.
GOOGLE CLOUD PLATFORM
21instruqt
Everything as a service from Google.
GOOGLE CLOUD PLATFORM
22instruqt
GOOGLE CLOUD PLATFORM
23
more
Container Registry
Datastore Kubernetes Engine Cloud SQL Cloud PubSub Cloud Storage
Compute Engine Cloud Functions Firebase
instruqt
GOOGLE CLOUD PLATFORM
24
more
Container Registry
Datastore Kubernetes Engine Cloud SQL Cloud PubSub Cloud Storage
Compute Engine Cloud Functions Firebase
instruqt
GOOGLE CLOUD PLATFORM
25
more
Container Registry
Datastore Kubernetes Engine Cloud SQL Cloud PubSub Cloud Storage
Compute Engine Cloud Functions Firebase
instruqt
Terraform manages our platform and
all of the services we use.
TERRAFORM
26instruqt
TERRAFORM
27
Describe what the desired state is,
don’t worry about how it’s achieved.
instruqt
GOLANG
28
With the small footprint and fast start
time we scale in seconds not minutes.
instruqt
GOLANG
29
With many interdependencies, a
monorepo solves a lot of problems.
instruqt
Tool inception.
30instruqt
Let’s take a look behind the scenes.
31instruqt
Terraform creates environments on
the fly, inserting variables where
needed.
BEHIND THE SCENES
32instruqt
33
DEMO
BEHIND THE SCENES
BEHIND THE SCENES
34
> PODSSERVICES
CONFIG
SECRETS
PROXY TRACK
NAMESPACE
OTHER INFRA
instruqt
Any container will work, platform
dependencies are injected at runtime.
BEHIND THE SCENES
35instruqt
# The volume is mounted in the pod from a git repository.
volume {
name = "bootstrap"
git_repo {
repository = "https://url-to-git-repo/bootstrap.git"
}
}
volume_mount {
name = "bootstrap"
mount_path = "/opt/bootstrap"
}
# Wait until the volume is mounted, then execute the setup script.
args = ["until [ -d /opt/bootstrap/ ]; do sleep 1; done;
/opt/bootstrap/setup.sh"]
36instruqt
Because terraform stores the state of
each user environment, cleanup is easy.
BEHIND THE SCENES
37instruqt
38
DEMO
BEHIND THE SCENES
How does terraform know
what to build?
39instruqt
The SDK creates a skeleton, which is
then filled out and sent to the pipeline.
TRACK PIPELINE
40instruqt
41
DEMO
CONTENT CREATION
Golang templates generate terraform
code that creates user environments.
TRACK PIPELINE
42instruqt
# The variables that need to go into the template.
data := struct {
Containers Container
}{ … }
# Create the destination file.
f, err := os.Create(outputPath)
# Parse the templates.
t := template.New(templateName)
_, err = t.ParseFiles(inputPath)
# Execute the template with the data.
for _, tmpl := range t.Templates() {
tmpl.ExecuteTemplate(f, tmpl.Name(), data)
}
43instruqt
# Loop over the containers in the config.yml file.
{{range .Containers}}
resource "kubernetes_replication_controller" "{{.Name}}" {
spec {
template {
container {
name = "{{.Name}}"
image = "{{.Image}}"
}
# Etc.
}
}
}
{{- end}}
44instruqt
45
DEMO
GENERATOR
Because of Container Builder we do
not have to run a build server anymore.
TRACK PIPELINE
46instruqt
47
DEMO
CONTAINER BUILDER
The platform and build pipeline are
scalable.
The challenge is scaling ourselves.
LESSONS LEARNED
48instruqt
Stand on the shoulders of giants and
use this to focus on your product.
49
LESSONS LEARNED
instruqt
Migrating to a different cloud provider
is not as much work as you might think.
LESSONS LEARNED
50instruqt
51
Thank you!
Erik Veld
@erikveld
instruqt.com

More Related Content

PDF
Ch2.setup.node.and.npm
PDF
Node.js + influx + grafana
PDF
Linux Security APIs and the Chromium Sandbox (SwedenCpp Meetup 2017)
PDF
Build A Private Developer's Cloud Using TripleO
PDF
Introduction to IoT.JS
PPTX
Neo4j python
PDF
K9s - Kubernetes CLI To Manage Your Clusters In Style
PDF
Muito Além de Containers: Arquitetura de um PaaS open source baseado em Go, D...
Ch2.setup.node.and.npm
Node.js + influx + grafana
Linux Security APIs and the Chromium Sandbox (SwedenCpp Meetup 2017)
Build A Private Developer's Cloud Using TripleO
Introduction to IoT.JS
Neo4j python
K9s - Kubernetes CLI To Manage Your Clusters In Style
Muito Além de Containers: Arquitetura de um PaaS open source baseado em Go, D...

What's hot (20)

PDF
PDF
A Close Look at ARM Code Size
PDF
How we do python
PDF
Vagrant: The ability to create production environments from day 1 of development
KEY
MacユーザからみるWindows7
PDF
Ggplot2 Installation Instructions
PDF
2016/11/05: OSWDem16 workshop
PDF
Ti.Roma - Meetup - Jumpstart w/ JALT
ODP
Create IoT with Open Source Hardware, Tizen and HTML5
PDF
Swiss magento meetup: APPUiO
PDF
容器與IoT端點應用
PDF
Introduction to the Moby Project
PDF
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
ODP
Porting Tizen to open source hardware devices for beginners
PDF
Learn how to build decentralized and serverless html5 applications with embar...
PDF
What is Docker and why is it so hot?
ODP
Introduction to ubuntu
PDF
Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at eZ Con...
PDF
Puppet Camp Sydney 2015: Puppet and AWS is easy right.....?
A Close Look at ARM Code Size
How we do python
Vagrant: The ability to create production environments from day 1 of development
MacユーザからみるWindows7
Ggplot2 Installation Instructions
2016/11/05: OSWDem16 workshop
Ti.Roma - Meetup - Jumpstart w/ JALT
Create IoT with Open Source Hardware, Tizen and HTML5
Swiss magento meetup: APPUiO
容器與IoT端點應用
Introduction to the Moby Project
Connected Tizen: Bringing Tizen to Your Connected Devices Using the Yocto Pro...
Porting Tizen to open source hardware devices for beginners
Learn how to build decentralized and serverless html5 applications with embar...
What is Docker and why is it so hot?
Introduction to ubuntu
Debugging Effectively in the Cloud - Felipe Fidelix - Presentation at eZ Con...
Puppet Camp Sydney 2015: Puppet and AWS is easy right.....?
Ad

Similar to Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018 (20)

PPTX
Building Instruqt, a scalable learning platform
PDF
From CoreOS to Kubernetes and Concourse CI
PDF
Terraforming your Infrastructure on GCP
PPTX
GCCP JSCOE Session 2
PDF
Why do we even have Kubernetes?
PDF
Forced Evolution: Shopify's Journey to Kubernetes
PDF
Kubernetes: Learning from Zero to Production
PDF
Build your own private Cloud environment
PDF
DNUG46 - Build your own private Cloud environment
PDF
Workshop: Deploying and Scaling Node.js with Kubernetes
PDF
WeCodeFest: kubernetes and google container engine codelab
PDF
Lunar Way and the Cloud Native "stack"
PDF
Scale out, with Kubernetes (k8s)
PPTX
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
PDF
Kubernetes best practices
PDF
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
PDF
terraformforindusrtybestpracticesforaws.pdf
PDF
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
PDF
X by orange; una telco en la nube
PDF
Container Camp London (2016-09-09)
Building Instruqt, a scalable learning platform
From CoreOS to Kubernetes and Concourse CI
Terraforming your Infrastructure on GCP
GCCP JSCOE Session 2
Why do we even have Kubernetes?
Forced Evolution: Shopify's Journey to Kubernetes
Kubernetes: Learning from Zero to Production
Build your own private Cloud environment
DNUG46 - Build your own private Cloud environment
Workshop: Deploying and Scaling Node.js with Kubernetes
WeCodeFest: kubernetes and google container engine codelab
Lunar Way and the Cloud Native "stack"
Scale out, with Kubernetes (k8s)
01 - VMUGIT - Lecce 2018 - Fabio Rapposelli, VMware
Kubernetes best practices
Microservices with Terraform, Docker and the Cloud. JavaOne 2017 2017-10-02
terraformforindusrtybestpracticesforaws.pdf
Microservices with Terraform, Docker and the Cloud. Chicago Coders Conference...
X by orange; una telco en la nube
Container Camp London (2016-09-09)
Ad

More from Codemotion (20)

PDF
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
PDF
Pompili - From hero to_zero: The FatalNoise neverending story
PPTX
Pastore - Commodore 65 - La storia
PPTX
Pennisi - Essere Richard Altwasser
PPTX
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
PPTX
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
PPTX
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
PPTX
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
PDF
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
PDF
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
PDF
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
PDF
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
PDF
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
PDF
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
PPTX
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
PPTX
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
PDF
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
PDF
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
PDF
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
PDF
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Pompili - From hero to_zero: The FatalNoise neverending story
Pastore - Commodore 65 - La storia
Pennisi - Essere Richard Altwasser
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019

Recently uploaded (20)

PPTX
MYSQL Presentation for SQL database connectivity
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Approach and Philosophy of On baking technology
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
PDF
cuic standard and advanced reporting.pdf
PPT
Teaching material agriculture food technology
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Electronic commerce courselecture one. Pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
MYSQL Presentation for SQL database connectivity
Diabetes mellitus diagnosis method based random forest with bat algorithm
Approach and Philosophy of On baking technology
Understanding_Digital_Forensics_Presentation.pptx
Network Security Unit 5.pdf for BCA BBA.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology
cuic standard and advanced reporting.pdf
Teaching material agriculture food technology
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
NewMind AI Weekly Chronicles - August'25 Week I
Reach Out and Touch Someone: Haptics and Empathic Computing
Electronic commerce courselecture one. Pdf
Digital-Transformation-Roadmap-for-Companies.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Mobile App Security Testing_ A Comprehensive Guide.pdf
“AI and Expert System Decision Support & Business Intelligence Systems”
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

Building a scalable learning platform - Erik Veld - Codemotion Amsterdam 2018