SlideShare a Scribd company logo
1 of 20
Download to read offline
PUTTING
CAKE INTO
YOUR CI
M A R K B A K E R
T E C H N I C A L D I R E C TO R , E A
@ m a r k l t b a k e r
ABOUT ME
I MAKE GAMES
FOR 20+YEARS
LAST 10+YEARS,
HELPING OTHERS
MAKE BETTER GAMES
TOOLS,
AUTOMATION, CI
DEVOPS FOR GAMES
@markltbaker
WHY DO WE
NEED CAKE
ANYWAY?
• CI is complex
• Simplify it into different concerns
• Compare different CI systems
• Suggest design improvements
@markltbaker
THE
CAKE IS
NOT A
LIE
B U T A L S O, I T I S A
M E N TA L M O D E L .
S O R RY.
Rainbow Layer Cake by Tim Ebbs licensed under CC-BY-NC-ND 2.0
@markltbaker
LAYERS ARE NOT NEW
• OSI networking model
• Each layer is a separate concern
• Layers only interact with
neighbors
OSI Network Model from tech-faq.com@markltbaker
Rainbow Layer Cake by Tim Ebbs licensed under CC-BY-NC-ND 2.0
LAYER CAKE
MODEL
Meta
Allocation
Orchestration
Execution
Environment
Hardware
@markltbaker
HARDWARE
• CPU, RAM and storage resources
• Could be physical hardware or virtual “hardware”
• Example of compatibility between different
implementations of a layer
This Photo by lonewolf6738 is licensed under CC0
@markltbaker
ENVIRONMENT
• Software used to execute the CI job.
• Operating System
• Compiler, build tools, libraries, SDKs
• Agent communication/other services needed
• Typically the same Environment can be used for
multiple similar CI jobs
This Photo by DAVID ILIFF is licensed under CC BY-SA
@markltbaker
EXECUTION
• Controls execution on a single machine
– e.g. `maven test`
• Simple scripting language could be used
– IDE is useful for local development
"stacked rocks" by Neil Howard is licensed under CC BY-NC 2.0
@markltbaker
ORCHESTRATION
• Splits and combines work between multiple machines
• Vital for large pipelines
• Often in parallel
• Describe dependencies between Executions
– Including outputs / inputs
"23 University of London Symphony Orchestra c 1968" by Paul Ealing 2011 is licensed under CC BY-NC-SA 2.0
@markltbaker
ALLOCATION
• Which SCM branch the CI operates on
• What causes a CI job to start
– Which git hash / changelist
• A.k.a “Trigger” layer
"Patch panels, wires and switches" by Craig A Rodway is licensed under CC BY-NC-ND 2.0
@markltbaker
META
• Which CI server / instance
– Seed jobs, JobDSL
• Can be multiple in a larger team / company
• Less so with “CI as a Service” providers
This map of Meta, a department of Colombia, is from Wikipedia and is licensed under CC BY-SA
@markltbaker
Meta Distribute work between instances / sites
Allocation
Assigns a CI flow to a stream.
Determines when CI flows start
Orchestration
Distributes work between machines and
defines input/output dependencies
Execution Executes work on a single machine
Environment Operating System + installed tools needed
Hardware CPU, Disk, RAM
@markltbaker
Meta Distribute work between instances / sites
Allocation
Assigns a CI flow to a stream.
Determines when CI flows start
Orchestration
Distributes work between machines and
defines input/output dependencies
Execution Executes work on a single machine
Environment Operating System + installed tools needed
Hardware CPU, Disk, RAM
@markltbaker
HOW DOES THIS HELP?
• We had put a lot of logic into Jenkins Groovy Build Flow implementation
• Slow to work with, hard to validate changes
@markltbaker
TOO MUCH COMPLEXITY
• We had put a lot of logic into Jenkins Groovy Build Flow implementation
• Slow to work with, hard to validate changes
• Combined both Orchestration and Execution layers
• So…
@markltbaker
SPLIT INTO LAYERS
• Split out into simpler Groovy Orchestration and Python Execution layers
• Changes to CI more localised
@markltbaker
EXECUTION LAYER IN PYTHON
• Split out into simpler Groovy Orchestration and Python Execution layers
• Changes to CI more localised
• Easier to develop, understand, validate, debug locally
• Much happier team!
@markltbaker
WHAT'S THE FUTURE
OF LAYER CAKE?
• Blog post with more details
• Using Layer Cake to compare different CI systems
• Using Layer Cake to refine our own designs for
“Game CI as a Service”
”Rainbow Layer Cake with mallow icing” by Strawbyb licensed under CC-BY-NC-ND 2.0
@markltbaker
ALL FEEDBACK
WELCOME!
• Read the blog post
• What do you think of the Layer Cake?
• @markltbaker
”Rainbow Layer Cake with mallow icing” by Strawbyb licensed under CC-BY-NC-ND 2.0
@markltbaker
THANK YOU

More Related Content

What's hot

How Nuxeo uses the open-source continuous integration server Jenkins
How Nuxeo uses the open-source continuous integration server JenkinsHow Nuxeo uses the open-source continuous integration server Jenkins
How Nuxeo uses the open-source continuous integration server JenkinsNuxeo
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...C4Media
 
Webinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at KitchensurfingWebinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at KitchensurfingMongoDB
 
Getting out of the Job Jungle with Jenkins
Getting out of the Job Jungle with JenkinsGetting out of the Job Jungle with Jenkins
Getting out of the Job Jungle with JenkinsSonatype
 
DockerCon EU 2015: Zoe: Swarming Spark applications
DockerCon EU 2015: Zoe: Swarming Spark applicationsDockerCon EU 2015: Zoe: Swarming Spark applications
DockerCon EU 2015: Zoe: Swarming Spark applicationsDocker, Inc.
 
NLUUG print conference May 26 2016
NLUUG print conference May 26 2016NLUUG print conference May 26 2016
NLUUG print conference May 26 2016Igmar Palsenberg
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Peter Leschev
 
Kubernetes and elixir
Kubernetes and elixirKubernetes and elixir
Kubernetes and elixirJeffrey Chan
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"CloudBees
 
Kubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformKubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformLivePerson
 
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...Docker, Inc.
 
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltStack
 
DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker Docker, Inc.
 
Best Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical JenkinsBest Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical Jenkinsmrooney7828
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersCloudBees
 
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?Future Processing
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSBamdad Dashtban
 

What's hot (20)

How Nuxeo uses the open-source continuous integration server Jenkins
How Nuxeo uses the open-source continuous integration server JenkinsHow Nuxeo uses the open-source continuous integration server Jenkins
How Nuxeo uses the open-source continuous integration server Jenkins
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
 
Webinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at KitchensurfingWebinar: Continuous Deployment with MongoDB at Kitchensurfing
Webinar: Continuous Deployment with MongoDB at Kitchensurfing
 
DevOps for Scala 2.0
DevOps for Scala 2.0DevOps for Scala 2.0
DevOps for Scala 2.0
 
Getting out of the Job Jungle with Jenkins
Getting out of the Job Jungle with JenkinsGetting out of the Job Jungle with Jenkins
Getting out of the Job Jungle with Jenkins
 
DockerCon EU 2015: Zoe: Swarming Spark applications
DockerCon EU 2015: Zoe: Swarming Spark applicationsDockerCon EU 2015: Zoe: Swarming Spark applications
DockerCon EU 2015: Zoe: Swarming Spark applications
 
NLUUG print conference May 26 2016
NLUUG print conference May 26 2016NLUUG print conference May 26 2016
NLUUG print conference May 26 2016
 
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
Puppet Camp Sydney Feb 2014 - A Build Engineering Team’s Journey of Infrastru...
 
Kubernetes and elixir
Kubernetes and elixirKubernetes and elixir
Kubernetes and elixir
 
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
JUC Europe 2015: Bringing CD at Cloud-Scale with Jenkins, Docker and "Tiger"
 
Kubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platformKubernetes your tests! automation with docker on google cloud platform
Kubernetes your tests! automation with docker on google cloud platform
 
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...
DockerCon SF 2015: Using Docker to Keep Houses Warm: Highly Distributed Micro...
 
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOpsSaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
SaltConf14 - Justin Carmony, Deseret Digital Media - Teaching Devs About DevOps
 
DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker DockerCon SF 2015: Cultural Change using Docker
DockerCon SF 2015: Cultural Change using Docker
 
Best Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical JenkinsBest Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical Jenkins
 
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major RetailersJUC Europe 2015: Enabling Continuous Delivery for Major Retailers
JUC Europe 2015: Enabling Continuous Delivery for Major Retailers
 
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
 
Dockercon EU 2015
Dockercon EU 2015Dockercon EU 2015
Dockercon EU 2015
 
JustLetMeCode-Final
JustLetMeCode-FinalJustLetMeCode-Final
JustLetMeCode-Final
 
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWSAutomated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
Automated Deployment Pipeline using Jenkins, Puppet, Mcollective and AWS
 

Similar to Implementing a Layer Cake Model for Continuous Integration

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Peter Leschev
 
Build in continuous integration, delivery and deploy
Build in continuous integration, delivery and deployBuild in continuous integration, delivery and deploy
Build in continuous integration, delivery and deployPau López
 
Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesAtlassian
 
Working on a Skyscraper in the Early Years of the XX Century
Working on a Skyscraper in the Early Years of the XX CenturyWorking on a Skyscraper in the Early Years of the XX Century
Working on a Skyscraper in the Early Years of the XX CenturyMiguel Ferreira
 
Tech trends 2018 2019
Tech trends 2018 2019Tech trends 2018 2019
Tech trends 2018 2019Johan Norm
 
Where We're Headed and Where NSX Fits In
Where We're Headed and Where NSX Fits InWhere We're Headed and Where NSX Fits In
Where We're Headed and Where NSX Fits InScott Lowe
 
KubeCon 2019 Recap (Parts 1-3)
KubeCon 2019 Recap (Parts 1-3)KubeCon 2019 Recap (Parts 1-3)
KubeCon 2019 Recap (Parts 1-3)Ford Prior
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesLuke Marsden
 
Building Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with DockerBuilding Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with DockerLaura Frank Tacho
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2Docker, Inc.
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Stuart Charlton
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Weaveworks
 

Similar to Implementing a Layer Cake Model for Continuous Integration (20)

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
 
Build in continuous integration, delivery and deploy
Build in continuous integration, delivery and deployBuild in continuous integration, delivery and deploy
Build in continuous integration, delivery and deploy
 
Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket Pipelines
 
Working on a Skyscraper in the Early Years of the XX Century
Working on a Skyscraper in the Early Years of the XX CenturyWorking on a Skyscraper in the Early Years of the XX Century
Working on a Skyscraper in the Early Years of the XX Century
 
Stackato v3
Stackato v3Stackato v3
Stackato v3
 
Tech trends 2018 2019
Tech trends 2018 2019Tech trends 2018 2019
Tech trends 2018 2019
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Where We're Headed and Where NSX Fits In
Where We're Headed and Where NSX Fits InWhere We're Headed and Where NSX Fits In
Where We're Headed and Where NSX Fits In
 
Stackato v5
Stackato v5Stackato v5
Stackato v5
 
KubeCon 2019 Recap (Parts 1-3)
KubeCon 2019 Recap (Parts 1-3)KubeCon 2019 Recap (Parts 1-3)
KubeCon 2019 Recap (Parts 1-3)
 
Into The Box 2023 Keynote Day 1
Into The Box 2023 Keynote Day 1Into The Box 2023 Keynote Day 1
Into The Box 2023 Keynote Day 1
 
Stackato v4
Stackato v4Stackato v4
Stackato v4
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Continuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with KubernetesContinuous Delivery the hard way with Kubernetes
Continuous Delivery the hard way with Kubernetes
 
Building Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with DockerBuilding Efficient Parallel Testing Platforms with Docker
Building Efficient Parallel Testing Platforms with Docker
 
DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2DockerCon 15 Keynote - Day 2
DockerCon 15 Keynote - Day 2
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 
Stackato v6
Stackato v6Stackato v6
Stackato v6
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes Continuous Delivery the Hard Way with Kubernetes
Continuous Delivery the Hard Way with Kubernetes
 

Recently uploaded

DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
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 ApplicationsAlberto González Trastoy
 
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.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
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 WorkerThousandEyes
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Recently uploaded (20)

Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
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
 
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
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
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
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

Implementing a Layer Cake Model for Continuous Integration

  • 1. PUTTING CAKE INTO YOUR CI M A R K B A K E R T E C H N I C A L D I R E C TO R , E A @ m a r k l t b a k e r
  • 2. ABOUT ME I MAKE GAMES FOR 20+YEARS LAST 10+YEARS, HELPING OTHERS MAKE BETTER GAMES TOOLS, AUTOMATION, CI DEVOPS FOR GAMES @markltbaker
  • 3. WHY DO WE NEED CAKE ANYWAY? • CI is complex • Simplify it into different concerns • Compare different CI systems • Suggest design improvements @markltbaker
  • 4. THE CAKE IS NOT A LIE B U T A L S O, I T I S A M E N TA L M O D E L . S O R RY. Rainbow Layer Cake by Tim Ebbs licensed under CC-BY-NC-ND 2.0 @markltbaker
  • 5. LAYERS ARE NOT NEW • OSI networking model • Each layer is a separate concern • Layers only interact with neighbors OSI Network Model from tech-faq.com@markltbaker Rainbow Layer Cake by Tim Ebbs licensed under CC-BY-NC-ND 2.0
  • 7. HARDWARE • CPU, RAM and storage resources • Could be physical hardware or virtual “hardware” • Example of compatibility between different implementations of a layer This Photo by lonewolf6738 is licensed under CC0 @markltbaker
  • 8. ENVIRONMENT • Software used to execute the CI job. • Operating System • Compiler, build tools, libraries, SDKs • Agent communication/other services needed • Typically the same Environment can be used for multiple similar CI jobs This Photo by DAVID ILIFF is licensed under CC BY-SA @markltbaker
  • 9. EXECUTION • Controls execution on a single machine – e.g. `maven test` • Simple scripting language could be used – IDE is useful for local development "stacked rocks" by Neil Howard is licensed under CC BY-NC 2.0 @markltbaker
  • 10. ORCHESTRATION • Splits and combines work between multiple machines • Vital for large pipelines • Often in parallel • Describe dependencies between Executions – Including outputs / inputs "23 University of London Symphony Orchestra c 1968" by Paul Ealing 2011 is licensed under CC BY-NC-SA 2.0 @markltbaker
  • 11. ALLOCATION • Which SCM branch the CI operates on • What causes a CI job to start – Which git hash / changelist • A.k.a “Trigger” layer "Patch panels, wires and switches" by Craig A Rodway is licensed under CC BY-NC-ND 2.0 @markltbaker
  • 12. META • Which CI server / instance – Seed jobs, JobDSL • Can be multiple in a larger team / company • Less so with “CI as a Service” providers This map of Meta, a department of Colombia, is from Wikipedia and is licensed under CC BY-SA @markltbaker
  • 13. Meta Distribute work between instances / sites Allocation Assigns a CI flow to a stream. Determines when CI flows start Orchestration Distributes work between machines and defines input/output dependencies Execution Executes work on a single machine Environment Operating System + installed tools needed Hardware CPU, Disk, RAM @markltbaker
  • 14. Meta Distribute work between instances / sites Allocation Assigns a CI flow to a stream. Determines when CI flows start Orchestration Distributes work between machines and defines input/output dependencies Execution Executes work on a single machine Environment Operating System + installed tools needed Hardware CPU, Disk, RAM @markltbaker
  • 15. HOW DOES THIS HELP? • We had put a lot of logic into Jenkins Groovy Build Flow implementation • Slow to work with, hard to validate changes @markltbaker
  • 16. TOO MUCH COMPLEXITY • We had put a lot of logic into Jenkins Groovy Build Flow implementation • Slow to work with, hard to validate changes • Combined both Orchestration and Execution layers • So… @markltbaker
  • 17. SPLIT INTO LAYERS • Split out into simpler Groovy Orchestration and Python Execution layers • Changes to CI more localised @markltbaker
  • 18. EXECUTION LAYER IN PYTHON • Split out into simpler Groovy Orchestration and Python Execution layers • Changes to CI more localised • Easier to develop, understand, validate, debug locally • Much happier team! @markltbaker
  • 19. WHAT'S THE FUTURE OF LAYER CAKE? • Blog post with more details • Using Layer Cake to compare different CI systems • Using Layer Cake to refine our own designs for “Game CI as a Service” ”Rainbow Layer Cake with mallow icing” by Strawbyb licensed under CC-BY-NC-ND 2.0 @markltbaker
  • 20. ALL FEEDBACK WELCOME! • Read the blog post • What do you think of the Layer Cake? • @markltbaker ”Rainbow Layer Cake with mallow icing” by Strawbyb licensed under CC-BY-NC-ND 2.0 @markltbaker THANK YOU