SlideShare une entreprise Scribd logo
1  sur  177
Télécharger pour lire hors ligne
Burn Down
 The Silos
  Lindsay Holmwood
DevOps
Case study
Applying with technology
High pro!le
fundraising website
Strong siloisation
Devs + Ops in di"erent companies
100% uptime
3 Concepts
Consistency
Repeatability
Visibility
Consistency
ensuring
 identical
behaviour
within an
environment
or across multiple
  environments
con!guration
management
testing
Puppet
   language
    library
 client/server
package { "apache2":
  ensure => installed
}

service { "apache2":
  enable => true,
  ensure => running
}
class apache2 {
    package { "apache2":
      ensure => installed
    }

    service { "apache2":
      enable => true,
      ensure => running
    }
}
Puppet work#ow
 write   apply   debug
class apache2 {
    package { "apache2":
      ensure => installed
    }

    service { "apache2":
      enable => true,
      ensure => running
    }
}
class apache2 {
    package { "apache2":
      ensure => installed
    }

    service { "apache2":
      enable => true,
      ensure => running,
      require => [ Package["apache2"] ]
    }
}
Complex manifests
Proprietary software
Lots of debugging
VMware snapshots
Multiple
deploy environments
Con!guration drift
“roles”
define app_server($collectd_destination, $logging_destination) {
 server { $fqdn:
    logging_destination => $logging_destination
  }
  include apache2
  include mysql::client
  collectd::client { $fqdn:
    collection_destination => $collectd_destination
  }


    if $environment == "production" {
      include production::only::module
    }
}
node "app-01.stage.charity.com" {
  app_server { $fqdn:
    collectd_destination => "stats-01.stage.charity.com",
    logging_destination => "log-01.stage.charity.com"
  }
}

node "app-01.production.charity.com" {
  app_server { $fqdn:
    collectd_destination => "stats-01.production.charity.com",
    logging_destination => "log-01.production.charity.com"
  }
}
node /app-d+.stage.charity.com/ {
  app_server { $fqdn:
    collectd_destination => "stats-01.stage.charity.com",
    logging_destination => "log-01.stage.charity.com"
  }
}

node /app-d+.production.charity.com/ {
  app_server { $fqdn:
    collectd_destination => "stats-01.production.charity.com",
    logging_destination => "log-01.production.charity.com"
  }
}
30 minute builds
Consistency
Repeatability
Function of
consistency
automate,
 to remove
human error
increase speed
 by shortening
feedback loops
automated
deployments
con!guration
management
Capistrano
Ruby DSL around
SSH-in-a-for-loop
Simple, powerful,
can blow your legs o"
Not a substitute for
  con!guration
  management
railsless-deploy
   http://bit.ly/i56ra9
Removes Rails-ism
Great for PHP
capistrano-multistage
     (part of capistrano-ext)
          http://bit.ly/i2moIp
# config/deploy.rb

set   :user, "deploy"
set   :application, "charity.com"
set   :keep_releases, 10
set   :deploy_to, "/srv/#{application}"

set :stages, %w(uat staging production)
# config/deploy/stage.rb

role :app,    "app-01.stage.charity.com",
              "app-02.stage.charity.com"
role :static, "static-01.stage.charity.com”
# config/deploy/production.rb

role :app,    "app-01.prod.charity.com",
              "app-02.prod.charity.com",
              "app-03.prod.charity.com"
role :static, "static-01.prod.charity.com”
cap staging deploy    # deploy to staging
# test
cap production deploy # deploy to production
Capistrano
bootstrap w/ Puppet
class capistrano::user {

    group { "deploy":
      gid => 499
    }

    user { "deploy":
      uid => 499,
      gid => 499,
      home => "/home/deploy",
      shell => "/bin/bash",
      require => Group["deploy"]
    }

    file { "/home/deploy/.ssh/authorized_keys":
      source => "puppet:///modules/capistrano/authorized_keys",
      mode   => 644,
      owner => "deploy",
      group => "deploy",
      require => [ User["deploy"] ]
    }

}
define capistrano::site {

  include capistrano::user

  file { "/srv/$name":
    ensure => directory,
    owner   => deploy,
    group   => deploy,
    require => [ User["deploy"] ]
  }

  file { "/srv/$name/releases":
    ensure => directory,
    owner   => deploy,
    group   => deploy,
    require => [ File["/srv/$name"] ]
  }

...
...

    file { "/srv/$name/shared/log":
      ensure => directory,
      owner => www-data,
      group => www-data,
    }

    file { "/etc/$name":
      source => "puppet:///modules/capistrano/etc/$name",
      recurse => true,
      mode    => "644",
      owner   => root,
      group   => root
    }

}
define app_server($collectd_destination, $logging_destination) {

    include apache2
    include mysql::client
    capistrano::site { “charity.com”: }

}
Deploying to a new
app server is as easy as:
# config/deploy/production.rb

role :app,    "app-01.prod.charity.com",
              "app-02.prod.charity.com",
              "app-03.prod.charity.com"
role :static, "static-01.prod.charity.com”
# config/deploy/production.rb

role :app,    "app-01.prod.charity.com",
              "app-02.prod.charity.com",
              "app-03.prod.charity.com",
              "app-04.prod.charity.com"
role :static, "static-01.prod.charity.com”
or...
# deploy/production.rb

role :app,    "app-01.prod.charity.com",
              "app-02.prod.charity.com",
              "app-03.prod.charity.com",
              "app-04.prod.charity.com"
role :static, "static-01.prod.charity.com”
# deploy/production.rb

role :app, *(1..4).map do |n|
  "app-%.2d.prod.charity.com" % n
end

role :static, "static-01.prod.charity.com”
git-svn mirror
182MB * 20 == PAIN
remote_cache
bad with svn tags
git-svn + cron
fast clones
 commit access
21st century tech
Repeatability
Visibility
one eye on the
     past
one eye on the
    future
metric collection
code changes
monitoring
reports
metric collection
collectd
lightweight
  statistics
 collection
  daemon
platform for
   collecting
time series data
plugin based
network aware
well de!ned APIs
curl_json
<Plugin curl_json>
 <URL "http://localhost:5984/_stats">
   Instance "httpd"
   <Key "httpd/requests/count">
     Type "http_requests"
   </Key>

    <Key "httpd_status_codes/*/count">
      Type "http_response_codes"
    </Key>
  </URL>
</Plugin>
/metrics
code changes
application
       &

con!g management
Your new best friend
monitoring
sudo mmm_control show                   # blocks under high IO
echo -en “shownquitn” | nc 127.1 9988 # instant
sudo mmm_control show                   # blocks under high IO
echo -en “shownquitn” | nc 127.1 9988 # instant



socket = ::TCPSocket.new("127.0.0.1", 9988)
socket.print("shownquitn")
output = socket.read.split("n")
hosts = output.map do |line|
  parts = line.scan(/nasty regex/).flatten

  { "hostname"            =>   parts[0],
    "address"             =>   parts[1],
    "mode"                =>   parts[2],
    "state"               =>   parts[3],
    "role"                =>   parts[5],
    "role_address"        =>   parts[6] }
end
reports
mk-query-digest
      &

   logrotate
# prerotate

SLOWLOG_FILENAME="/var/log/mysql/mysql-slow.log"
OPTIONS="--report --group-by distill --order-by Query_time:max
--timeline --report-format query_report,profile"
DATE="$(date +%Y-%m-%dT%H:%M:%S%z)"
REPORT_FILENAME="/tmp/$(hostname)-mysql-slow-query-report-$DATE"
mk-query-digest $SLOWLOG_FILENAME $OPTIONS > $REPORT_FILENAME

SUBJECT="MySQL Slow Queries Report for $(hostname) as of $DATE"
RECIPIENTS="developers@charity.com,ops@bulletproof.net"
cat $REPORT_FILENAME | nail -n -E -s "$SUBJECT" "$RECIPIENTS"
Retrospectives
Slave explosion
Background:
Background:
MySQL replication
Background:
MySQL replication
MMM
Background:
MySQL replication
MMM
2 masters + 4 slaves
REPLICATION_FAIL
     on one slave
Down to 3 nodes
Increased cluster load
REPLICATION_DELAY
     on another slave
Down to 2 nodes
Inspection
of REPLICATION_DELAY slave
Swapping like mad
Half the memory allocated
Shutdown,
 upgrade,
   boot
Visibility
metric collection
Consistency
Database connectivity
Soft launch
PHP connection errors
Con!g parses + loads
Add con!g dump url
Visibility
curl_json
Redeploy
...
Typo
2 reviewers
of con!g management
both in ops team
Visibility
code changes
Your new best friend
reviewer diversity
devs should have visibility of ops changes
Data consistency
New release
Database migrations
Release promotion
uat

  stage

production
uat !

  stage

production
uat !

  stage !

production
uat !

  stage !

production "
uat !

  stage !

production "
CREATE TABLE foo
           should have been


CREATE TABLE IF NOT EXIST foo
Consistency
uat

  stage

production
uat

  stage

production
uat

  stage

production
Repeatability
Consistency
ensuring
 identical
behaviour
within an
environment
or across multiple
  environments
Repeatability
Function of
consistency
automate,
 to remove
human error
increase speed
 by shortening
feedback loops
Visibility
one eye on the
     past
one eye on the
    future
Communicate!
Thank you!
Credits:
http://www.#ickr.com/photos/48722974@N07/4682302824/     http://www.#ickr.com/photos/lyza/4144764381/
http://www.#ickr.com/photos/acediscovery/3030548744/     http://www.#ickr.com/photos/matchew/424026531/
http://www.#ickr.com/photos/andrew_wertheimer/5268407700/ http://www.#ickr.com/photos/mrwoodnz/4289893182/
http://www.#ickr.com/photos/azrasta/4528604334/          http://www.#ickr.com/photos/myprofe/4396178084/
http://www.#ickr.com/photos/boliston/2351083198/         http://www.#ickr.com/photos/nnova/4834954885/
http://www.#ickr.com/photos/brianwestcott/1497708345/    http://www.#ickr.com/photos/pjern/2150874047/
http://www.#ickr.com/photos/brunogirin/73014722/         http://www.#ickr.com/photos/rubodewig/5161937181/
http://www.#ickr.com/photos/eole/4500783172/             http://www.#ickr.com/photos/rutty/460520720/
http://www.#ickr.com/photos/jacockshaw/1811056252/       http://www.#ickr.com/photos/sarah_lincoln/4740037328/
http://www.#ickr.com/photos/jenny-pics/2719309611/       http://www.#ickr.com/photos/shindotv/3835365695/
http://www.#ickr.com/photos/ldsykora/2414497811/         http://www.#ickr.com/photos/thalamus/306881919/
http://www.#ickr.com/photos/listed_crime/1342164481/     http://www.#ickr.com/photos/traviscrawford/323366600/
http://www.#ickr.com/photos/localsurfer/369116556/       http://www.#ickr.com/photos/webtreatsetc/5303216304/

Contenu connexe

Tendances

Redis for your boss 2.0
Redis for your boss 2.0Redis for your boss 2.0
Redis for your boss 2.0Elena Kolevska
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With RpmMartin Jackson
 
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...Harmonious Development: Standardizing The Deployment Process via Vagrant and ...
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...Acquia
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceAmazon Web Services
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIDanilo Poccia
 
Terraform 0.9 + good practices
Terraform 0.9 + good practicesTerraform 0.9 + good practices
Terraform 0.9 + good practicesRadek Simko
 
Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Robert Berger
 
A Little Backbone For Your App
A Little Backbone For Your AppA Little Backbone For Your App
A Little Backbone For Your AppLuca Mearelli
 
REST with Eve and Python
REST with Eve and PythonREST with Eve and Python
REST with Eve and PythonPiXeL16
 
Getting Started with Ansible
Getting Started with AnsibleGetting Started with Ansible
Getting Started with Ansibleahamilton55
 
Node js introduction
Node js introductionNode js introduction
Node js introductionAlex Su
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul ConnectBram Vogelaar
 
Ansible inside
Ansible insideAnsible inside
Ansible insideIdeato
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony TechniquesKris Wallsmith
 
Forget the Web
Forget the WebForget the Web
Forget the WebRemy Sharp
 
Terraform Introduction
Terraform IntroductionTerraform Introduction
Terraform Introductionsoniasnowfrog
 

Tendances (20)

Play!ng with scala
Play!ng with scalaPlay!ng with scala
Play!ng with scala
 
Redis for your boss 2.0
Redis for your boss 2.0Redis for your boss 2.0
Redis for your boss 2.0
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
 
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...Harmonious Development: Standardizing The Deployment Process via Vagrant and ...
Harmonious Development: Standardizing The Deployment Process via Vagrant and ...
 
Deep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line InterfaceDeep Dive: AWS Command Line Interface
Deep Dive: AWS Command Line Interface
 
Redis for your boss
Redis for your bossRedis for your boss
Redis for your boss
 
Masterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLIMasterclass Advanced Usage of the AWS CLI
Masterclass Advanced Usage of the AWS CLI
 
CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
Terraform 0.9 + good practices
Terraform 0.9 + good practicesTerraform 0.9 + good practices
Terraform 0.9 + good practices
 
Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2Chef 0.8, Knife and Amazon EC2
Chef 0.8, Knife and Amazon EC2
 
A Little Backbone For Your App
A Little Backbone For Your AppA Little Backbone For Your App
A Little Backbone For Your App
 
REST with Eve and Python
REST with Eve and PythonREST with Eve and Python
REST with Eve and Python
 
FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
 
Getting Started with Ansible
Getting Started with AnsibleGetting Started with Ansible
Getting Started with Ansible
 
Node js introduction
Node js introductionNode js introduction
Node js introduction
 
Observability with Consul Connect
Observability with Consul ConnectObservability with Consul Connect
Observability with Consul Connect
 
Ansible inside
Ansible insideAnsible inside
Ansible inside
 
Advanced symfony Techniques
Advanced symfony TechniquesAdvanced symfony Techniques
Advanced symfony Techniques
 
Forget the Web
Forget the WebForget the Web
Forget the Web
 
Terraform Introduction
Terraform IntroductionTerraform Introduction
Terraform Introduction
 

En vedette

Git for Subversion Users (phpDay 2011)
Git for Subversion Users (phpDay 2011)Git for Subversion Users (phpDay 2011)
Git for Subversion Users (phpDay 2011)Stefan Koopmanschap
 
Controle de Versão GIT
Controle de Versão GITControle de Versão GIT
Controle de Versão GITRafael Izidoro
 
Safe Ways to Teach about Transgression
Safe Ways to Teach about TransgressionSafe Ways to Teach about Transgression
Safe Ways to Teach about TransgressionRenee Hobbs
 
Leadership 2.0 FAPAC May 12, 2009
Leadership 2.0 FAPAC May 12, 2009Leadership 2.0 FAPAC May 12, 2009
Leadership 2.0 FAPAC May 12, 2009Marc Nathan
 
Cultureel Project Cultuurrestaurant
Cultureel Project CultuurrestaurantCultureel Project Cultuurrestaurant
Cultureel Project Cultuurrestaurantculturelestudies
 
TEDxBerlin: Net-work: Why the Future of Passionate Work Needs Your Relations...
TEDxBerlin: Net-work:  Why the Future of Passionate Work Needs Your Relations...TEDxBerlin: Net-work:  Why the Future of Passionate Work Needs Your Relations...
TEDxBerlin: Net-work: Why the Future of Passionate Work Needs Your Relations...Deanna Zandt
 
RememberTheName WebMonday Zürich
RememberTheName WebMonday ZürichRememberTheName WebMonday Zürich
RememberTheName WebMonday ZürichReto Laemmler
 
2013 05-17-cagliari-rt4 come-usare_social_cigagna
2013 05-17-cagliari-rt4 come-usare_social_cigagna2013 05-17-cagliari-rt4 come-usare_social_cigagna
2013 05-17-cagliari-rt4 come-usare_social_cigagnaJservice
 
Data Governance - An Implementation Reality Check
Data Governance - An Implementation Reality CheckData Governance - An Implementation Reality Check
Data Governance - An Implementation Reality CheckJayakumar Rajaretnam
 
Getting started with git svn
Getting started with git svnGetting started with git svn
Getting started with git svnManij Shrestha
 
Using Subversion and Git Together
Using Subversion and Git TogetherUsing Subversion and Git Together
Using Subversion and Git Togethertmatesoftware
 

En vedette (13)

Git for Subversion Users (phpDay 2011)
Git for Subversion Users (phpDay 2011)Git for Subversion Users (phpDay 2011)
Git for Subversion Users (phpDay 2011)
 
Controle de Versão GIT
Controle de Versão GITControle de Versão GIT
Controle de Versão GIT
 
Ppt presentatie 20_mei
Ppt presentatie 20_meiPpt presentatie 20_mei
Ppt presentatie 20_mei
 
Safe Ways to Teach about Transgression
Safe Ways to Teach about TransgressionSafe Ways to Teach about Transgression
Safe Ways to Teach about Transgression
 
Leadership 2.0 FAPAC May 12, 2009
Leadership 2.0 FAPAC May 12, 2009Leadership 2.0 FAPAC May 12, 2009
Leadership 2.0 FAPAC May 12, 2009
 
Cultureel Project Cultuurrestaurant
Cultureel Project CultuurrestaurantCultureel Project Cultuurrestaurant
Cultureel Project Cultuurrestaurant
 
TEDxBerlin: Net-work: Why the Future of Passionate Work Needs Your Relations...
TEDxBerlin: Net-work:  Why the Future of Passionate Work Needs Your Relations...TEDxBerlin: Net-work:  Why the Future of Passionate Work Needs Your Relations...
TEDxBerlin: Net-work: Why the Future of Passionate Work Needs Your Relations...
 
RememberTheName WebMonday Zürich
RememberTheName WebMonday ZürichRememberTheName WebMonday Zürich
RememberTheName WebMonday Zürich
 
2013 05-17-cagliari-rt4 come-usare_social_cigagna
2013 05-17-cagliari-rt4 come-usare_social_cigagna2013 05-17-cagliari-rt4 come-usare_social_cigagna
2013 05-17-cagliari-rt4 come-usare_social_cigagna
 
Data Governance - An Implementation Reality Check
Data Governance - An Implementation Reality CheckData Governance - An Implementation Reality Check
Data Governance - An Implementation Reality Check
 
Getting started with git svn
Getting started with git svnGetting started with git svn
Getting started with git svn
 
Effective Git
Effective GitEffective Git
Effective Git
 
Using Subversion and Git Together
Using Subversion and Git TogetherUsing Subversion and Git Together
Using Subversion and Git Together
 

Similaire à Burn down the silos! Helping dev and ops gel on high availability websites

Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetAchieve Internet
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsMykyta Protsenko
 
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshareRailsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slidesharetomcopeland
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Carlos Sanchez
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Amazon Web Services
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012Carlos Sanchez
 
Web applications with Catalyst
Web applications with CatalystWeb applications with Catalyst
Web applications with Catalystsvilen.ivanov
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppSmartLogic
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierCarlos Sanchez
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
ELK: a log management framework
ELK: a log management frameworkELK: a log management framework
ELK: a log management frameworkGiovanni Bechis
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworksdiego_k
 
Curscatalyst
CurscatalystCurscatalyst
CurscatalystKar Juan
 

Similaire à Burn down the silos! Helping dev and ops gel on high availability websites (20)

Harmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and PuppetHarmonious Development: Via Vagrant and Puppet
Harmonious Development: Via Vagrant and Puppet
 
Infrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and OpsInfrastructure-as-code: bridging the gap between Devs and Ops
Infrastructure-as-code: bridging the gap between Devs and Ops
 
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshareRailsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
 
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
Continuous Delivery with Maven, Puppet and Tomcat - ApacheCon NA 2013
 
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
Zero to Sixty: AWS CloudFormation (DMG201) | AWS re:Invent 2013
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
 
Web applications with Catalyst
Web applications with CatalystWeb applications with Catalyst
Web applications with Catalyst
 
Play vs Rails
Play vs RailsPlay vs Rails
Play vs Rails
 
Practical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails AppPractical Chef and Capistrano for Your Rails App
Practical Chef and Capistrano for Your Rails App
 
Write php deploy everywhere tek11
Write php deploy everywhere   tek11Write php deploy everywhere   tek11
Write php deploy everywhere tek11
 
Continuous Delivery: The Next Frontier
Continuous Delivery: The Next FrontierContinuous Delivery: The Next Frontier
Continuous Delivery: The Next Frontier
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Cooking with Chef
Cooking with ChefCooking with Chef
Cooking with Chef
 
ELK: a log management framework
ELK: a log management frameworkELK: a log management framework
ELK: a log management framework
 
infra-as-code
infra-as-codeinfra-as-code
infra-as-code
 
Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Perl web frameworks
Perl web frameworksPerl web frameworks
Perl web frameworks
 
Curscatalyst
CurscatalystCurscatalyst
Curscatalyst
 
Terraform at Scale
Terraform at ScaleTerraform at Scale
Terraform at Scale
 

Plus de Lindsay Holmwood

Escalating complexity: DevOps learnings from Air France 447
Escalating complexity: DevOps learnings from Air France 447Escalating complexity: DevOps learnings from Air France 447
Escalating complexity: DevOps learnings from Air France 447Lindsay Holmwood
 
AA261: DevOps lessons in collaborative maintenance
AA261: DevOps lessons in collaborative maintenanceAA261: DevOps lessons in collaborative maintenance
AA261: DevOps lessons in collaborative maintenanceLindsay Holmwood
 
Islands: Puppet at Bulletproof Networks
Islands: Puppet at Bulletproof NetworksIslands: Puppet at Bulletproof Networks
Islands: Puppet at Bulletproof NetworksLindsay Holmwood
 
Latency: The Silent Monitoring System Killer
Latency: The Silent Monitoring System KillerLatency: The Silent Monitoring System Killer
Latency: The Silent Monitoring System KillerLindsay Holmwood
 
Rump - making Puppetmaster-less Puppet meaty
Rump - making Puppetmaster-less Puppet meatyRump - making Puppetmaster-less Puppet meaty
Rump - making Puppetmaster-less Puppet meatyLindsay Holmwood
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructureLindsay Holmwood
 
Behaviour Driven Monitoring with cucumber-nagios
Behaviour Driven Monitoring with cucumber-nagiosBehaviour Driven Monitoring with cucumber-nagios
Behaviour Driven Monitoring with cucumber-nagiosLindsay Holmwood
 
Flapjack: rethinking monitoring for the cloud
Flapjack: rethinking monitoring for the cloudFlapjack: rethinking monitoring for the cloud
Flapjack: rethinking monitoring for the cloudLindsay Holmwood
 
Monitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagiosMonitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagiosLindsay Holmwood
 
Your own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyYour own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyLindsay Holmwood
 

Plus de Lindsay Holmwood (12)

Escalating complexity: DevOps learnings from Air France 447
Escalating complexity: DevOps learnings from Air France 447Escalating complexity: DevOps learnings from Air France 447
Escalating complexity: DevOps learnings from Air France 447
 
AA261: DevOps lessons in collaborative maintenance
AA261: DevOps lessons in collaborative maintenanceAA261: DevOps lessons in collaborative maintenance
AA261: DevOps lessons in collaborative maintenance
 
Islands: Puppet at Bulletproof Networks
Islands: Puppet at Bulletproof NetworksIslands: Puppet at Bulletproof Networks
Islands: Puppet at Bulletproof Networks
 
Load testing with Blitz
Load testing with BlitzLoad testing with Blitz
Load testing with Blitz
 
Latency: The Silent Monitoring System Killer
Latency: The Silent Monitoring System KillerLatency: The Silent Monitoring System Killer
Latency: The Silent Monitoring System Killer
 
Rump - making Puppetmaster-less Puppet meaty
Rump - making Puppetmaster-less Puppet meatyRump - making Puppetmaster-less Puppet meaty
Rump - making Puppetmaster-less Puppet meaty
 
Behaviour driven infrastructure
Behaviour driven infrastructureBehaviour driven infrastructure
Behaviour driven infrastructure
 
Behaviour Driven Monitoring with cucumber-nagios
Behaviour Driven Monitoring with cucumber-nagiosBehaviour Driven Monitoring with cucumber-nagios
Behaviour Driven Monitoring with cucumber-nagios
 
Flapjack: rethinking monitoring for the cloud
Flapjack: rethinking monitoring for the cloudFlapjack: rethinking monitoring for the cloud
Flapjack: rethinking monitoring for the cloud
 
Monitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagiosMonitoring web application behaviour with cucumber-nagios
Monitoring web application behaviour with cucumber-nagios
 
Your own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with RubyYour own (little) gem: building an online business with Ruby
Your own (little) gem: building an online business with Ruby
 
Deploying Merb
Deploying MerbDeploying Merb
Deploying Merb
 

Dernier

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Dernier (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Burn down the silos! Helping dev and ops gel on high availability websites