SlideShare uma empresa Scribd logo
1 de 31
Puppet at Demonware

      Ruaidhrí Power
 ruaidhri@demonware.net
Overview

    History of Demonware and our growth

    What do we do?

    Early Puppet approaches

    Current state

    New improvements

    The future

    Questions
Foundation

    Original founders (~2003)
    −   Seán Blanchfield
        
            PhD student in Distributed Systems group in CS dept in
            Trinity College Dublin
        
            DSG previously spun out Iona (CORBA)
        
            TCD CS dept spun out Havok (games physics)
        
            Seán was studying Grid P2P topologies
    −   Dylan Collins
        
            Business graduate, also TCD

    Both were hooked on Counterstrike and
    Quake
Startup

    Started hosting lobby servers in 2005

    By 2007, lots of customers: Activision, Ubisoft,
    Codemasters, THQ

    Acquired by Activision in May

    Some big games
    −   Splinter Cell Double Agent
    −   Saints Row
    −   Worms Open Warfare
    −   Colin McRae DiRT
    −   Enemy Territory Quake Wars
Startup

    But no monster blockbuster

    20,000 concurrent users was a big title

    Still a tiny company

    11 devs, 3 ops, 3 managers

    Acquired by Activision (now Activision-
    Blizzard)
Products

    Bitdemon
    −   Cross platform
    −   Game friendly SDK for P2P communications (no
        server side components)
    −   Minimal memory allocation, non blocking etc.
    −   Designed to be called in a game loop
    −   Had higher level libraries to support client server
        and peer to peer games
    −   Origin of “bd” prefix.
What do we do?

    The full online infrastructure for all Activision
    games
      –   Lobby services:
            •   Matchmaking, Leaderboards, Stats storage,
                Messaging, Friends/Teams, Anti cheat
            •   Via XBox Live Service Platform (XLSP) →
                Windows boxes
      –   Webservice access to our services
            •   Elite, elite.callofduty.com
            •   Mobile
Games

    Call of Duty
    −   Call of Duty 4: Modern Warfare (2007)
    −   Call of Duty: World at War (2008)
    −   Call of Duty: Modern Warfare 2 (2009)
    −   Call of Duty: Black Ops (2010)
    −   Call of Duty: Modern Warfare 3 (2011)
    −   →Call of Duty: Black Ops 2 (2012)
Games

    Guitar Hero

    Spyro

    Blur

    DJ Hero

    James Bond – GoldenEye and Quantum of
    Solace

    Transformers: WFC

    Singularity

    90+ games in total
Demonware in numbers

    Our services are used by 280+ million gamers

    We support over 2.4 million+ concurrent online gamers

    Demonware software has shipped in 90+ games

    We serve 300,000 requests per second at peak

    We have an average query response time of < .01 second

    We collect 500,000+ metrics every minute

    Our services respond to 100 billion+ API calls per month
In the beginning (~2007)

    Tech with Ubuntu DVD
    −   lots of notes on wiki
    −   compiling from source; “ask Seán/Tilman”

    Standard image with basics done
    −   hard drive removed and imaged
    −   frozen at point in time
    −   hard to update
Fun times

    New accounts by hand everywhere

    Network setup over the network
    −   and shorewall fun

    Changing /etc/hosts made sudo unhappy

    Reboot and cross fingers

    Mail remote hands in shame
Cobbler

    Provisioning server
    −   Written in Python
    −   delivers network installs via PXE
    −   integrated DHCP server
    −   also supports Windows and virtualized hardware
        such as KVM and VMWare servers

    Install Puppet
2009 Architecture

    Fledgling Puppet deployment

    ENC script connecting to MySQL inventory
    database with IPs and list of Puppet classes

    With great power comes great responsibility
    −   UPDATE without WHERE clause
    −   “I'm such a dummy, I can't spell --i-am-a-dummy
        properly” — anon.
2009 Problems

    Puppet class proliferation

    No conditionals or service/host-based
    conditionals in code

    Passwords in code!

    Use Puppet to copy over a shell script ☹
    −   MySQL users via shell script
    −   Change MySQL root password; no more puppet
        changes

    Machine inventory in spreadsheet

    noop
noop

    Tells transactional layer to not make any
    changes
    −   logs them instead

    All production machines ran in noop mode

    Machines in setup did not

    Trade off between automation and not making
    changes accidentally

    Run puppet client from command line or just
    make changes and log messages go away
noop

    noop saved us downtime
    −   Turned what would have been complete downtime
        on GH5 and MW2 into a problem with wsproxy
        and contingency only
    −   Political necessity at the time

    In the process of removing it now that Puppet
    has proven itself
Puppet gains traction

    Servers per sysadmin

    More in-house expertise

    Base system install for dev

    Full production install

    Server rebuild
      –   Faster than debugging subtly broken system
2010 rewrite

    Move from Ubuntu to CentOS

    Much improved from previous version
    −   Custom types
    −   Proper dependencies
    −   Password lookup function
Load balancing

    Standard Webrick

    Apache and Mongrel

    Now moved to Passenger
Custom types

    MySQL users
    −   users
    −   passwords
    −   grants

    MySQL databases

    Generic MySQL module for use with multiple
    services

    sysctls
Custom functions

    Password lookup
    −   $auth_database_password = 
        password("mysql_auth_database", $service)
    −   Passwords configured locally per Puppetmaster,
        outside version control
    −   Allows sharing of modules without sharing secrets
Devzone integration

    Internal Django app

    Game developer interface to Demonware

    Internal service configuration interface
    −   double sign off of changes

    Inventory database
    −   servers
    −   Interfaces – IPs, netmasks, default routes
    −   clusters / subclusters
    −   Puppet modules!
ENC script

    Python script which connected to our custom
    inventory database (Django app)

    Makes Devzone API call for classes, network,
    subcluster, etc.

    Simple conditionals to add extra configuration
    to output

    Disadvantages
    −   Need SSH and root access to update
    −   Brittle and no way to avoid simultaneous update
ENC output
classes:
- mmp-db
- mysql-backup
- demonware-default
parameters:
 backup_filer: tlana04
 service: PROD_COD7_360
bdPuppetConfig

    Python XMLRPC server (bdPuppetConfigd)

    Simple client (bdpupc)

    bdconfig as a standard for configuring
    Demonware services

    Devzone integration
    −   View how your service is configured
    −   Make updates self-service
    −   Traceability
    −   NOC
Puppet modules

    schema.yaml in the root of each module
    defines available variables

    bdconfig variable types
    −   host
    −   ip
    −   hostport
    −   string
    −   boolean
    −   etc.

    Versioned per puppet branch
Gerrit

    git code review tool

    http://code.google.com/p/gerrit/

    Clone from standard git repository (we use
    gitolite and cgit)

    Push to Gerrit and have change reviewed and
    confirmed

    Post-commit hooks distribute to the relevant
    datacentres (per git branch)
Future for Demonware

    CoD n+1
    −   Elite

    Bungie

    Mobile

    CoD online (China)

    Next-gen consoles
We're hiring!

www.demonware.net/jobs/
Questions




            ?

Mais conteúdo relacionado

Mais procurados

Docker and Puppet — Puppet Camp L.A. — SCALE12X
Docker and Puppet — Puppet Camp L.A. — SCALE12XDocker and Puppet — Puppet Camp L.A. — SCALE12X
Docker and Puppet — Puppet Camp L.A. — SCALE12XJérôme Petazzoni
 
Docker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XDocker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XJérôme Petazzoni
 
Docker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing MeetupDocker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing MeetupJérôme Petazzoni
 
Docker and DevOps --- new IT culture
Docker and DevOps --- new IT cultureDocker and DevOps --- new IT culture
Docker and DevOps --- new IT cultureTerry Chen
 
Docker Continuous Delivery Workshop
Docker Continuous Delivery WorkshopDocker Continuous Delivery Workshop
Docker Continuous Delivery WorkshopJirayut Nimsaeng
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutesLarry Cai
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Jérôme Petazzoni
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Nicolas Poggi
 
Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Jérôme Petazzoni
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing dockerSascha Brinkmann
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJirayut Nimsaeng
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in developmentAdam Culp
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsAll Things Open
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12dotCloud
 
Pro Puppet
Pro PuppetPro Puppet
Pro Puppetdsadas
 
Vagrant vs Docker
Vagrant vs DockerVagrant vs Docker
Vagrant vs Dockerjchase50
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsMicael Gallego
 
Continuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleContinuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleJulia Mateo
 

Mais procurados (20)

Docker and Puppet — Puppet Camp L.A. — SCALE12X
Docker and Puppet — Puppet Camp L.A. — SCALE12XDocker and Puppet — Puppet Camp L.A. — SCALE12X
Docker and Puppet — Puppet Camp L.A. — SCALE12X
 
Docker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12XDocker and Containers for Development and Deployment — SCALE12X
Docker and Containers for Development and Deployment — SCALE12X
 
Docker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing MeetupDocker Tips And Tricks at the Docker Beijing Meetup
Docker Tips And Tricks at the Docker Beijing Meetup
 
Docker and DevOps --- new IT culture
Docker and DevOps --- new IT cultureDocker and DevOps --- new IT culture
Docker and DevOps --- new IT culture
 
Docker Continuous Delivery Workshop
Docker Continuous Delivery WorkshopDocker Continuous Delivery Workshop
Docker Continuous Delivery Workshop
 
Learn docker in 90 minutes
Learn docker in 90 minutesLearn docker in 90 minutes
Learn docker in 90 minutes
 
Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015Containers: from development to production at DevNation 2015
Containers: from development to production at DevNation 2015
 
Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]Vagrant + Docker provider [+Puppet]
Vagrant + Docker provider [+Puppet]
 
Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014Scale Big With Docker — Moboom 2014
Scale Big With Docker — Moboom 2014
 
Locally it worked! virtualizing docker
Locally it worked! virtualizing dockerLocally it worked! virtualizing docker
Locally it worked! virtualizing docker
 
Joomla Continuous Delivery with Docker
Joomla Continuous Delivery with DockerJoomla Continuous Delivery with Docker
Joomla Continuous Delivery with Docker
 
Puppet and Vagrant in development
Puppet and Vagrant in developmentPuppet and Vagrant in development
Puppet and Vagrant in development
 
Jenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with JenkinsJenkins 101: Continuos Integration with Jenkins
Jenkins 101: Continuos Integration with Jenkins
 
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
Docker Presentation at the OpenStack Austin Meetup | 2013-09-12
 
Pro Puppet
Pro PuppetPro Puppet
Pro Puppet
 
Vagrant vs Docker
Vagrant vs DockerVagrant vs Docker
Vagrant vs Docker
 
Using Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and JenkinsUsing Docker to build and test in your laptop and Jenkins
Using Docker to build and test in your laptop and Jenkins
 
Docker zero
Docker zeroDocker zero
Docker zero
 
Continuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscaleContinuous delivery with jenkins, docker and exoscale
Continuous delivery with jenkins, docker and exoscale
 
JOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to ProductionJOSA TechTalk: Taking Docker to Production
JOSA TechTalk: Taking Docker to Production
 

Semelhante a Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12

[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architectureOpenStack Korea Community
 
Immutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkitImmutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkit어형 이
 
DockerCon 16 General Session Day 1
DockerCon 16 General Session Day 1DockerCon 16 General Session Day 1
DockerCon 16 General Session Day 1Docker, Inc.
 
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdfYogeshwaran R
 
Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0guest72e8c1
 
Immutable Kubernetes with Digital Rebar Provision
Immutable Kubernetes with Digital Rebar ProvisionImmutable Kubernetes with Digital Rebar Provision
Immutable Kubernetes with Digital Rebar ProvisionRackN
 
Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Fwdays
 
LOAD BALANCING OF APPLICATIONS USING XEN HYPERVISOR
LOAD BALANCING OF APPLICATIONS  USING XEN HYPERVISORLOAD BALANCING OF APPLICATIONS  USING XEN HYPERVISOR
LOAD BALANCING OF APPLICATIONS USING XEN HYPERVISORVanika Kapoor
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDocker, Inc.
 
Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015Edwin Beekman
 
DeltaV Development Systems in a Virtualized Environment
DeltaV Development Systems in a Virtualized EnvironmentDeltaV Development Systems in a Virtualized Environment
DeltaV Development Systems in a Virtualized EnvironmentEmerson Exchange
 
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsHacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsShakacon
 
Oracle Database Appliance RAC in a box Some Strings Attached
Oracle Database Appliance RAC in a box Some Strings AttachedOracle Database Appliance RAC in a box Some Strings Attached
Oracle Database Appliance RAC in a box Some Strings AttachedFuad Arshad
 

Semelhante a Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12 (20)

[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
[OpenInfra Days Korea 2018] Day 2 - E4 - 딥다이브: immutable Kubernetes architecture
 
Immutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkitImmutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkit
 
DockerCon 16 General Session Day 1
DockerCon 16 General Session Day 1DockerCon 16 General Session Day 1
DockerCon 16 General Session Day 1
 
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
ITCamp 2013 - Tudor Damian - Running Linux on Microsoft Private and Public Cl...
 
Xen revisited
Xen revisitedXen revisited
Xen revisited
 
Docker interview Questions-3.pdf
Docker interview Questions-3.pdfDocker interview Questions-3.pdf
Docker interview Questions-3.pdf
 
Cont0519
Cont0519Cont0519
Cont0519
 
RMLL / LSM 2009
RMLL / LSM 2009RMLL / LSM 2009
RMLL / LSM 2009
 
Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0Rmll Virtualization As Is Tool 20090707 V1.0
Rmll Virtualization As Is Tool 20090707 V1.0
 
Immutable Kubernetes with Digital Rebar Provision
Immutable Kubernetes with Digital Rebar ProvisionImmutable Kubernetes with Digital Rebar Provision
Immutable Kubernetes with Digital Rebar Provision
 
Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...Anton Moldovan "Building an efficient replication system for thousands of ter...
Anton Moldovan "Building an efficient replication system for thousands of ter...
 
A Xen Case Study
A Xen Case StudyA Xen Case Study
A Xen Case Study
 
LOAD BALANCING OF APPLICATIONS USING XEN HYPERVISOR
LOAD BALANCING OF APPLICATIONS  USING XEN HYPERVISORLOAD BALANCING OF APPLICATIONS  USING XEN HYPERVISOR
LOAD BALANCING OF APPLICATIONS USING XEN HYPERVISOR
 
Medusa Project
Medusa ProjectMedusa Project
Medusa Project
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
 
Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015Chef arista devops days a'dam 2015
Chef arista devops days a'dam 2015
 
DeltaV Development Systems in a Virtualized Environment
DeltaV Development Systems in a Virtualized EnvironmentDeltaV Development Systems in a Virtualized Environment
DeltaV Development Systems in a Virtualized Environment
 
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan BalazsHacking Highly Secured Enterprise Environments by Zoltan Balazs
Hacking Highly Secured Enterprise Environments by Zoltan Balazs
 
Oracle Database Appliance RAC in a box Some Strings Attached
Oracle Database Appliance RAC in a box Some Strings AttachedOracle Database Appliance RAC in a box Some Strings Attached
Oracle Database Appliance RAC in a box Some Strings Attached
 
Cobbler, Func and Puppet: Tools for Large Scale Environments
Cobbler, Func and Puppet: Tools for Large Scale EnvironmentsCobbler, Func and Puppet: Tools for Large Scale Environments
Cobbler, Func and Puppet: Tools for Large Scale Environments
 

Mais de Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

Mais de Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Último

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 

Último (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 

Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12

  • 1. Puppet at Demonware Ruaidhrí Power ruaidhri@demonware.net
  • 2. Overview  History of Demonware and our growth  What do we do?  Early Puppet approaches  Current state  New improvements  The future  Questions
  • 3. Foundation  Original founders (~2003) − Seán Blanchfield  PhD student in Distributed Systems group in CS dept in Trinity College Dublin  DSG previously spun out Iona (CORBA)  TCD CS dept spun out Havok (games physics)  Seán was studying Grid P2P topologies − Dylan Collins  Business graduate, also TCD  Both were hooked on Counterstrike and Quake
  • 4. Startup  Started hosting lobby servers in 2005  By 2007, lots of customers: Activision, Ubisoft, Codemasters, THQ  Acquired by Activision in May  Some big games − Splinter Cell Double Agent − Saints Row − Worms Open Warfare − Colin McRae DiRT − Enemy Territory Quake Wars
  • 5. Startup  But no monster blockbuster  20,000 concurrent users was a big title  Still a tiny company  11 devs, 3 ops, 3 managers  Acquired by Activision (now Activision- Blizzard)
  • 6. Products  Bitdemon − Cross platform − Game friendly SDK for P2P communications (no server side components) − Minimal memory allocation, non blocking etc. − Designed to be called in a game loop − Had higher level libraries to support client server and peer to peer games − Origin of “bd” prefix.
  • 7. What do we do?  The full online infrastructure for all Activision games – Lobby services: • Matchmaking, Leaderboards, Stats storage, Messaging, Friends/Teams, Anti cheat • Via XBox Live Service Platform (XLSP) → Windows boxes – Webservice access to our services • Elite, elite.callofduty.com • Mobile
  • 8. Games  Call of Duty − Call of Duty 4: Modern Warfare (2007) − Call of Duty: World at War (2008) − Call of Duty: Modern Warfare 2 (2009) − Call of Duty: Black Ops (2010) − Call of Duty: Modern Warfare 3 (2011) − →Call of Duty: Black Ops 2 (2012)
  • 9. Games  Guitar Hero  Spyro  Blur  DJ Hero  James Bond – GoldenEye and Quantum of Solace  Transformers: WFC  Singularity  90+ games in total
  • 10. Demonware in numbers  Our services are used by 280+ million gamers  We support over 2.4 million+ concurrent online gamers  Demonware software has shipped in 90+ games  We serve 300,000 requests per second at peak  We have an average query response time of < .01 second  We collect 500,000+ metrics every minute  Our services respond to 100 billion+ API calls per month
  • 11. In the beginning (~2007)  Tech with Ubuntu DVD − lots of notes on wiki − compiling from source; “ask Seán/Tilman”  Standard image with basics done − hard drive removed and imaged − frozen at point in time − hard to update
  • 12. Fun times  New accounts by hand everywhere  Network setup over the network − and shorewall fun  Changing /etc/hosts made sudo unhappy  Reboot and cross fingers  Mail remote hands in shame
  • 13. Cobbler  Provisioning server − Written in Python − delivers network installs via PXE − integrated DHCP server − also supports Windows and virtualized hardware such as KVM and VMWare servers  Install Puppet
  • 14. 2009 Architecture  Fledgling Puppet deployment  ENC script connecting to MySQL inventory database with IPs and list of Puppet classes  With great power comes great responsibility − UPDATE without WHERE clause − “I'm such a dummy, I can't spell --i-am-a-dummy properly” — anon.
  • 15. 2009 Problems  Puppet class proliferation  No conditionals or service/host-based conditionals in code  Passwords in code!  Use Puppet to copy over a shell script ☹ − MySQL users via shell script − Change MySQL root password; no more puppet changes  Machine inventory in spreadsheet  noop
  • 16. noop  Tells transactional layer to not make any changes − logs them instead  All production machines ran in noop mode  Machines in setup did not  Trade off between automation and not making changes accidentally  Run puppet client from command line or just make changes and log messages go away
  • 17. noop  noop saved us downtime − Turned what would have been complete downtime on GH5 and MW2 into a problem with wsproxy and contingency only − Political necessity at the time  In the process of removing it now that Puppet has proven itself
  • 18. Puppet gains traction  Servers per sysadmin  More in-house expertise  Base system install for dev  Full production install  Server rebuild – Faster than debugging subtly broken system
  • 19. 2010 rewrite  Move from Ubuntu to CentOS  Much improved from previous version − Custom types − Proper dependencies − Password lookup function
  • 20. Load balancing  Standard Webrick  Apache and Mongrel  Now moved to Passenger
  • 21. Custom types  MySQL users − users − passwords − grants  MySQL databases  Generic MySQL module for use with multiple services  sysctls
  • 22. Custom functions  Password lookup − $auth_database_password =  password("mysql_auth_database", $service) − Passwords configured locally per Puppetmaster, outside version control − Allows sharing of modules without sharing secrets
  • 23. Devzone integration  Internal Django app  Game developer interface to Demonware  Internal service configuration interface − double sign off of changes  Inventory database − servers − Interfaces – IPs, netmasks, default routes − clusters / subclusters − Puppet modules!
  • 24. ENC script  Python script which connected to our custom inventory database (Django app)  Makes Devzone API call for classes, network, subcluster, etc.  Simple conditionals to add extra configuration to output  Disadvantages − Need SSH and root access to update − Brittle and no way to avoid simultaneous update
  • 25. ENC output classes: - mmp-db - mysql-backup - demonware-default parameters: backup_filer: tlana04 service: PROD_COD7_360
  • 26. bdPuppetConfig  Python XMLRPC server (bdPuppetConfigd)  Simple client (bdpupc)  bdconfig as a standard for configuring Demonware services  Devzone integration − View how your service is configured − Make updates self-service − Traceability − NOC
  • 27. Puppet modules  schema.yaml in the root of each module defines available variables  bdconfig variable types − host − ip − hostport − string − boolean − etc.  Versioned per puppet branch
  • 28. Gerrit  git code review tool  http://code.google.com/p/gerrit/  Clone from standard git repository (we use gitolite and cgit)  Push to Gerrit and have change reviewed and confirmed  Post-commit hooks distribute to the relevant datacentres (per git branch)
  • 29. Future for Demonware  CoD n+1 − Elite  Bungie  Mobile  CoD online (China)  Next-gen consoles